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
手摸手教你从开发到部署(CI/CD)GO微服务系列
关于 LearnKu
推荐文章: