服务网格是什么

服务网格( Service Mesh )是指用于微服务应用的可配置基础架构层( configurable infrastructure layer )。它使每个service实例之间的通信更加流畅、可靠和迅速。服务网格提供了诸如服务发现、负载均衡、加密、身份鉴定、授权、支持熔断器模式( Circuit Breaker Pattern )以及其他一系列功能。

什么是服务网格?

服务网格的实现通常是提供一个代理实例,我们称之为"sidecar"。sidecar 包含在每一个service 之中。sidecar 主要处理 service 间的通信、监控、以及一些安全相关的考量 —— 任何可以从服务本体中抽象出来的安全方面的部分。通过这种方式,开发者可以在服务中专注于开发、支持以及维护;运维人员可以维护服务网格并运行app。

服务网格的用处及优点

在数字化转型的背景下,IT行业正在将大型的应用程序集成到小的、离散的微服务容器中,这些容器包含所有的服务代码和依赖项,而这些依赖项彼此独立且很容易地从一台服务器转移到另一台服务器。

这种容器架构很容易在云中扩展和运行,并且可以快速构建独立的微服务。然而随着应用程序变得越来越大,并且同一服务的多个实例同时运行,这些微服务之间的通信变得越来越复杂,在此基础上服务网格是一种新兴的机构形态,旨在以一种减少管理和编程开销的方式动态连接这些微服务。

正如Red Hat(红帽)所描述的,“服务网格是一种控制不同应用程序共享数据的方法。”实际上,这听起来非常像大多数开发人员所熟知的客户端-服务器应用程序中的中间件。
服务网格的独特之处在于它是为适应分布式微服务环境而构建的。在由微服务构建的大规模应用程序中,任何给定服务可能有多个实例,这些实例运行在各种本地或云服务器上。这显然使单个微服务很难找到它们需要与之通信的其他服务,而服务网格会根据时间顺序自动地负责连接服务,这样就“解放”了开发人员和单个微服务。

所以,我们可以将服务网格看作软件定义网络(SDN)。正如SDN创建一个抽象层,使网络管理员不必处理物理网络连接一样,服务网格将应用程序的底层基础设施与所交互的抽象体系结构解耦。