Skip to content

gomsx/goms

Repository files navigation

goms

License Language Go Report Card ci

Introduction

本库的目的是学习如何用 go 语言开发微服务.

我们先通过手动的方式一步一步地构建一个微服务,感受开发过程中的痛点.然后,再用微服务框架开发,发现这些痛点是怎样被框架解决,这样有助于我们理解框架为何这样设计,达到知其所以然的目的.

目前微服务框架有两种:

  • 一种以库的形式提供中间件的 sdk 模式,如 Kratos;
  • 一种以进程的形式提供中间件的 sidecar 模式,也叫 service mesh,如 Istio.

两者各有优势:

  • sdk 模式以函数调用的方式使用中间件;
  • sidecar 模式以进程间通讯的方式使用中间件;

因此:

  • sdk 模式的性能优于 sidecar 模式;
  • sidecar 模式的解耦性优于 sdk 模式;

以上介绍的是微服务的实现,微服务的另一个重要方面是设计,这部分内容参考领域驱动设计(DDD).

Repositories

  • eDocker. 主题应用容器化, docker 是广泛使用的打包应用和依赖的容器.

  • eModule. 主题依赖管理, go module 是 go 标准的依赖管理工具.

  • eYaml. 主题数据序列化, yaml 格式,常用作配置/编排文件.

  • eFlag. 主题命令行参数处理, 使用准库 flag 包.

  • eHttp. 主题 http 服务, 使用 Gin 框架.

  • eGrpc. 主题 rpc 服务, 使用 gRPC 框架.

  • eConf. 主题服务的配置, 一个简单的 conf 包.

  • eMysql. 主题关系型数据库, 常用的 MySQL.

  • eRedis. 主题缓存数据库, 常用的 Redis.

  • eTest. 主题测试, 覆盖各种类型的测试.

  • eApi. 主题 API 管理, 使用 swagger 等工具.

  • eK8s. 主题微服务部署, 使用 K8s 部署一组微服务.

  • eIstio. 主题微服务治理, 使用 Istio 治理一组微服务.

  • eKratos. 主题微服务框架, 使用 Kratos 开发一个微服务.

Issue management

欢迎提交 bugs 和 feature 报告.