[ 后端基础Day8 | 青训营笔记]

43 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第8天

微服务

微服务架构介绍

架构演变

单体架构、垂直应用架构、分布式架构、soa架构、微服务架构

单体架构:性能最高,冗余最小 ;debug困难,模块相互影响,模块分工,开发流程复杂

垂直应用架构:业务独立开发维护;不同业务存在冗余

分布式架构:与业务无关的独立服务;服务模块bug导致全站崩溃 ,调用复杂,不同服务冗余

SOA:服务注册;中心化设计,需要从上至下,重构困难

微服务:开发效率高,业务独立,故障隔离;治理运维困难

image-20230204111823311.png

微服务架构要素

image-20230204112210555.png

服务:一组具有相同逻辑的运行实体

实例:一个服务中,每个运行实体即为一个实例

集群:服务内部的逻辑划分,包含多个实例

常见实例承载形式:

进程、vm、k8s

有状态/无状态服务:服务实例是否存储了可持久化数据

image-20230204112956549.png

服务通信

对于单体服务,不同模块只是简单的函数调用

对于微服务,服务通信意味着网络传输

image-20230204113230654.png

服务注册与发现

从固定ip:port=》DNS=》服务注册中心

解决思路:新增一个统一的服务注册中心,用于存储服务名到服务实例的映射

服务实例上线下线过程:

下线:先在注册中心删除服务注册记录,然后再关闭服务

上线:先启动,在健康检查,再往注册中心增加服务注册中心

流量特征: 内部使用grpc外部使用http

image-20230204114407589.png

核心服务治理功能

服务发布

一个服务升级运行成新的代码

image-20230204231841603.png

解决方案:

蓝绿部署,流量导蓝色,关并升级绿色,导来绿色,关并升级蓝色

缺点:某个时刻只有一半资源在运行,可以选择低量时间发布

灰度发布:

image-20230204232233123.png

流量治理

基于地区、集群、实例、请求等维度

image-20230204232412892.png

负载均衡

负责分配请求在每个下游实例上的分布

稳定性治理

image-20230204232829238.png

解决方案:

image-20230204232943785.png

字节跳动治理实践

重试

降低错误率

降低长尾延迟

容忍暂时性错误

避开下游故障实例

重试的难点

幂等性

重试风暴

链路深的话,容易在下游产生严重的风暴

image-20230204233640825.png

超时设置

解决方案:

image-20230204233816477.png

image-20230204233921437.png