这是我参与「第五届青训营」笔记创作活动的第9天
一. 重点内容
-
微服务架构介绍
-
微服务架构原理及特征
-
核心服务治理功能
二. 知识点介绍
1. 微服务架构
- 单体架构:
-
- 优势:性能最高;冗余小
-
- 劣势:debug困难
- 垂直应用架构:
-
- 优势:业务独立开发维护
-
- 劣势:不同业务存在冗余;每个业务还是单体
- 分布式架构:
-
- 优势:业务无关的独立服务
-
- 劣势:服务模块bug有可能导致全站瘫痪;调用关系复杂;不同服务冗余
- SOA架构(Service Oriented Architecture):
-
- 优势:服务注册
-
- 劣势:整个系统设计是中心化的;需要从上而下设计;重构困难
- 微服务架构:
-
- 优势:开发效率高;业务独立设计;自下而上;故障隔离
-
- 劣势:治理、运维难度高;观测挑战;安全性;分布式系统
-
- 核心要素:
-
-
- 服务治理:服务注册;负载均衡;流量治理...
-
-
-
- 可观测性:日志采集;日志分析;异常报警;链路追踪...
-
-
-
- 安全:身份验证;认证授权;访问令牌;传输加密...
-
2. 微服务架构原理及特征
- 架构:一组具有相同逻辑的运行实体
- 实例:一个服务中,每个运行实体即为一个实例
- 实例进程的关系:没有必然对应关系,可以一对多,反之不亦然
- 集群:服务内部的逻辑划分,也包含多个实例
- 常见的实例承载形式:进程、VM、k8spod
- 有状态/无状态服务:服务的实例是否存储了可持久化的数据,例如磁盘文件
- 流量特征:
-
- 统一网关入口
-
- 内网通信多数采用RPC
-
- 网状调用链路
3. 核心服务治理功能
- 服务发布:让一个服务升级运行新的代码的过程
-
- 难点:服务不可用;服务抖动;服务回滚
-
- 蓝绿部署:分成两部分先后发布,简单稳定但需要两倍资源
-
- 灰度发布(金丝雀发布):先发布少部分实例,逐步增加发布比例;不需要增加资源;回滚难度大,基础设施要求高
- 流量治理:
-
- 流量控制:在微服务架构中,可以从各个维度对端到端的流量在链路上进行精确控制
-
- 控制维度:地区;集群;实例;请求
- 负载均衡(Load Balance):负责分配请求在每个下游实例上的分布
-
- 常见LB策略:Round Robin;Random;Ring Hash...
- 稳定性治理:线上服务难免有问题,与程序正确性无关,例如网络攻击、流量突增、网络故障等
-
- 方式:限流、熔断、过载保护、降级