本库的目的是学习如何用 go 语言开发微服务.
我们先通过手动的方式一步一步地构建一个微服务,感受开发过程中的痛点.然后,再用微服务框架开发,发现这些痛点是怎样被框架解决,这样有助于我们理解框架为何这样设计,达到知其所以然的目的.
目前微服务框架有两种:
两者各有优势:
- sdk 模式以函数调用的方式使用中间件;
- sidecar 模式以进程间通讯的方式使用中间件;
因此:
- sdk 模式的性能优于 sidecar 模式;
- sidecar 模式的解耦性优于 sdk 模式;
以上介绍的是微服务的实现,微服务的另一个重要方面是设计,这部分内容参考领域驱动设计(DDD).
-
eDocker. 主题应用容器化, docker 是广泛使用的打包应用和依赖的容器.
-
eModule. 主题依赖管理, go module 是 go 标准的依赖管理工具.
-
eYaml. 主题数据序列化, yaml 格式,常用作配置/编排文件.
-
eFlag. 主题命令行参数处理, 使用准库 flag 包.
-
eHttp. 主题 http 服务, 使用 Gin 框架实现.
-
eGrpc. 主题 rpc 服务, 使用 grpc 包.
-
eConf. 主题服务的配置, 一个简单包 conf.
-
eMysql. 主题关系型数据库, 常用的 MySQL.
-
eRedis. 主题缓存数据库, 常用的 Redis.
-
eLog. 主题日志, 常用的 zerolog.
-
eTest. 主题测试, 覆盖各种类型的测试.
-
eApi. 主题 api 管理, 使用 swagger 等工具.
-
eK8s. 主题微服务部署, 使用 K8s 部署一组微服务.
-
eIstio. 主题微服务部署, 使用 Istio 部署一组微服务.
-
eKratos. 主题微服务框架, 使用 Kratos 开发一个微服务.
欢迎提交 bugs 和 feature 报告.