在云计算的背景下,后端开发人员经常提到构建(或使用)“服务网格”,但我并不完全理解它是什么。能告诉更多吗?
在分布式应用程序中,应用程序的每个部分都称为微服务,并被分配一个非常基本的任务来执行。这可以是“返回个人资料信息”,甚至可以是更小的信息。
所有这些微服务都需要相互通信才能构成整个应用程序。这正是服务网格所提供的。事实上,服务网格描述了两者:
Istio 是一个非常流行的服务网格软件,您通常会在从整体架构过渡的大型应用程序中找到它。但请记住,使用服务网格存在缺点,更普遍的是采用分布式应用程序。
在服务网格的帮助下,管理服务间通信的逻辑已从各个微服务中抽离出来,并以基础设施层的形式进行抽象。所有服务间通信活动都已卸载到服务网格,服务网格反过来为冗余、服务发现、运行状况监控等网络功能提供内置支持。因此,通过服务网格,所有服务到服务的通信都应发生在称为服务网格(或边车代理)的软件组件之上,并且微服务不直接与其他微服务通信。
术语服务网格用于描述构成此类应用程序的微服务网络以及它们之间的交互[src]。 服务网格支持跨服务的托管、可观察和安全通信,让您可以在所选基础设施上创建由许多微服务组成的强大企业应用程序。
服务网格架构在使用的任何开发范例中都使用称为 sidecar 的代理实例,通常是容器和/或微服务。在微服务应用程序中,边车将附加到每个服务。在容器中,sidecar 附加到每个应用程序容器、VM 或容器编排单元,例如 Kubernetes pod [src]。
Sidecar Proxy:Sidecar 代理与单个实例或 Pod 一起运行。 Sidecar 可以处理从服务本身抽象出来的任务,例如路由或代理、进出与其一起运行的容器的流量、监控和安全性。 Sidecar 及其交互构成了服务网格中的数据平面。
控制平面:控制平面管理创建实例、监控和实施网络管理和安全策略等任务。控制平面可以连接到 CLI 或 GUI 界面以进行应用程序管理[src]。