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
推荐文章: