# 服务网格

Server Mesh:专门处理服务通信的基础设施层。职责是”在微服务架构中实现可靠、快速和安全的服务间调用“。

微服务间的TCP/ip,负责服务之间网络调用、限流、熔断和监控

# 1.数据字典

# 1.1. 控制平台

  • 不直接解析数据包
  • 与控制平面中的代理通信,下发策略和配置
  • 负责网络行为的可视化
  • 通常提供api或命令行工具用于配置版本化管理,便于持续集成和部署

# 1.2. 数据平面

  • 通常按无状态目标设计,但为提高转发性能,需要缓存一些数据
  • 直接处理出入站的数据包,转发、路由、健康检查、负载均衡、认证、鉴权、产生监控数据等
  • 对应用透明,无感知部署

# 1.3. 价值

  • 可观察性
  • 流量控制
  • 安全性:证书,sidecar负责证书生命周期管理,包括证书生成、分发、刷新、注销
    • 容器可能会暴躁到外部访问,保证传输层双向加密,可以保证流量传输安全
    • 内部sidecar与应用容器之间建立本地tcp连接,其中使用mtls(双向传输层加密)
  • 延迟和故障注入(人为注入故障)

# 2.工作流程

  1. 控制平面将网格中服务配置推送到各节点的sidecar代理中
  2. sidecar代理将服务请求路由到目的地址,根据中的参数判断是到生产、测试还是staging环境的服务(路由信息可以动态配置、可以全局配置,也可以单独配置)
  3. sidecar确认了目的地址后,将流量发送到相应服务发现端点,在k8s中是service,然后service把服务转发给后端实例
  4. sidecar观测最近请求的延迟时间,选择出所有应用程序的实例中最快的实例,将请求发送给它,同时记录响应类型和延迟数据
    • 如果这个实例挂了,不响应或工作了,sidecar会把请求发到其它实例上重试
    • 如果这个实例返回错误,会把它从负载均衡池中移除,稍后再周期性重试
    • 如果请求截止时间已过,则主动失败请求,而不是再次尝,以减少负载

sidecar以metric和分布式追踪形式捕获上述行为的各个方面,这些追踪信息将发送到集中metric系统

上次更新: : 2 months ago