服务网格(Service Mesh)是什么?

1. Service Mesh是什么(What)

Service Mesh中文含义服务网格,是一种微服务网络层治理方案.

服务网格将微服务中与网络相关的部分抽象出来,形成一个应用层的抽象网络层,专门负责微服务的网络治理

2. Service Mesh解决了什么问题(Why)

简而言之,Service Mesh解决的就是微服务中所有的网络问题.

没有Service Mesh之前,微服务之间的通信依赖于各种框架自身的实现:

比如:

注册中心有注册中心的通信框架;

负载均衡有负载均衡的实现逻辑;

限流熔断可能又是另外一套通信逻辑;

...

问题:

  1. 这些网络层的通信都包含在一个一个的微服务框架中,想要做到微服务之间的通信,就必须精通这些框架
  2. 而当微服务到了一定的规模后,整个微服务架构中某一个微服务出现问题时,由于长链路问题,极难排查微服务的问题
  3. 微服务的概念应该是面向应用的,与语言无关,而在当前的微服务架构中,极难兼容不同语言
    1. 比如: 如何在一个SpringCloud的项目中加入一个python的微服务? python无法注册到Eureka中或者说Eureka这个注册中心的框架是面向java的.
  1. 网络通信存在于框架中,无法拆离开,当网络通信模块出现某个问题需要升级时,必须升级整个项目
    1. 比如现在的微服务框架底层都使用Netty作为网络通信框架,那么当Netty出现一个类似Log4j2这样的安全漏洞时,又将会掀起怎样的波浪?可以预见的是百分之90的服务都会面临紧急升级的问题

而Service Mesh将网络通信抽离到一个与服务平等的地位,但是与服务又不是内嵌的关系,这样就会使网络通信集中在Service Mesh中完成,而服务除了与Service Mesh通信外,完全专注于业务开发,无需理会负载均衡,注册发现,熔断限流等等多种框架中的通信模块.

这里就可以明白Service Mesh作为一个网络抽象层的意义,就是专门针对微服务网络的治理.

再来一张图(来源: https://zhuanlan.zhihu.com/p/61901608),可以体会一下Service Mesh

服务网格(Service Mesh)是什么?

其中: 绿色的为微服务, 蓝色的为Service Mesh

微服务专注于业务开发

而所有的网络通信都由Service Mesh来完成.

3. Service Mesh业界产品

Service Mesh是一种思想,一种架构,必然有具体的落地实现才行.

  1. Linkerd: 开源项目,由Buoyant提供商业支持
  2. Istio: 开源产品 Google/IBM/Lyft等公司主导 各云厂商均有自身商业产品
  3. AWS app Mesh: 闭源 AWS专用服务
  4. Rancher
  5. HashiCorp
  6. ...


上一篇:Leetcode刷题(一)-回文数的判断


下一篇:Git 时间,将代码托管到GitHub 上