第一代Service Mesh采用Sidecar模式,只有数据平面代理,没有控制平面,数据平面代理直接负责和其他外部系统进行交互,通过Sidecar模式,将通信和通信链路治理功能从微服务中剥离出来,实现了通信基础设施的下沉和服务化。这里也体现了架构解耦的思想,通过解耦减少了微服务的负担。
但Sidecar模式下的Service Mesh有一个突出的问题,即将通信和通信链路治理的所有功能都放到这个代理服务中,导致数据平面代理很重,并且由于承载了太多的特性和功能,使得数据平面代理的更新和修改会特别频繁,而频繁的更新和升级会导致代理服务容易出问题,影响代理服务的稳定性。同时,Service Mesh模式下,数据平面代理承载了微服务通信的全部流量,对稳定性要求极高,这个服务的任何故障都会对整个系统的稳定性产生很大的影响。为了解决上述频繁升级和稳定性之间的矛盾,令策略和配置决策逻辑从代理服务中脱离出来,形成了独立的控制平面,这就是第二代Service Mesh。
第二代Service Mesh最重要的标志就是控制平面和数据平面分离,所有的代理服务都由控制平面掌控,通过控制平面可以控制整个系统,从而提供了强大的控制能力和策略能力;同时将具体的控制逻辑从数据平面移除,简化了数据平面的设计,并且数据平面不需要和外部系统进行交互,只聚焦在变更频率很低的流量路由和转发逻辑上,这提升了数据平面的稳定性。

--《service mesh微服务架构设计》
展开
评论