第八章:服务网格技术

计算机科学中的所有问题都可以通过增加一个间接层来解决。如果不够,那就再加一层。

—— by David Wheeler[1]

Kubernetes 的崛起意味着虚拟化的基础设施,开始解决分布式系统软件层面的问题。但 Kubernetes 解决问题的最细粒度只能到达容器层次,在此粒度之下的技术问题仍然需要工程师亲自解决。历经 SOA、微服务架构、云原生架构洗礼的工程师,想必深谙服务发现、容错、路由、限流、加密等服务间通信管控问题在分布式系统中是不可回避的。

在传统分布式系统中,解决这些问题通常依赖于微服务治理框架(如 Spring Cloud 和 Apache Dubbo),通过硬编码将解决方案嵌入业务逻辑。而在云原生时代,解决上述细粒度技术问题时,应用 Pod 中注入对应功能的 Sidecar 显然是最“Kubernetes Native”的方式。Sidecar 设计模式将非业务逻辑从应用中彻底剥离,服务间的通信治理由此开启了全新的进化,并最终演化出一层全新基础设施层 —— 服务网格(ServiceMesh)。

本章我们根据服务间通信的演化历程,深刻理解服务网格出现的背景,以及解决的问题。然后,了解当前服务网格领域的产品生态(主要介绍 Linkerd 和 Istio)。最后,我们直面服务网格实践中的问题(网络延迟和资源占用问题),讨论此类问题的解决思路,并展望服务网格的未来。本章内容组织如图 8-0 所示。


图 8-0 本章内容导读


  1. David Wheeler 计算机科学的先驱之一,子程序(subroutine)发明者,在数据压缩、安全性和加密领域有杰出的贡献。 ↩︎

总字数:500
Last Updated:
Contributors: isno