3.2 Service Mesh化架构模式
Service Mesh(服务网格)是专用的基础结构层,主要用于保障服务之间安全、快速和可靠的通信。构建云原生应用程序就需要一个Service Mesh。下面就来解释Service Mesh定义中的关键信息。
1)Service Mesh是基础设施层,在某些场景中可能要与其他基础设施交互,如基础网络、PaaS平台、运维系统等。如Service Mesh产品Istio就非常依赖Kubernetes这一基础设施,当然Istio本身也是基础设施。
2)Service Mesh可用于解决各服务之间的通信问题。当然,服务之间的通信机制是很复杂的,其中包括通信协议、服务的负载均衡等,所以Mesh需要能够支持多种协议的适配需求,同时要能够支持相关的特性,如负载均衡等。
3)Service Mesh是安全、快速和可靠的。关于安全性,相信大家都能理解,移动设备端的App、后端应用和服务等,它们运行于各种网络环境和公有云之上,不在内部可信任网络中,没有防火墙的保护,因此安全是第一需求。
4)如果我们想要构建云原生应用,Service Mesh就是不可或缺的,因为云原生应用具有一定的复杂性,在众多微服务应用之间的相互通信上体现尤为明显,而这点正好是Service Mesh所擅长的。
阐述完Service Mesh的定义后,让我们来看一下Service Mesh的经典解决方案。目前,Service Mesh主要包含三种模式:第一种Sidecar模式,典型解决方案如Istio+Envoy,当然还有其他的实现方案,如Linkerd等;第二种是服务注册和发现模式(Service Registry & Discovery),典型解决方案如Spring Cloud;第三种是中心化Broker模式,典型解决方案如RSocket Broker。下面就来详细分析这些技术方案。