天天看点

简述服务网格的优劣势

Service Mesh是一个专门处理服务通信的基础设施层。它的职责是在由云原生应用组成服务的复杂拓扑结构下进行可靠的请求传送。在实践中,它是一组和应用服务部署在一起的轻量级的网络代理,且对应用服务透明,服务网格的出现带来了很多变化。

1、服务网格的优势
  • 可观察性。因为服务网格是一个专用的基础设施层,所有的服务间通信都需要通过它,所以它在技术堆栈中处于独特的位置,以便在服务调用级别上提供统一的遥测指标。这意味着,所有服务都被监控为“黑盒”。服务网格捕获诸如来源、目的地、协议、URL、状态码、延迟、持续时间等线路数据。这在本质上等同于Web服务器日志可以提供的数据,但是服务网格可以为所有服务捕获这些数据,而不仅仅是单个服务的Web层。需要指出的是,收集数据只是解决微服务应用程序中可观察性问题的一部分。存储与分析这些数据则需要额外功能的机制补充,并作用于警报或实例自动伸缩等。
  • 流量控制。服务网格可以为服务提供智能路由(蓝绿部署、金丝雀发布、A/B测试)、超时重试、熔断、故障注入、流量镜像等各种控制功能。以上这些是传统微服务框架所不具备的功能,但对系统来说是至关重要的功能。这是因为服务网格承载了微服务之间的通信流量,所以可以在服务网格中通过规则进行故障注入,模拟部分微服务出现故障的情况,对整个应用的健壮性进行测试。由于服务网格的设计目的是有效地将来源请求调用连接到其最优目标服务实例中,因此这些流量控制特性是面向目的地的。这正是服务网格流量控制功能的一大特点。
  • 安全。在某种程度上,单体架构应用受其单地址空间的保护。然而,一旦单体架构应用被分解为多个微服务,网络就会成为一个重要的入侵面。更多的服务意味着更多的网络流量,这对黑客来说意味着拥有更多的机会来入侵信息流。而服务网格恰恰提供了保护网络调用的功能和基础设施。服务网格安全的相关好处主要体现在以下3个核心领域:服务的认证、服务间通信的加密,以及安全相关策略的强制执行。
2、服务网格的劣势
  • 增加了复杂度。服务网格将Sidecar代理和其他组件引入已经很复杂的分布式环境中,会极大地增加整体链路和操作运维的复杂性。
  • 运维人员需要更专业。在容器编排工具(如Kubernetes)上添加Istio之类的服务网格,需要运维人员成为这两种技术的专家,以便充分使用二者的功能,以及定位环境中遇到的问题。
  • 延迟。从链路层面来讲,服务网格是一种侵入性的、复杂的技术,可以为系统调用增加明显的延迟。虽然这个延迟是毫秒级别的,但是在特殊业务场景下,这个延迟可能是令人难以容忍的。
  • 平台的适配。服务网格的侵入性迫使开发人员和运维人员适应平台并遵守平台的规则。