Slime是基于Istio的智能网格管理器。通过Slime,我们可以定义动态的服务治理策略,从而达到自动便捷使用Istio和Envoy高阶功能的目的。
服务网格作为新一代微服务架构,采用 Istio+Envoy ,实现了业务逻辑和微服务治理逻辑的物理解耦,降低微服务框架的开发与运维成本。
Istio 可以实现版本分流、灰度发布、负载均衡等功能,但是在本地限流,黑白名单,降级等微服务治理的高阶特性存在缺陷。起初 Istio 给出的解决方案是 Mixer,将这些原本属于数据面的功能上升到 Mixer Adapter 中。这样做虽然解决了功能扩展的问题,但集中式的架构遭到了不少关注者对其性能的质疑。最终,Istio 在新版本中自断其臂,弃用了 Mixer,这就使得高阶功能的扩展成为目前版本的一块空白。
另一方面 Istio 配置是全量推送的。这就意味着在大规模的网格场景下需推送海量配置。为了减少推送配置量,用户不得不事先搞清楚服务间的依赖关系,配置 SidecarScope做配置隔离,而这无疑增加了运维人员的心智负担,易用性和性能成为不可兼得的鱼和熊掌。
针对 Istio 目前的一些弊端,我们推出了Slime项目。该项目是基于 k8s-operator 实现的,作为 Istio 的 CRD 管理器,可以无缝对接 Istio,无需任何的定制化改造。
Slime 内部采用了模块化的架构。目前包含了三个非常实用的子模块。
配置懒加载:无须配置SidecarScope,自动按需加载配置和服务发现信息 ,解决了全量推送的问题。服务调用关系的来源支持Prometheus或者Accesslog。
Http插件管理:使用新的的CRD pluginmanager/envoyplugin包装了可读性及可维护性差的envoyfilter,使得插件扩展更为便捷。
自适应限流:实现了本地限流,同时可以结合监控信息自动调整限流策略,填补了 Istio 限流功能的短板。
后续我们会开源更多的功能模块。
Slime架构主要分为三大块:
- slime-boot,部署Slime(slime-modules和slime-framework)的Operator组件。
- slime-modules,Slime的核心线程,感知SlimeCRD并转换为IstioCRD,并触发内置的其他逻辑。
- slime-framework,作为底座,为modules提供通用的基础能力。
其架构图如下:
Slime支持聚合打包,可以将任意模块聚合成一个镜像。所以,Slime可以以一个Deployment形式部署,避免组件过多。
Slime-module
-
微信群: 请添加微信号
yonka_hust
进群 -
QQ群: 971298863
-
其他有用的信息可以查阅我们的官网 Slime-Home