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