NetEase's open source service grid component Slime: Optimize Istio's high-end functions

Recently, the Qingzhou microservice team of Netease Shufan has open sourced a service mesh component Slime , which can be used as Istio 's CRD manager, aiming to realize the high-end functions of Istio/Envoy through simpler configuration.

According to the official introduction of the project, the Slime project was launched to make up for the shortcomings of the service grid Istio in the face of high-level functions such as local current limiting, black and white lists, and downgrading.

As the current mainstream cloud-native service grid project, Istio has a set of effective upper-level abstractions. By configuring VirtualService, DestinationRule and other CRs, functions such as version distribution, grayscale release, and load balancing can be realized, but in the face of local current limit This set of abstractions seems incapable of high-level functions of microservice governance such as, black and white lists, and downgrades.

At first, the solution given by Istio was Mixer. These functions that originally belonged to the data plane were upgraded to Mixer Adapter. Although the problem of function expansion was solved, its centralized architecture was questioned by many followers. In the end, Istio broke its arms in the new version and abandoned Mixer, which made the expansion of high-end functions a blank in the current version.

On the other hand, Istio configuration is pushed in full, which means that a large amount of configuration needs to be pushed in a large-scale grid scenario. In order to reduce the amount of pushed configuration, users have to figure out the dependencies between services in advance and configure SidecarScope for configuration. Isolation, and this undoubtedly increases the mental burden of operation and maintenance personnel, and ease of use and performance have become inexorable fish and bear paws.

In response to some of the current shortcomings of Istio, the NetEase team started the Slime project. The project is based on k8s-operator. As Istio's CRD manager, it can be seamlessly connected to Istio without any customization. Slime adopts a modular architecture and currently contains three very useful sub-modules:

  1. Lazy configuration loading: There is no need to manually configure SidecarScope, and configuration information and service discovery information are loaded on demand, which solves the problem of full push.
  2. Http plug-in management: Use the new CRD pluginmanager/envoyplugin to wrap the readability and poor maintainability of envoyfilter, making plug-in extension more convenient.
  3. Adaptive current limiting: The current limiting strategy can be automatically adjusted in combination with monitoring information, filling the shortcomings of Istio's current limiting function.

The source code of Slime is now open, and the team stated that the project is still in its early stages and hopes that more meshers will join the community or make suggestions for the project to help improve it. The team will open more useful functions in Slime in the future.

Guess you like

Origin www.oschina.net/news/129656/netease-opensource-slime