四、蚂蚁SOFAMesh/MSON与istio的不同

yezide · · 2035 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

学习完原生的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 在架构上的不同:


image.png

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/


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:yezide

查看原文:四、蚂蚁SOFAMesh/MSON与istio的不同

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2035 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传