这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
系统架构演变
单体架构
优势:性能最高,冗余小,适合不变的需求
劣势:修改困难,模块糅合性高
垂直应用架构
优势:业务独立开发维护
劣势:不同业务存在冗余,仍是多个单体。本质是以功能进行划分
分布式架构
优势:抽离出与业务无关的独立服务,也就是将整个业务进行拆分
劣势:服务模型崩溃全局瘫痪,调用关系复杂,仍有冗余性
SOA服务
优势:面向服务,服务注册
劣势:中心化设计,从上到下的价格,重构困难
微服务架构
优势:所有皆服务,开发效率高,业务独立设计,自下而上,故障隔离。
劣势:观测挑战,安全性,分布式难题,治理与运维难。
微服务架构核心
服务治理
主要包括服务注册,服务发现,负载均衡,扩缩容,流量治理,稳定性治理;
可观测性
主要包括日志采集,日志分析,监控打点,监控大盘,异常报警和链路追踪
安全
主要包括身份验证,认证授权,访问令牌,审计,传输加密,黑产攻击
微服务架构原理及特征
服务(service):一组具有相同逻辑的运行实体
实例(instnce): 一个服务中,每个运行实体即为一个实例
实例与进程的关系:一个实例可以对应一个或多个进程
集群(cluster):通常指服务内部的逻辑划分,包含多个实例
常见的实例承载模式:进程,VM,k8s pod
有状态/无状态服务:服务的实例是否存储了可持久化的数据(例如磁盘文件)
服务间通信
HTTP和RPC
服务注册与发现
handcode:如果使用指定ip地址与固定端口,那只能找个一个实例,且变更困难
DNS:本地DNS缓存不及时;负载均衡存在问题;不支持服务实例的探活检查;域名无法配置端口
服务注册中心:新增一个统一的服务注册中心,用于存储服务名到服务实例的映射。删除先删映射再下线服务,上限先健康检查后再加映射
流量特征
统一网关入口,内网通信多数采用rpc,网状调用链路。
重试的意义
降低错误率,降低长尾延时,容忍暂时性错误,避开下游故障实例
重试的难点
重试风暴,链式调用会有乘法的叠加调用风暴,防止链路重试,旨在最下一层发生重试。
重试策略
对于可能超时的请求,重新向另一个下游实例发送一个相同的请求,并等待先到达的响应