微服务容器化开发实战
- 1. 单体建构与微服务架构
- 2. SpringBoot 微服务开发
- 3. 搭建微服务运行环境
- 4. Rancher和Kubernetes离线部署
- 5. 日志采集
- 6. 调用链跟踪
- 7. 熔断器
- 8. 容器化与服务编排
- 9. 系统监控
- 10. 持续集成部署
ISBN: 978-7-121-38292-5
推荐指数: ★★★★★
作者:尹为强
阅读时间: 2021-04-18
页数: 220
本书讲的非常浅显易懂,
而且动手性极强,
一步一步教读者搭建环境使用和注意事项.
非常推荐的一本书,
涵盖了开发运维的整个流程,
适合框架师和想熟悉了解整个产品的生命周期的小伙伴.
1. 单体建构与微服务架构
这里讲的很简单而且也通俗易懂,
如果想深入了解的可以看 《高可用高伸缩微服务架构基于Dubbo、Spring Cloud和Service Mesh》
单体架构的特点是应用程序前后端所有模块的代码都打包成一个文件,一般为.war或者.jar格式.通常运行在Weblogic、Tomcat等应用服务器中。
微服务架构是一种架构模式, 它提倡将单一应用程序划分成一组小的服务, 各个服务之间互相协调、互相配合, 为用户提供最终的价值。
前后端
AKF拆分原则:
- 水平复制、水平扩展,运行实例的增加集群。
- 数据分区,根据地理位置分区管理集群。
- 微服务拆分,基于不同业务拆分。
2. SpringBoot 微服务开发
IntelliJ IDEA创建SpringBoot项目
组件 | 功能 |
Dubbo | 阿里巴巴 RPC框架,面向接口远程方法调用, 只能容错和负载均衡, 服务自动注册发现. |
Eureka | Spring Cloud 服务自动注册发现的注册中心 |
Zuul | Spring Cloud 网关和路由 |
Config Service | Spring Cloud 分布式配置服务 |
Hystrix Dashboard | Spring Cloud 服务熔断监控组件 |
Ribbon | Spring Cloud 客户端负载均衡组件 |
Zipkin | Spring Cloud 调用链追踪组件 |
Sleuth | Spring Cloud 服务跟踪 |
Bus | Spring Cloud 消息总线 |
Stream | Spring Cloud 数据流 |
Task | Spring Cloud 批量任务 |
Turbine | Apache 汇集监控信息 |
3. 搭建微服务运行环境
三种环境:
- 开发环境
dev
- 测试环境
test
- 生产环境
prod
运行的时候使用后面进行切换
nohup java -jar xx.jar --spring.profiles.active=prod &
4. Rancher和Kubernetes离线部署
CentOS7安装Docker最新版本Docker Compose 安装使用教程Docker私有仓库Harbor安装
Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
Rancher1.6中文文档
5. 日志采集
常用的日志采集框架是: ELK
因为Logstash比较重,现在常用Filebeat替代,
所以变成了EFK.
Elasticsearch
是一个搜索和分析引擎。
Logstash
是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。
Kibana
则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
Elastic安装日志采集监控博客
Zabbix也可以监控日志,
可以参考如下博客:
Zabbix采集Java应用程序nohup日志
6. 调用链跟踪
通过全局的traceId将调用链进行串起来,
spanId记录调用父子关系和前后关系,
每个服务会记录parentId和spanId.
Span是调用链跟踪的基本工作单元,标识一次调用.
Trace是一次调用链跟踪过程,由一组形如树形结构的Span组成.
技术实现:
Zipkin组件和Sleuth组件
7. 熔断器
这里介绍的是Spring Cloud Hystrix
特点:
- 熔断机制
- 自我恢复
- 容错性
- 可监控
8. 容器化与服务编排
这里涉及到的是Docker、Kubernets和Rancher
9. 系统监控
监控分为主机监控
和容器监控
主机监控这里实用的Zabbix进行监控
可以参考我之前写的博客
容器监控使用Kubernets监控:
Kube-State Metrics、Promethus、Grafana组件.
Metrics与Node Exporter组件类似,都是数据指标采集,负责从Kubernetes集群中的各节点采集监控数据,然后传给Prometheus组件进行存储。
10. 持续集成部署
常用的持续集成部署(CICD)是基于Jenkins的。
Jenkins安装启动
Linux安装SonarQube检测代码SonarQube检测项目代码
开发人员提交代码到Gitlab,通过配置WebHook通知Jenkins设置的Pipeline流水线进行代码扫描(SonarQube),Maven代码构建、单元测试,然后脚本Build镜像push到私有仓库Harbor上面,然后通知Kubernetes集群拉取私有仓库的镜像进行发布上线。通过Rancher管理Kubernetes,回滚设置等。