学习完原生的istio, 再回头来看蚂蚁在service mesh的实现,本文主要分析差异点
先献上蚂蚁的链接:https://www.sofastack.tech/projects/
重点看SOFAMesh和MOSN两个项目
1、整体架构
SOFAMesh 是基于 Istio 改进和扩展而来的 Service Mesh 大规模落地实践方案。在继承 Istio 强大功能和丰富特性的基础上,为满足大规模部署下的性能要求以及应对落地实践中的实际情况,有如下改进:
采用 Golang 编写的 MOSN 取代 Envoy
扩展理解:Envoy核心是用C++11编写的合并Mixer到数据平面以解决性能瓶颈
扩展理解: 因为Envoy发起每个请求前都需要对Policy服务进行Check请求,一方面增加了业务请求本身的延迟,一方面也给作为单点的Policy增大了负载压力增强 Pilot 以实现更灵活的服务发现机制
扩展理解:支持自家的SOFARegister增加对 SOFARPC、Dubbo 的支持
扩展理解:蚂蚁/阿里自家协议
下图展示了SOFAMesh 和 Istio 在架构上的不同:
2、SOFA Pilot
SOFA Mesh 项目 fork 了 Istio 项目,对 Pilot 的能力进行增强,目前在进行中的增强主要集中在下面三个方面:
- 支持 Zookeeper 作为注册中心,并在此基础上支持 SOFA、DUBBO 等使用 Zookeeper 作为注册中心的微服务框架。
- 支持通用协议框架,使用一个通用协议,在 Kubernetes DNS 的基础上同时支持多种协议。
- 新增 register agent,支持 SOFA、DUBBO 和 HSF 的容器模型,即支持单个应用注册多个服务实例。
3、MOSN
MOSN即Modular Open Smart Network-proxy 本质上和Envoy一样,还是代理嘛
核心不同点:
1、 MOSN用流量接管方案: 我理解是把sidecar的端口注册到服务中心,最终调用的并不是真服务端口
资料: https://www.sofastack.tech/projects/sofa-mosn/concept/traffic-hijack/
2、Envoy用iptables流量劫持方案:我理解是直接劫持真服务端口
资料: https://jimmysong.io/istio-handbook/concepts/sidecar-injection-deep-dive.html
3、平滑升级:有点复杂,涉及到网络深层原理了,读下来的感觉就是MOSN方案更屌
资料: https://www.sofastack.tech/projects/sofa-mosn/concept/smooth-upgrade/
有疑问加站长微信联系(非本文作者)