Sermant 1.2.0 release 版本新特性速览
本文分享自华为云社区《重磅更新!Sermant 1.2.0 release版本新特性速览》,作者:华为云开源。
10月,Sermant社区正式发布了1.2.0 release版本,距离上一次的大版本发布仅三个月。本次新版本带来了多个令人兴奋的新特性,主要包含Sermant Agent框架能力的优化和提升以及新增了流量标签透传插件,将极大地提升用户和开发者的体验,帮助大家将Sermant运用到更多的流量治理场景中。
(Sermant官网:https://sermant.io/zh)
一、Sermant Agent框架能力提升
1.2.0 release版本中,对诸多能力进行了优化或新增,包括支持Sermant Agent框架和插件的动态安装和动态卸载、支持动态配置服务对接Nacos配置中心、更好的类隔离能力、JDK11和JDK17的兼容等。在框架加持这些新版本特性后,可以使Sermant的开发和体验更加友好,同时也拓展出更多的Sermant的使用场景。
1.1 Sermant Agent框架以及插件的动态安装/卸载
新版本中,Sermant将原本默认的通过premain来启动Sermant Agent的方式改进为支持premain和agentmain两种方式启动,其中premain方式与此前版本使用方式一致。
新增的agentmain启动方式是为了支持Agent和插件的热部署方式,premain方式需要在应用程序启动时挂载Agent,而agentmain可以在应用程序运行时进行动态挂载Agent,也可以在运行时动态地卸载Sermant,在故障注入等需要动态进行字节码增强的场景中起到非常重要的作用。动态安装/卸载插件和动态安装/卸载Agent一样,用于服务治理场景中需要在应用运行时动态添加或移除额外功能的场景,例如在故障注入场景中通过动态地挂载不同的插件来实现注入不同的故障类型。
下图为Sermant的热插拔能力的示意图,在初始状态可以通过动态挂载Agent的能力安装字节码增强框架,然后可以通过动态挂载/卸载插件的能力在运行态增减所需服务治理能力,也可以直接将整个Agent进行卸载。
图 - Sermant Agent框架和插件的热插拔示意图
此项关键能力的更新使得Sermant的部署形态更加多样,适用场景更加广泛,使用者不再仅限于在启动时再挂载Sermant,业务可以实现不停机注入服务治理能力。
1.2 支持动态配置服务对接Nacos配置中心
动态配置中心为Sermant动态配置服务的配套组件,动态配置服务允许Sermant从动态配置中心拉取配置以实现丰富多样的服务治理能力。以往版本Sermant的支持的动态配置中心有Zookeeper和Kie,新版本适配了nacos的数据模型,支持从nacos下发配置并监听。
- Sermant动态配置模型基于Nacos配置中心的实现方式
Nacos自身的数据模型如下,通过Namespace、Group、Date ID能够定位到一个配置集:
图 - Nacos数据模型
Sermant动态配置的Group(分组信息):将Nacos的Namespace(命名空间)和配置分组(Group)组合起来作为Sermant的动态配置模型的分组信息。
Sermant动态配置的Key(配置项名称): Nacos的配置集ID(Data Id)作为Sermant的动态配置模型的配置项名称。
配置集(Data Id)可以通过不同的Namespace(命名空间)和配置分组(Group)进行隔离,不同的Namespace(命名空间)和配置分组(Group)下可以存在名称相同的配置集(Data Id)。保证Sermant通过不同的Group(分组信息)来对配置项进行隔离,同一个Group(分组信息)下可以有相同Key(配置项名称)。
- 使用Nacos作为Sermant的动态配置中心
将Sermant 1.2.0 release包中的/agent/config/config.properties配置文件中的相关配置修改如下,即可使用Nacos作为动态配置中心:
- # 指定配置中心的服务端地址,修改为nacos的地址
- dynamic.config.serverAddress=127.0.0.1:8848
- # 指定动态配置中心类型, 取值范围为NOP(无实现)、ZOOKEEPER、KIE、NACOS
- dynamic.config.dynamicConfigType= NACOS
Sermant中动态配置的模型和接口是统一抽象的,开发者对于动态配置节点的监听器的开发与此前版本保持一致。动态配置中心在Sermant中的角色和作用可以阅读相关博客《如何利用动态配置中心在JavaAgent中实现微服务的多样化治理》。
1.3 更好的类隔离能力
Sermant在1.2.0版本中对此前的类隔离框架和机制做了全面的优化,不仅保证了不向宿主服务引入类冲突问题,避免在开箱即用时对宿主服务造成负面影响,同时也了保障框架与插件、插件与插件之间不会引入类冲突问题,避免插件开发者因为和其他服务治理插件产生类冲突问题而苦恼。
- 新版本的类隔离结构
图 – Sermant的类隔离结构
- SermantClassLoader,破坏双亲委派,用于加载Sermant框架核心逻辑,并在AppClassLoader下隔离出Sermant的类加载模型。避免受到宿主服务自身复杂类加载结构的影响,减少应对不同类加载结构服务的适配需求。
- FrameworkClassLoader,破坏双亲委派,主要作用是隔离Sermant核心能力所引入的三方依赖,避免向宿主服务及服务治理插件引入类冲突问题。目前的主要场景 ①用于隔离Sermant的日志系统,避免对宿主服务的日志系统产生影响 ②隔离Sermant框架的核心服务(心跳、动态配置、统一消息网关)所需三方依赖。
- PluginClassLoader,遵循双亲委派,主要用于隔离Sermant各服务治理插件,避免不同服务治理插件之间产生类冲突问题。
- ServiceClassLoader,破坏双亲委派,主要用于隔离插件中的依赖,通过该类加载器加载插件服务的相关lib(插件服务会在插件加载时被Sermant初始化),开发者可任意引入三方依赖,无需关心对插件主逻辑的影响。
其中的PluginClassloader和ServiceClassloader不仅在类隔离中起到至关重要的作用,更是一种长远的考虑,为每个插件设计独立的类加载器,使得Sermant可以平滑的进行插件动态安装&卸载以及插件热更新。更详细的类隔离机制的介绍可以参阅相关博客《Sermant类隔离架构解析——解决JavaAgent场景类冲突的实践》。
二、插件能力提升
2.1 流量标签透能力
在微服务架构中,流量标签用于对流量进行标记和分类,能够在微服务之间实现更精细的路由、负载均衡和流控等流量治理能力。Sermant新版本插件部分本次主要新增了流量标签透传插件。该插件着手于解决流量标签在各种不同传媒介中(通信协议、进程内外)进行透传的问题,基于此能力可以实现全链路灰度发布、基于流量标签的流量控制等高阶服务治理功能。
- 流量标签透传插件简介
Sermant对于流量标签透传分为两大类:跨进程透传和进程内透传。跨进程透传是指在不同的服务实例进程中传递流量标记,例如http请求的客户端和服务端。进程内透传是指在一个服务实例的进程内传递流量标签,包括线程内传递和跨线程传递。
图 – Sermant中http/rpc请求的标签透传过程
图 – Sermant中消息队列的标签透传过程
新版本发布的流量标签透插件实现了上述两类标签的透传,并且支持了http协议、rpc协议、消息队列中间件,目前支持的组件包括Apache HttpClient、OKHttp、Dubbo、GRPC、Kafka等。
- 流量标签透传插件使用方式
该插件的使用支持静态配置和动态配置,只需将需要透传的流量标签做好配置,标签即可在全链路中进行透传,具体使用方式可参考官网使用文档。
流量标签透传作为JavaAgent中进行流量治理的基础能力,可以将其运用在全链路灰度发布、标签流控等复杂的流量治理场景,相关介绍可以参阅相关博客《流量治理的基石——基于字节码增强的全链路流量标签透传》
三、总结
本次更新主要带来了Sermant Agent框架和插件的动态挂载/卸载的支持、动态配置服务对nacos的支持、类隔离机制的优化以及流量标签透传能力的支持等。基于上述能力,Sermant可以在诸如故障注入、流量治理、动态配置等服务治理的场景发挥更关键的作用。
结束语
Sermant作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。
- Sermant 官网:https://sermant.io/zh
- GitHub 仓库地址:https://github.com/huaweicloud/Sermant

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
何为“玲珑”,它从哪里来又要到哪里去?| 带你一文揭秘
2020 年,借鉴沙箱/容器的技术方案,玲珑原型的核心开发悄然完成; 2022 年,作为 deepin 发行版未来的核心特性,玲珑随 deepin v23 预览版共同发布,初步具备可用性; 2023 年,我们将玲珑项目代码、玲珑官网、玲珑商店等资产捐赠给开放原子开源基金会,欲汇聚更多产业力量,携手推动玲珑发展,加速生态建设...... 那么到底何为“玲珑”?它从哪里来?又要到哪里去?接下来,此文为你一一揭秘。 前言:软件包管理器的演进 Linux 操作系统一直以其开源性质和灵活性而闻名,而要使 Linux 系统能够顺利安装并运行所需的软件,最关键的部分就是软件包管理器。 顾名思义,Linux 软件包管理器是一种在 Linux 操作系统上用于安装、更新和卸载软件包的工具。它的历史可以追溯到上世纪 90 年代,此时 Linux 正处于起步阶段,软件的安装必须手动下载源代码并编译,这对非技术用户来说是一项繁琐且困难的任务。 这种情况下,先后催生了 dpkg 和 rpm,然而由于不能自动解决依赖关系,其使用起来依旧不便。 直到 Debian 的 apt、Red Hat 的 up2date 的发...
- 下一篇
苹果 M3、M3 Max 芯片首个 Geekbench 跑分出炉
iMac 2023 已经出现在了 Geekbench 上。这款 iMac 搭载了 4.05 GHz 的基础版 M3 芯片,配备 16GB 内存,运行 macOS 14.1,单核最高 3076 分,多核 11863 分。 作为对比,目前 Geekbench 中收录的 Mac 单核最高分为 Mac Studio (2023) 的 2803 分(M2 Max),多核为 21316 分(M2 Ultra)。 M3 Max 的 Geekbench 初步跑分结果显示,16 英寸 MacBook Pro 与配备 M2 Ultra 的 Mac Studio 不相上下。 配备 M3 Max 的 16 英寸 MacBook Pro 要到 11 月中旬才能与用户见面,但已经有人开始进行基准测试。初步结果显示,苹果的 M3 系列的高阶型号性能进步惊人。 viahttps://browser.geekbench.com/search?q=m3+max 在 GeekBench 跑分库上,搭载 M3 Max 芯片的设备标识符为 Mac15,9,目前共有 4 条信息,其中一条单核成绩跑分为 2943 分,多核为 21...
相关文章
文章评论
共有0条评论来说两句吧...