第八章:服务网格技术
Kubernetes 的崛起意味着虚拟化的基础设施,开始解决分布式系统软件层面的问题。但 Kubernetes 解决问题的最细粒度只能到达容器层次,在此粒度之下的技术问题(服务发现、负载均衡、限流、熔断、加密等服务间通信管控问题)仍然需要业务工程师亲自解决。
在传统分布式时代,解决上述问题时,通常依赖微服务治理框架(如 Spring Cloud 或 Apache Dubbo),解决方案与业务逻辑混合编写。在云原生时代,解决上述问题时,在 Pod 内注入辅助功能的 Sidecar 容器。业务对此完全无感知,显然是最“Kubernetes Native”的方式。Sidecar 将非业务逻辑从应用程序中剥离,服务间的通信治理由此开启了全新的进化,并最终演化出一层全新基础设施层 —— 服务网格(ServiceMesh)。
本章,我们将根据服务间通信的演化历程,深刻理解服务网格出现的背景,以及它所解决的问题。思考服务网格数据面和控制面的分离设计,了解当前服务网格领域的产品生态(主要介绍 Linkerd 和 Istio)。最后,我们直面服务网格实践中的问题(网络延迟和资源占用问题),讨论如何解决,并展望服务网格的未来。本章内容组织如图 8-0 所示。
图 8-0 本章内容导读
David Wheeler 计算机科学的先驱之一,子程序(subroutine)发明者,在数据压缩、安全性和加密领域有杰出的贡献。 ↩︎
总字数:478字