微服务架构原理与治理实践 | 青训营笔记

140 阅读2分钟

微服务架构原理与治理实践 | 青训营笔记

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

微服务架构介绍

系统架构经过了单体架构、垂直应用架构、分布式架构、SOA架构再到微服务架构的演进。

下图是从组件的维度来看微服务整体的视角:

image.png

微服务架构的核心要素主要有以下三点:

  • 服务治理(服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理)
  • 可观测性(日志采集、日志分析、监控打点、监控大盘、异常报警、链路追踪)
  • 安全(身份验证、认证授权、访问令牌、审计、传输加密、黑产攻击)

微服务架构原理及特征

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

实例 (instance):一个服务中,每个运行实体即为一个实例实例与进程的关系

实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程 (反之不常见)

集群 (cluster):通常指服务内部的逻辑划分,包含多个实例。

常见的实例承载形式:进程、VM、k8s pod...

有状态 / 无状态服务:服务的实例是否存储了可持久化的数据(例如磁盘文件)

对于单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输(HTTP、RPC)

在微服务中,因为每个实例都有多个服务,服务实例的ip port本身是动态变化的,所以对于需要一个服务注册中心,用于存储服务名到服务实例的映射。

核心服务治理能力

服务发布方式

  • 蓝绿发布:需要两倍的资源,复制一份相同的服务。
image.png
  • 灰度发布(金丝雀发布)
image.png

线上的服务一定会出问题,这与程序的正确性无关

微服务稳定性治理:

image.png

企业服务治理实践

本部分主要针对重试这一技术来进行讨论。

在微服务架构中,重试有以下意义:降低错误率、降低长尾延时、容忍暂时性错误、避免下游故障实例。

但是重试会有以下问题:幂等性、重试风暴、超时设置。

针对以上问题,有下列解决方式:限制重试比例、防止链路重试、Hedged requests。