微服务架构——原理及特征 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天 ✌
1. 微服务原理及特征
1.1 系统架构
- 单体架构:软件的自然形态,所有的逻辑统一处理,一定程度上来说冗余最小,性能最高,但其核心业务与边缘业务混合,模块耦合严重,不易维护
- 垂直应用架构:按照业务线垂直划分,业务独立的开发和维护,业务之间存在冗余,本质上每个业务也还是一个单体架构
- 分布式架构:抽出业务无关的公共模块,形成一个与业务无关的独立服务层(服务:一组具有相同逻辑的运行实体),调用关系复杂,服务之间还是存在冗余
- SOA架构(service oriented architecture):面向服务,多了一个服务注册中心,用于服务解耦,但设计上还是从上至下,重构困难
- 微服务架构:彻底的服务化,业务独立设计,自下而上设计,拆分粒度细,故障隔离,运维难度增加,面临诸多安全考验
1.2 微服务架构核心要素
- 服务治理:服务注册、服务发现、负载均衡、扩缩容、流量 etc.
- 可观测性:日志采集及分析、监控、链路追踪、异常报警 ...
- 安全:身份验证、认证授权、访问令牌、审计、传输加密 ...
1.3 服务间通信
单体服务:不同模块之间通过简单的函数调用实现 微服务:服务间通信通过网络传输(依靠不同的协议http\gRPC\Thrift)
服务注册及发现: 解决问题: hard code,通过ip和端口硬编码,问题点:延时高(本地DNS存在缓存),负载均衡问题,不支持实例的探活检测,域名无法配置端口 解决方案: 新增一个统一的服务注册中心,用于存储服务名到服务实例的映射,对于注册的实例进行health check,定时进行服务的上线和下线过程
流量特征:
- 统一网关入口
- 内网通信多数采用RPC(Http是文本协议,传输效率较低,而RPC是二进制传输协议)
- 网状调用链路