微服务架构原理与治理实践 | 青训营笔记
这是我参与「第五届青训营」笔记创作活动的第9天。
微服务架构介绍
系统架构经过了单体架构、垂直应用架构、分布式架构、SOA架构再到微服务架构的演进。
下图是从组件的维度来看微服务整体的视角:
微服务架构的核心要素主要有以下三点:
- 服务治理(服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理)
- 可观测性(日志采集、日志分析、监控打点、监控大盘、异常报警、链路追踪)
- 安全(身份验证、认证授权、访问令牌、审计、传输加密、黑产攻击)
微服务架构原理及特征
服务 (service):一组具有相同逻辑的运行实体。
实例 (instance):一个服务中,每个运行实体即为一个实例实例与进程的关系
实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程 (反之不常见)
集群 (cluster):通常指服务内部的逻辑划分,包含多个实例。
常见的实例承载形式:进程、VM、k8s pod...
有状态 / 无状态服务:服务的实例是否存储了可持久化的数据(例如磁盘文件)
对于单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输(HTTP、RPC)
在微服务中,因为每个实例都有多个服务,服务实例的ip port本身是动态变化的,所以对于需要一个服务注册中心,用于存储服务名到服务实例的映射。
核心服务治理能力
服务发布方式
- 蓝绿发布:需要两倍的资源,复制一份相同的服务。
- 灰度发布(金丝雀发布)
线上的服务一定会出问题,这与程序的正确性无关
微服务稳定性治理:
企业服务治理实践
本部分主要针对重试这一技术来进行讨论。
在微服务架构中,重试有以下意义:降低错误率、降低长尾延时、容忍暂时性错误、避免下游故障实例。
但是重试会有以下问题:幂等性、重试风暴、超时设置。
针对以上问题,有下列解决方式:限制重试比例、防止链路重试、Hedged requests。