写点什么

新特性速览! Sermant 2.1.0 版本重磅发布

作者:华为云开源
  • 2024-10-12
    广东
  • 本文字数:2519 字

    阅读完需:约 8 分钟

新特性速览! Sermant 2.1.0版本重磅发布

9 月底,Sermant 社区正式发布了 2.1.0 Release 版本,本次版本更新为大家带来了许多新的重要特性。在此前版本 xDS 协议支持的基础上,2.1.0 版本新增了路由和负载均衡的 CRD 的支持,同时路由插件也适配了当前的 xDS 协议。此外新增了 RocketMQ 灰度发布插件,首次支持了消息队列的灰度发布;用户体验上,我们对 Backend 的 Agent 管理功能再次进行了完善,现在可以直接在 Backend 上直接对插件进行动态热插拔。


除此之外,本次版本更新还对社区提出的已知问题和部分功能进行了修复和优化。(Sermant 官网:https://sermant.io/

一、Agent 服务治理能力提升

1.1 Sermant 框架新增支持 xDS 协议路由配置

Sermant 框架层基于 xDS 协议实现了路由配置的获取能力,插件可以调用 xDS 路由配置服务接口获取 Kubenetes Service 的路由配置。Istio 通过下发DestinationRuleVirtualService 自定义资源文件下发路由配置。Sermant 基于 xDS 协议和 Istio 的控制平面协议进行通信获取路由配置。


该特性对标准的 VirtualService 和 DestinationRule 下发的路由 header、路径匹配等规则实现了支持。如下所示

apiVersion: networking.istio.io/v1alpha3  kind: VirtualService  metadata:    name:  spring-test-virtualservice  spec:    hosts:    -  spring-test    http:    - name:  "v1-routes"      match:      -  headers:           version:             exact: v1        uri:           exact: /test         ignoreUriCase: false      route:      -  destination:           host: spring-test           subset: v1           port:             number: 8003         weight: 100    - name:  "base-route"      route:      -  destination:           host: spring-test           subset: base           port:             number: 8003
复制代码

1.2 Sermant 框架新增支持 xDS 协议负载均衡配置

Sermant 框架层基于 xDS 协议实现了负载均衡配置的获取能力,插件可以调用 xDS 负载均衡配置服务接口获取 Kubenetes Service 的负载均衡配置。Istio 通过下发DestinationRule自定义资源文件下发负载均衡配置。Sermant 基于 xDS 协议和 Istio 的控制平面协议进行通信获取负载均衡配置。


该特性对标准的 DestinationRule 下发负载均衡策略实现了支持。如下所示

  apiVersion: networking.istio.io/v1alpha3  kind: DestinationRule  metadata:    name:  spring-test-destinationrule  spec:    host:  spring-test.default.svc.cluster.local     trafficPolicy:       loadBalancer:         simple: ROUND_ROBIN    subsets:    - name: v1      labels:         version: v1       trafficPolicy:         loadBalancer:           simple: RANDOM    subsets:    - name:  base      labels:         version: base
复制代码

1.3 路由插件新增对 xDS 协议的支持

在 2.1.0 版本中,路由插件中的 HTTP 调用兼容了 xDS 协议,包括 SpringCloud、HttpClient、HttpAsyncClient、OkHttp、HttpURLConnection,支持通过请求 header 和路径进行流量路由。在混合部署模式下的 Sermant 和 envoy 互调以及 Proxyless 模式下的挂载 Sermant 微服务之间的调用都已支持。


该能力开启与否只需在配置文件中进行开关控制,微服务部署按照 Istio 标准部署方式,只需要把 envoy 注入关闭即可。具体使用方式可参考路由插件说明


1.4 RocketMQ 灰度发布

本次版本新增了消息队列灰度发布插件,在灰度流量的基础上增加环境灰度判断,通过在消息中设置不同属性标签消息以达到灰度效果。该特性可以使用灰度版本的微服务实例中生产者和消费者来生产灰度消息或者消费灰度消息,满足灰度发布在业务场景中定向生产和消费的需要,降低开发风险和试错成本,助力快速敏捷迭代。


在生产消息时,根据当前实例信息是否满足灰度环境及请求是否为灰度请求来设置灰度环境标签、灰度流量标签。


在消费消息时,如果当前实例信息满足灰度环境,那么当前实例归为灰度消费者,并在消费组名称后面拼接灰度环境标签,仅消费灰度环境标签、灰度流量标签消息;如果当前实例信息不满足灰度环境,那么当前实例归为基线消费者,基线消费消息时包含 base、auto 两种种模式:


  • base 模式下,可根据配置过滤灰度组对应的标签的消息,如果没有配置,则默认消费所有消息;

  • auto 模式下,在没有灰度消费组情况下,根据配置过滤灰度组对应标签的消息,然后定期检查当前服务地址、topic 及消费组下是否有灰度消费组正在消费消息,如果存在,则不消费灰度消费组包含的灰度标签消息。


二、  Sermant Backend 治理能力提升

2.1 Sermant Backend 对插件的热插拔管理的支持

在 1.2.0 release 版本后,我们支持了 Sermant Agent 框架和插件的动态安装和动态卸载,使得 Sermant 拓展出更多的 Sermant 的使用场景,例如故障注入等。


此前动态热插拔使用命令或脚本来执行,本次版本更新针对这一特性,在 Sermant Backend 新增了对插件热插拔、热更新管理的可视化支持。用户可以直接在 Backend 的实例状态管理页面中对指定服务实例上的插件进行一键卸载、安装、更新操作,同时还支持批量操作。命令执行成功后,可以在实例状态页面查看已经安装的插件的信息;在事件管理页面也可以收到插件安装、卸载的事件详情。



该特性提升了用户插件动态安装卸载的场景的便利性,丰富了 Backend 的观测管理能力,用户可以直观地对已经挂载 Sermant 的实例做热插拔插件的操作。

三、总结

本次版本还修复了社区中提出的 issue,例如优雅上下线的偶发调用失败问题、Backend 使用 Redis 存储心跳时的查询失败问题等。具体 Release Note 可以查阅GitHub发布页


我们最新发布的 2.1.0 版本深化了 xDS 协议的支持以及在插件中的应用,强化了灰度发布在消息队列场景的使用,并且提升了 Backend 在动态热插拔插件使用时的体验。未来我们将持续演进,给社区带来更多新的内容。


Sermant 作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。

• Sermant 官网:https://sermant.io

• GitHub 仓库地址:https://github.com/sermant-io/Sermant

• 扫码加入 Sermant 社区交流群


用户头像

华为云开源官方博客--携手共建云原生根社区 2023-03-13 加入

还未添加个人简介

评论

发布
暂无评论
新特性速览! Sermant 2.1.0版本重磅发布_开源_华为云开源_InfoQ写作社区