SOFAMesh is a solution for large-scale Service Mesh based on Istio open-sourced by Ant Financial. At the same time it is also a part of SOFA(Scalable Open Financial Architecture) which is open sourced by Ant Financial too. On the basis of inheriting the powerful functions and rich features of Istio, in order to meet the performance requirements under large-scale deployment and to deal with the actual situation in the practice, the following improvements have been made:
- Replace Envoy with MOSN written in Go.
- Merge Mixer to the data plane to resolve performance bottlenecks.
- Enhance Pilot for a more flexible service discovery mechanism.
- Increase support for SOFA RPC, Dubbo, etc.
You can find them on GitHub:
Our goal is to create a more pragmatic Istio version!
SOFAMesh is logically split into a data plane and a control plane which is the same as Istio, but it has made some adjustments based on the compatibility of Istio’s overall architecture and protocols:
- Data plane: We developed a new Sidecar using Golang instead of Envoy.
- Control plane: In order to avoid the performance bottleneck caused by Mixer, we merged the Mixer part into the Sidecar. We also have greatly expanded and enhanced the Pilot and Auth modules.
The following diagram shows the different components that make up each plane:
MOSN(Modular Observable Smart Net-stub) is a sidecar written in Golang. The short-term goal of MOSN is to implement Envoy’s functionality, compatible with Envoy’s API, and integrate with Istio.
In addition, we will increase support for other protocols such as SOFA RPC, Dubbo and HSF to better cater to Chinese users, including our own actual needs.
Because of Sidecar is a relatively independent modular, and we also expect to have a separate scenario to use MOSN, we have made a independent repository from SOFAMesh for it, you can find it on https://github.com/alipay/sofa-mosn. Welcome everyone to use, asks for requirements and feedbacks.
We will greatly expand and enhance the Pilot module in Istio:
- Add SOFA Registry Adapter to provide solutions for hyper-scale service registration and discovery.
- A data synchronization module is added to enable data exchange between multiple service registration centers.
- Add Open Service Registry APIs to provide standardized service registration.
Together with Pilot, MOSN will provide the ability to allow traditional intrusive frameworks (such as Spring Cloud, Dubbo, SOFA RPC, etc) and Service Mesh products to communicate with each another, in order to smoothly evolve and transition to Service Mesh products.
We put the Pilot, Mixer, Auth and other Istio modules in the same code repository forked from Istio. We will keep update and consistency with the latest code of Istio in the future.