Slime 是网易数帆旗下轻舟微服务团队开源的服务网格组件,它可以作为 Istio 的 CRD 管理器,旨在通过更为简单的配置实现 Istio/Envoy 的高阶功能。目前 slime 包含三个非常实用的子模块:
- 配置懒加载:无须手动配置 SidecarScope,按需加载配置和服务发现信息
- Http 插件管理:使用新的 CRD pluginmanager/envoyplugin 包装了可读性,可维护性较差的 envoyfilter,使得插件扩展更为便捷
- 自适应限流:结合监控信息自动调整限流策略
架构
Slime架构主要分为三大块:
- slime-boot,部署slime-module的operator组件,通过slime-boot可以便捷快速的部署slime-module。
- slime-controller,slime-module的核心线程,感知SlimeCRD并转换为IstioCRD。目前slime-controller已经细化为各个模块的controller,slime作为framework提供通用的基础能力。
- slime-metric,slime-module的监控获取线程,用于感知服务状态,slime-controller会根据服务状态动态调整服务治理规则。指标来源支持Prometheus或者Accesslog。
其架构图如下:
使用者将服务治理策略定义在CRD的spec中,同时,slime-metric获取关于服务状态信息,并将其记录在CRD的metricStatus中。slime-module的控制器通过metricStatus感知服务状态后,将服务治理策略中将对应的监控项渲染出,并计算策略中的算式,最终生成治理规则。