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为例,
升级前:
<dependency>
<groupId>com.huaweicloud.sermant</groupId>
<artifactId>sermant-agentcore-core</artifactId>
<version>1.4.1</version>
</dependency>
升级后:
<dependency>
<groupId>io.sermant</groupId>
<artifactId>sermant-agentcore-core</artifactId>
<version>2.0.0</version>
</dependency>
另外,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损耗。
- 基于Sermant框架开发插件可以实现比Envoy更丰富的治理能力,可扩展性更强。
- 更低的架构复杂度可以带来更低的部署成本。
基于xDS协议的服务发现的开发者手册请参考官方文档基于xDS协议的服务发现。
2.2 预过滤启动加速机制
为了减少挂载Sermant带来的额外启动耗时,减轻Sermant对宿主服务整体启动时长的影响,Sermant 2.0.0版本新增了预过滤启动加速机制。该机制允许宿主应用程序在正式启动前挂载Sermant进行预过滤,在开启Sermant预过滤开关时,宿主应用程序挂载Sermant会生成过滤文件,过滤文件包含宿主应用程序不需要匹配和增强的类名。在正式启动时,Sermant会获取预过滤生成的过滤文件,并在字节码增强的匹配过滤器中忽略它们,可以大幅节省启动时间,尤其对于CPU和内存资源较为紧张的场景,优化效果更为明显。
2.3 动态挂载能力提升
Sermant 2.0.0版本提升了动态挂载能力,支持用户自定义输入参数。后续用户在使用动态挂载能力挂载Sermant时,可以按照自己的需求添加额外的参数,并可以在插件中获取。例如采用如下的方式传输自定义参数:
command=INSTALL-PLUGINS:monitor,key1=value1,key2=value2
三、 Sermant Backend治理能力提升
3.1 新增配置管理
为了让Sermant的服务治理功能能够更好的可视化管理,Sermant 2.0.0版本中Sermant Backend组件新增了插件的动态配置管理功能。用户访问Sermant Backend页面,不仅可以查看Sermant的运行状态,还可以进行配置管理的相关操作。用户可以在页面上更方便的管理插件配置,调整微服务的治理规则。
配置管理支持对开源插件和用户自定义插件的动态配置进行增删改查,目前配置管理能力支持Nacos、Zookeeper、Kie三种配置中心。以下图片展示了Sermant Backend配置管理的部分能力。
- 查询插件配置
- 新增插件配置
3.2 新增英文版本
在Sermant 2.0.0版本之后,Sermant Backend已支持英文版本。用户可以在页面上选择自己要使用的语言类型。英文版页面效果如下所示:
四、 总结
本次版本更新主要调整了项目所属组织,新增了基于xDS协议的服务发现能力、预过滤启动加速机制、Sermant Backend的配置管理能力,实现了和开源技术生态更好的结合以及Sermant的使用体验的优化。同时本次版本更新对Sermant框架存在的已知问题和部分功能进行了修复和优化,提升了Sermant的稳定性。
在2.0.0版本发布后,Sermant将进一步提升开源技术生态的建设,更好的和云原生技术进行有机结合。我们也欢迎更多的开源开发者和用户一起参与开源社区的共建,在社区中担任更重要的角色。
Sermant 作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。
- Sermant 官网:https://sermant.io
- GitHub 仓库地址:https://github.com/sermant-io/Sermant
- 扫码加入 Sermant 社区交流群
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。