焕新升级,Sermant 2.0.0 release 版本重磅发布!
![焕新升级,Sermant 2.0.0 release版本重磅发布!](https://static001.geekbang.org/infoq/29/29e22c33aeeea7d3ad41f94671dfd093.png)
Sermant 社区在 6 月底正式发布了 2.0.0 release 版本,这次更新中,Sermant 进行了项目所属组织调整并新增了基于 xDS 协议的服务发现能力、预过滤启动加速机制、Sermant Backend 的配置管理能力。所属组织调整使得 Sermant 淡化厂商属性,以全新的姿态更好的拥抱开源。实现基于 xDS 协议的服务发现能力后,Sermant 具备了对接 Istio 的控制平面获取 Kubernetes Service 信息和其对应的具体服务实例信息的能力。预过滤启动加速机制使得 Sermant 能够通过首次运行生成预过滤名单的方式降低后续启动过程的耗时。此外,Sermant Backend 支持了配置管理能力,用户可以在 Sermant Backend 进行配置新增、修改等操作。
本次版本更新之后,不但 Sermant 动态挂载能力支持了自定义输入参数,而且 Sermant Backend 还新增了国际化版本。除此之外,本次版本更新还对 Sermant 框架存在的已知问题和部分功能进行了修复和优化。(Sermant 官网:https://sermant.io/)
一、 项目所属组织调整
为了更好的拥抱开源,更好的体现项目的开放性,我们决定调整项目所属组织,淡化厂商属性。从 Sermant 2.0.0 版本开始,Sermant 项目在 GitHub 所属组织从 huaweicloud 调整到了 sermant-io。我们希望可以有更多的成员加入我们社区,一起为 Sermant 社区的开发建设做贡献,我们也欢迎更多的开发者可以成为 Sermant 社区的 Committer 成员。如何加入社区可以参考我们的官方文档加入社区。
由于项目所属组织的调整,Sermant 2.0.0 版本之后,项目的 groupId 从 com.huaweicloud.sermant 调整为了 io.sermant,使用 2.0.0 版本及之后的 Sermant 插件或者框架时需采用新的依赖信息。以 sermant-agent-core 为例,
升级前:
升级后:
另外,Sermant 相关的类在 import 时的包名也从 com.huaweicloud.sermant 调整到了 io.sermant。更多版本升级兼容性问题,请参考官方文档版本升级兼容性。
二、 Sermant 框架能力提升
2.1 基于 xDS 协议的服务发现
xDS 协议是服务网格之间进行数据通信的设计标准,典型的服务网格如采用 Sidecar 代理模式的 Istio。本次 Sermant 2.0.0 版本支持了 xDS 协议,具备了和 Istio 的控制平面直接进行通信的能力。在此基础上新增了基于 xDS 协议的服务发现能力,允许在 Kubernetes 容器环境下接入服务网格控制平面,获取 Kubernetes Service 信息和其对应的具体服务实例信息。
Sermant 基于 xDS 协议的服务发现能力采用 Istio+Sermant 的 Sidecar 无代理模式部署形态,支持混合部署模式和无代理部署模式,如下图所示。混合部署模式下,Sidecar 代理模式和 Sidecar 无代理模式共存,可以避免修改已有的部署架构,仅新增服务使用 Sidecar 无代理模式即可。无代理部署模式下,所有的业务微服务均使用 Sermant 作为 Istio 的数据平面实现服务发现、路由等能力,当前已经支持了服务发现,未来功能将持续演进。
Istio 环境下使用 Sermant 相较于 Envoy(Sidecar 代理模式)具有以下优势:
Sermant 和业务微服务同进程运行,无需启动额外的 Sidecar 容器,大幅减少网络调用时延和 CPU 损耗。
![](https://static001.geekbang.org/infoq/f6/f684c9e4e8414628446815c8b7e0eed2.png)
基于 Sermant 框架开发插件可以实现比 Envoy 更丰富的治理能力,可扩展性更强。
更低的架构复杂度可以带来更低的部署成本。
基于 xDS 协议的服务发现的开发者手册请参考官方文档基于xDS协议的服务发现。
2.2 预过滤启动加速机制
为了减少挂载 Sermant 带来的额外启动耗时,减轻 Sermant 对宿主服务整体启动时长的影响,Sermant 2.0.0 版本新增了预过滤启动加速机制。该机制允许宿主应用程序在正式启动前挂载 Sermant 进行预过滤,在开启 Sermant 预过滤开关时,宿主应用程序挂载 Sermant 会生成过滤文件,过滤文件包含宿主应用程序不需要匹配和增强的类名。在正式启动时,Sermant 会获取预过滤生成的过滤文件,并在字节码增强的匹配过滤器中忽略它们,可以大幅节省启动时间,尤其对于 CPU 和内存资源较为紧张的场景,优化效果更为明显。
2.3 动态挂载能力提升
Sermant 2.0.0 版本提升了动态挂载能力,支持用户自定义输入参数。后续用户在使用动态挂载能力挂载 Sermant 时,可以按照自己的需求添加额外的参数,并可以在插件中获取。例如采用如下的方式传输自定义参数:
三、 Sermant Backend 治理能力提升
3.1 新增配置管理
为了让 Sermant 的服务治理功能能够更好的可视化管理,Sermant 2.0.0 版本中 Sermant Backend 组件新增了插件的动态配置管理功能。用户访问 Sermant Backend 页面,不仅可以查看 Sermant 的运行状态,还可以进行配置管理的相关操作。用户可以在页面上更方便的管理插件配置,调整微服务的治理规则。
配置管理支持对开源插件和用户自定义插件的动态配置进行增删改查,目前配置管理能力支持 Nacos、Zookeeper、Kie 三种配置中心。以下图片展示了 Sermant Backend 配置管理的部分能力。
查询插件配置
![](https://static001.geekbang.org/infoq/e0/e06528c9c4b81726218cc5e494228cef.png)
新增插件配置
![](https://static001.geekbang.org/infoq/0c/0c9ea61279352cc7f1a7386ee95755f2.png)
3.2 新增英文版本
在 Sermant 2.0.0 版本之后,Sermant Backend 已支持英文版本。用户可以在页面上选择自己要使用的语言类型。英文版页面效果如下所示:
![](https://static001.geekbang.org/infoq/a1/a109c3daa2ccb473db40c3eb28c0ec6a.png)
四、 总结
本次版本更新主要调整了项目所属组织,新增了基于 xDS 协议的服务发现能力、预过滤启动加速机制、Sermant Backend 的配置管理能力,实现了和开源技术生态更好的结合以及 Sermant 的使用体验的优化。同时本次版本更新对 Sermant 框架存在的已知问题和部分功能进行了修复和优化,提升了 Sermant 的稳定性。
在 2.0.0 版本发布后,Sermant 将进一步提升开源技术生态的建设,更好的和云原生技术进行有机结合。我们也欢迎更多的开源开发者和用户一起参与开源社区的共建,在社区中担任更重要的角色。
Sermant 作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。
Sermant 官网:https://sermant.io
GitHub 仓库地址:https://github.com/sermant-io/Sermant
扫码加入 Sermant 社区交流群
![](https://static001.geekbang.org/infoq/ae/ae28be619a05bf9e44845741c38bad63.png)
版权声明: 本文为 InfoQ 作者【华为云开源】的原创文章。
原文链接:【http://xie.infoq.cn/article/d3948d5d3d2b1f3fef9a42aaf】。未经作者许可,禁止转载。
评论