近日,网易数帆旗下轻舟微服务团队开源了一个服务网格组件 Slime,可以作为 Istio 的 CRD 管理器,旨在通过更为简单的配置实现 Istio/Envoy 的高阶功能。
据项目官方介绍,推出 Slime 项目是为了弥补服务网格 Istio 在面对本地限流、黑白名单、降级等微服务治理的高阶功能时的不足。
作为当前主流的云原生服务网格项目,Istio 有着一套行之有效的上层抽象,通过配置 VirtualService,DestinationRule 等 CR 可以实现版本分流、灰度发布、负载均衡等功能,但是在面对本地限流、黑白名单、降级等微服务治理的高阶功能时,这套抽象显得力有不逮。
起初 Istio 给出的解决方案是 Mixer,将这些原本属于数据面的功能上升到 Mixer Adapter 中,虽然解决了功能扩展的问题,但其集中式的架构遭到了不少关注者对其性能的质疑。最终,Istio 在新版本中自断其臂,弃用了 Mixer,这就使得高阶功能的扩展成为目前版本的一块空白。
另一方面,Istio 配置是全量推送的,这就意味着在大规模的网格场景下需推送海量配置,为了减少推送配置量,用户不得不事先搞清楚服务间的依赖关系,配置 SidecarScope 做配置隔离,而这无疑增加了运维人员的心智负担,易用性和性能成为不可兼得的鱼和熊掌。
针对 Istio 目前的一些弊端,网易团队开启了 Slime 项目。该项目是基于 k8s-operator 实现的,作为 Istio 的 CRD 管理器,可以无缝对接 Istio,无需任何的定制化改造。Slime 内部采用了模块化的架构,目前包含了三个非常实用的子模块:
- 配置懒加载:无须手动配置 SidecarScope,按需加载配置信息和服务发现信息,解决了全量推送的问题。
- Http 插件管理:使用新的 CRD pluginmanager/envoyplugin 包装了可读性,可维护性较差的 envoyfilter,使得插件扩展更为便捷。
- 自适应限流:可结合监控信息自动调整限流策略,填补了 Istio 限流功能的短板。
Slime 的源码目前已经开放,团队表示项目仍处于早期阶段,希望有更多的 mesher 加入社区或为项目提出建议,帮助完善它。团队后续还会开放更多实用功能在 Slime 中。
猜你喜欢: