1. Service Mesh是什么(What)
Service Mesh中文含义服务网格,是一种微服务网络层治理方案.
服务网格将微服务中与网络相关的部分抽象出来,形成一个应用层的抽象网络层,专门负责微服务的网络治理
2. Service Mesh解决了什么问题(Why)
简而言之,Service Mesh解决的就是微服务中所有的网络问题.
没有Service Mesh之前,微服务之间的通信依赖于各种框架自身的实现:
比如:
注册中心有注册中心的通信框架;
负载均衡有负载均衡的实现逻辑;
限流熔断可能又是另外一套通信逻辑;
...
问题:
- 这些网络层的通信都包含在一个一个的微服务框架中,想要做到微服务之间的通信,就必须精通这些框架
- 而当微服务到了一定的规模后,整个微服务架构中某一个微服务出现问题时,由于长链路问题,极难排查微服务的问题
- 微服务的概念应该是面向应用的,与语言无关,而在当前的微服务架构中,极难兼容不同语言
- 比如: 如何在一个SpringCloud的项目中加入一个python的微服务? python无法注册到Eureka中或者说Eureka这个注册中心的框架是面向java的.
- 网络通信存在于框架中,无法拆离开,当网络通信模块出现某个问题需要升级时,必须升级整个项目
- 比如现在的微服务框架底层都使用Netty作为网络通信框架,那么当Netty出现一个类似Log4j2这样的安全漏洞时,又将会掀起怎样的波浪?可以预见的是百分之90的服务都会面临紧急升级的问题
而Service Mesh将网络通信抽离到一个与服务平等的地位,但是与服务又不是内嵌的关系,这样就会使网络通信集中在Service Mesh中完成,而服务除了与Service Mesh通信外,完全专注于业务开发,无需理会负载均衡,注册发现,熔断限流等等多种框架中的通信模块.
这里就可以明白Service Mesh作为一个网络抽象层的意义,就是专门针对微服务网络的治理.
再来一张图(来源: https://zhuanlan.zhihu.com/p/61901608),可以体会一下Service Mesh
其中: 绿色的为微服务, 蓝色的为Service Mesh
微服务专注于业务开发
而所有的网络通信都由Service Mesh来完成.
3. Service Mesh业界产品
Service Mesh是一种思想,一种架构,必然有具体的落地实现才行.
- Linkerd: 开源项目,由Buoyant提供商业支持
- Istio: 开源产品 Google/IBM/Lyft等公司主导 各云厂商均有自身商业产品
- AWS app Mesh: 闭源 AWS专用服务
- Rancher
- HashiCorp
- ...