这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
基本概念
服务:一组具有相同逻辑的运行实体。
实例:一个服务中,每个运行实体即一个实例。
实例与进程关系:没有必然对应关系,一个实例可以对应一个或多个进程(反之不常见)。
集群:通常指服务内部的逻辑划分,包含多个实例。
有/无状态服务:服务实例是否存储了可持久化的数据。
服务间通信
单体服务:不同模块通信只是简单的函数调用。
微服务:服务通信之间意味着网络传输。
-
服务注册发现
- 新增一个统一的服务注册中心,用于存储服务名到服务实例之间的映射关系
- 旧服务实例下线前,从服务注册中心删除该实例,下线流量
- 新服务实例上线后,在服务注册中心注册该实例,上线流量
-
微服务流量特征
- 统一网关入口
- 外网通信多数采用 HTTP,内网通信多数采用 RPC(Thrift, gRPC)
服务治理
服务发布难点
- 服务不可用
- 服务抖动
- 服务回滚
蓝绿部署
- 将服务分为两部分,分先后发布
- 具有简单、稳定的特性
- 需要两倍资源
灰度发布(金丝雀发布)
- 先发布少部分实例,接着逐步增加发布比例
- 不需要增加资源
- 回滚难度大,基础设施要求高
稳定性治理
- 限流 :限制服务处理的最大 QPS,拒绝过多请求
- 熔断:中断请求路径,增加冷却时间从而让故障实例尝试恢复
- 过载保护:在负载高的实例中,主动拒绝一部分请求,防止实例被打挂
- 降级:服务处理能力不足时,拒绝低级别的请求,只响应线上高优请求