1.1 涉及的组件、框架介绍
流程图
首先来看一下整体的流程图
请求微服务流程图
在这张图中:
- 反向代理使用的是
traefik
,它的特色是可以动态发现,完美支持docker
,kubernetes
。 - 网关中微服务部分使用的是
go-micro
框架,由于go-micro
的web和路由功能并不能很好地满足现实需求,所以的对外提供HTTP服务的部分使用的是gin
框架。 - 服务部分使用的是
go-micro
框架编写微服务 - 由于使用的是
go-micro
框架,该框架默认使用的是grpc
通讯,grpc
通讯的通讯格式是Protobuf
- go-micro默认的服务发现是通过
mdns
,我们更换为使用etcd
做服务注册中心。当使用Kubernetes
部署时,Kubernetes
将Service
的名称当做域名注册到kube-dns
中,通过Service
的名称就可以访问其提供的服务 - 编排工具会先使用
docker-compose
,最终使用Kubernetes
CI/CD流程图
在这张图中:
- 代码仓库使用的是
gitlab
- 持续集成使用的是
jenkins
- 远程镜像仓库使用的是阿里云的容器镜像服务
jenkins
需要安装的插件有:Localization Chinese(Simplified)
、Publish Over SSH
、Gitlab
、Golang
涉及到的组件、框架及其版本
技术 | 使用 | 版本 |
---|---|---|
语言 | Golang | 1.14.1 |
Web框架(网关) | Gin | v1.6.3 |
通讯格式 | Protobuf | v3.12.1 |
微服务框架 | Go-micro | v2.9.0 |
反向代理 | Traefik | v2.2.1 |
服务注册中心 | Etcd/Kubernetes | v3.3.8/v1.16.5 |
容器 | Docker | v19.03.8 |
编排工具 | Docker-Compose/Kubernetes | v1.25.5/v1.16.5 |
代码仓库 | Gitlab | v13.1.1-ce.0 |
持续集成 | Jenkins | v2.242 |
仓库
对应的相关代码和部署文件,已经传至github,欢迎star。
微服务与部署:github.com/guaosi/go-micro-build
持续交付、集成、部署:github.com/guaosi/go-cicd