《从 0 开始学微服务》学习归整(十二)Server Mesh

内容纲要

什么的 Server Mesh ?

Server Mesh 是一组以轻量级网络代理的方式跟服务组合在一起的,用于处理服务于服务之间的通信问题的技术基础结构。这种技术在跟服务组合的时候,可以做到让服务无感知的方式实现服务治理。由 Server Mesh 构造的网络,具有高可靠性,尤其适合云原生应用。

  • 作用
    • 处理服务于服务之间的通信
  • 实现方式
    • 以轻量级的网络代理构成
  • 特点
    • 可以以服务无感知的方式实现服务治理
  • 场景
    • 云原生应用

实现原理

SideCar

即轻量级网络代理。

  • 作用

    • 转发服务之间的调用
  • 工作流程

    • 每个服务消费者、提供者本地都部署一个 SideCar
    • 服务消费者、提供者只实现业务代码
    • 消费者消费时,向本地 SideCar(正向代理) 发起请求
      • SideCar 根据请求向注册中心查询(得到请求节点)
      • 根据负载均衡策略选择节点
      • 向这个节点的 SideCar 发起请求
    • 提供者本地的 SideCar(反向代理) 接到请求
      • SideCar 完成流量统计、限流功能
      • 把请求转发到服务提供者
    • 请求完成
      流程
  • 实现方式

    • 基于 iptables 的网络拦截
      iptables
    • 协议转换
      协议转换

Control Plane

  • 作用
    • 向SideCar 发送各种指令(以完成服务治理)
      • 服务发现:服务提供者 SideCar 注册服务到 Control Plane 注册中心
      • 负载均衡:SideCar 通过获取 Control Plane 注册中心的配置(可以动态修改)来实现负载均衡
      • 请求路由:SideCar 通过获取 Control Plane 获得节点列表(节点列表可以修改:A/B 测试等)来实现请求路由
      • 故障处理:略
      • 安全认证:略
      • 监控上报:略
      • 日志记录:略
      • 配额控制:略

Control Plane

实现

istio

一个用于连接、保护、控制和观测服务的平台。

file

整体架构

file

  • Proxy(SideCar)
    • 支持 HTTP/1.1、HTTP/2、gRPC、TCP 请求
    • 采用 Envoy(专门为大型 SOA 架构设计的 L7 代理和通信总线)
      • 能力
        • 服务发现、服务注册、负载均衡、限流降级、超时熔断、动态路由、监控上报、日志推送等
      • 特点
        • 性能损耗低:使用 C++ 实现,且对系统资源占用小
        • 可扩展性高:提供可插拔过滤器设计(用户可以定制开发自己的过滤器)
        • 动态可配置:对外提供统一 API,通过 API 实现动态配置(不需要重启)
          • CDS:集群发现服务
          • RDS:路由发现服务
          • LDS:监听器发现服务
          • EDS:EndPoint 发现服务
          • HDS:健康检查服务
          • ADS:聚合发现服务
  • Control Plane
    • Pilot
      • 作用:流量控制
      • 核心组件
        • Rules API:对外封装统一 API(供服务开发者、运维调用),可以用于流量控制
        • Envoy API:对内封装统一 API(供 Envoy 调用),获取注册信息、流量控制信息等
        • 抽象模型层:对服务的注册信息、流量控制规则等进行抽象,使其描述与平台无关
        • 平台适配层:用于适配个平台(Kubernetes、Mesos 等),把平台特定(注册、资源)信息转换成抽象模型层定义的平台无关的描述
          file
      • 实现
        • 服务发现和负载均衡
          • 服务提供者通过 Proxy 注册到 Pilot
          • 服务消费者通过 Proxy 到 Pilot 查询服务节点,并以某种负载均衡算法选择其中某个节点进行请求
          • Proxy 定期检查缓存的服务提供者的节点健康状态(不健康的会剔除)
            file
        • 请求路由
          • Pilot 对服务的版本、环境等进行细分
          • 向 Proxy 下发路由规则
          • Proxy 根据规则进行请求
            file
        • 超时重试
          • Proxy 默认转发 HTTP 的超时时间为 15 秒,可以通过 Pilot 的 Rules API 进行设置
          • 重试次数也可以通过 Rules API 进行设置
        • 故障注入
          • 作用:在不杀死节点的情况下,通过修改路由规则,将故障注入到网络中,以此来观察服务的健壮性等
          • 原理
            • 在 TCP 层制造数据包的延迟或损坏(模拟服务超时、调用失败场景)
    • Mixer
      • 作用:实现策略控制、监控日志收集等
      • 原理: 每次 Proxy 转发请求都调用 Mixer
        • 高可用、低延迟
          • Proxy 端本地缓存(降低 Proxy 端对 Mixer 的调用延迟)
          • Mixer 本地缓存(减低延迟;减少后端基础设施故障带来的影响)
            file
        • 策略控制(在 Mixer 中配置)
          • 对服务调用进行速率限制
          • 对服务调用进行访问控制
        • 日志收集(在 Mixer 中配置)
    • Citadel
      • 作用:保证服务之间访问的安全(跟 Proxy、Pilot、Mixer 配合)
        • Citadel 里存储秘钥和证书
        • 通过 Pilot 把授权策略和安全命名信息分发给 Proxy
        • Proxy 与 Proxy 之间调用使用双向 TLS 认证(保证服务安全)
        • Mixer 管理授权和审计
          file
Tags: , ,

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注