这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记.
微服务架构介绍
系统架构演变历史
- 单体架构
- 优点:性能最高;冗余小
- 缺点:debug困难;模块相互影响;难以分工合作开发
- 垂直应用架构
- 优点:业务独立开发维护
- 缺点:不同业务存在冗余;每个业务还是单体
- 分布式架构
- 优点:可以抽出与业务无关的独立服务
- 缺点:服务模块bug导致全站瘫痪;调用关系复杂;不同服务冗余
- SOA结构(Service Oriented Architecture)
- 优点:服务注册功能
- 缺点:整个系统设计是中心化的;需要自上而下设计;重构困难
- 微服务架构
- 优点:高效;业务独立设计;自上而下;故障隔离
- 缺点:治理、运维难度大;观测挑战;安全问题;分布式系统复杂性
微服务架构概览
微服务架构核心要素
微服务架构原理及特征
基本概念
服务(service): 一组具有相同逻辑的运行实体。
实例( instance): 一个服务中,每个运行实体即为一个实例。
实例与进程的关系: 实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程(反之不常见)。
集群(cluster): 通常指服务内部的逻辑划分,包含多个实例。
常见的实例承载形式: 进程、VM、k8s pod……
有状态/无状态服务: 服务的实例是否存储了可持久化的数据(例如磁盘文件)。
服务间通信: 对单体服务来说,不同模块通信只是简单的函数调用。对于微服务,服务间通信意味着网络传输
服务上下线过程
- 新增一个统一的服务注册中心,用于存储服务名到服务实例之间的映射关系
- 旧服务实例下线前,从服务注册中心删除该实例,下线流量
- 新服务实例上线后,在服务注册中心注册该实例,上线流量 不能影响正常服务
流量特征
- 统一网关入口
- 外网通信多数采用 HTTP,内网通信多数采用 RPC(Thrift, gRPC)
核心服务治理功能
服务发布
让一个服务升级运行新的代码的过程。
-
难点
-
蓝绿部署 简单稳定,消费两倍资源
-
灰度发布
流量治理
基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行精确控制。
复杂均衡
负责分配请求在每个下游实例上的分布.\
稳定性治理
与程序正确性无关的问题.
- 限流
- 限制服务处理的最大 QPS,拒绝过多请求
- 熔断
- 中断请求路径,增加冷却时间从而让故障实例尝试恢复
- 过载保护
- 在负载高的实例中,主动拒绝一部分请求,防止实例被打挂
- 降级
- 服务处理能力不足时,拒绝低级别的请求,只响应线上高优请求