1
头图
作者:李来 华为云高级软件工程师 | 张豪鹏 华为云高级软件工程师

一、前言

Sermant在经历了2022年的萌芽期和2023年的快速发展后,2024年迎来了重要的突破——Sermant正式加入了CNCF(云原生计算基金会),成为云原生开源生态中的重要成员。这一年,Sermant在云原生技术生态建设、框架关键能力提升及服务治理适用场景扩展方面取得了显著进展,进一步巩固了无代理服务网格的核心基础。同时,Sermant也吸引了众多生态用户和开发者的积极参与,使得Sermant社区的活跃度和话题热度显著提高。此外,Sermant凭借其独特的技术优势,帮助企业解决微服务治理领域的诸多问题,助力更多企业在数字化转型中取得成功。

从1.x时代跨越到2.x时代,2024年Sermant焕然一新,以CNCF官方项目的身份继续推动服务治理架构的升级演进和云原生技术的融合发展。现在打开浏览器搜索JavaAgent、服务治理、云原生等关键词,Sermant相关的结果无论是数量还是排名仍然遥遥领先。

下面笔者就为各位关注Sermant社区的读者一起来盘点下Sermant的2024年度总结吧!

二、Sermant正式成为CNCF官方项目

对于Sermant来说,2024年最令人激动的莫过于Sermant正式加入了CNCF,成为基金会的Sandbox项目。

图 – Sermant成为CNCF的Sandbox项目

CNCF是全球顶级的开源基金会,尤其是在云原生领域拥有巨大的影响力。2024年10月,CNCF技术监督委员会(TOC)经过内部决议,以0反对票的结果高票通过了Sermant的加入申请。这标志着Sermant社区进入了全新的发展阶段,我们将携手基金会在云原生领域一起推动云原生技术创新发展和共建开放生态。

CNCF技术监督委员会(TOC)成员王泽锋对Sermant评价道,“服务网格是云原生生态的关键技术之一,Sermant通过字节码增强技术实现了在资源消耗、非侵入性和插件化解耦等维度的平衡,简化了Java应用大规模场景下的服务治理问题,可以降低企业微服务架构的运维和改造成本。期待着Sermant与更多的CNCF项目集成,为云原生生态系统带来更多新的活力。”

为了更好的拥抱开源,把Sermant建设成一个多元包容的开放社区,同时也为了更好的融入CNCF生态,,社区在今年做了一些组织和项目上的调整:

(1)Sermant社区所属组织变更

从Sermant 2.0.0版本开始,Sermant项目在GitHub组织名从huaweicloud变更到了sermant-io。

(2)项目GroupId调整

从Sermant 2.0.0版本开始,项目的groupId和从com.huaweicloud.sermant调整为了io.sermant

另外,为了减少各个地区开发者对Sermant的使用和沟通障碍,社区在开发、交流等都将英语作为主要使用语言。为了方便用户从零开始上手体验Sermant自定义插件开发,加深用户对Sermant开发和运行机制的了解,社区还新增了first-plugin仓库。

Sermant以CNCF官方项目的身份,将携手更多的生态伙伴、用户和开发者,在CNCF的帮助下,共同推动云原生技术的发展,共创繁荣的开源社区。

三、技术能力构建

2024年Sermant发布了1.42.02.12.2四个大版本和若干个补丁版本,在服务网格技术生态、Backend控制台能力、外部Agent管理能力、Sermant自身可观测能力等方面取得了显著的进步。我们希望通过不断地技术创新和融合,将Sermant打造成一个易用性好、兼容性强、扩展性高、性能优秀的开源项目,为社区带来极致的服务治理体验。

图 – Sermant最新2.2.0版本 Release Note

3.1 基于Sermant+Istio的无代理服务网格

为了更好地跟云原生生态Istio进行融合,替代Envoy在服务网格中的数据平面的角色,Sermant从2.0.0版本开始支持了xDS协议,具备了和Istio的控制平面直接进行通信的能力,并在此基础上实现了基于Istio配置的路由、负载均衡和流控能力。

Sermant基于xDS协议的服务治理能力采用Istio+Sermant的Sidecar无代理模式部署形态,无需启动额外的Sidecar容器,显著减少了网络调用延迟和CPU资源消耗,还提供了比Envoy更为丰富的治理功能。同时,它采用了更为简洁的架构设计,极大地降低了部署成本,并提升了系统的可扩展性。例如我们可以通过Sermant的xDS流控能力,实现服务网格中的流量治理。

图 - xDS流控功能实现原理

Sermant对xDS协议的支持介绍和性能表现可以参考博客《基于Sermant实现xDS服务网格,获取15+倍更高性能和更低成本》

3.2 Backend控制台能力提升

3.2.1动态配置管理能力

为了让Sermant的服务治理功能能够更好的可视化管理,Backend组件新增了插件的动态配置管理功能。用户访问Sermant Backend页面,不仅可以查看Sermant的运行状态,还可以进行配置管理的相关操作。

下图为动态配置管理页面,用户可以在页面上更方便的管理插件配置,按照真实运维场景的需求动态地调整微服务的治理规则。动态配置能力在微服务治理场景中的应用可以阅读相关播客《Sermant Backend配置管理功能在微服务治理场景中的应用》

图 – Backend动态配置管理页面

3.2.2插件管理能力

为了方便用户更好的管理自己的插件,Backend新增了对插件热插拔、热更新管理的可视化支持。用户可以直接在Backend的实例状态管理页面中对指定服务实例上的插件进行一键卸载、安装、更新操作,如下图所示。命令执行成功后,可以在实例状态页面查看已经安装的插件的信息;在事件管理页面也可以收到插件安装、卸载的事件详情。

图 – Backend插件热插拔操作页面

插件管理能力在故障注入、插件版本升级等场景可以发挥重要作用,以故障注入场景为例,当用户想注入新的故障时,就可以通过插件动态安装的方式将新的故障注入到宿主应用中以达到目的。

插件管理能力的使用请参考热插拔服务

3.3 外部Agent管理能力提升

在 JVM 启动时,宿主微服务是支持多个 JavaAgent 同时挂载生效的。通过挂载多个 Agent 可以快速集成多种监控、运维、服务治理的功能,不过多个 JavaAgent 同时运行可能会引入兼容性问题。

为了更好的管理多个Agent, Sermant新增支持挂载外部 Agent,并特别对OpenTelemetry做了兼容性支持和验证,在多场景功能需求和模块化解耦等方面具有很大的价值。

例如我们可以在使用 Sermant 实现流量治理的同时挂载OpenTelemetry 实现链路追踪。 通过Backend可以对关键事件进行观测,如下图所示

图 – Backend页面展示挂载外部Agent上报的事件

具体使用方式请参考在Sermant中使用和管理外部JavaAgent 文档

3.4 Sermant自身可观测能力

为满足用户对Sermant运行状态和性能的实时监控需求,以及对插件行为的深入洞察,Sermant新增了指标服务,允许用户通过Prometheus等监控工具收集和展示Sermant的核心指标和插件的自定义指标,目前路由插件已接入指标服务,实现了路由过程可观测的能力。

以router\_request\_count指标为例,该指标用于记录服务路由请求的次数,用于对下游服务实例的负载压力进行观测,效果如下图所示。

图 – Prometheus展示上报的指标

指标服务的使用请参考指标服务文档

3.5 服务治理功能和使用场景扩展

在插件层面,2024年我们对现有插件还做了不少优化,例如路由插件新增了对于dubbo3和SpringBoot3的支持;SpringBoot注册插件新增支持Nacos等。另外,Sermant还新增了数据库禁写、RocketMQ灰度消息等微服务治理能力。通过这些能力Sermant可以在异地多活和全链路灰度等场景发挥更重要的作用。

例如在全链路灰度场景,RocketMQ灰度消息将全链路灰度的应用扩展到了中间件,通过RocketMQ灰度消息,用户可以使用灰度版本的微服务实例来生产或者消费灰度消息,满足灰度发布在业务场景中定向生产和消费MQ消息的需要,降低开发风险和试错成本,助力快速敏捷迭代。

图 – rocketMQ灰度消息在全链路灰度场景下的应用

3.6 其他优化

为了提升用户的使用体验,我们还对Sermant的启动耗时做了优化,开启预过滤启动加速后,由Sermant带来的额外的JVM启动时长降低超过65%,应用自身的启动时长降低超过90%。尤其对于CPU和内存资源较为紧张的场景,优化效果更为明显。预过滤启动加速机制的详细性能测试结果请参考性能基准测试

四、开源社区建设

健康的开源社区是一个开源项目能够持续发展的基础,2023年开始我们和社区的用户和开发者进行了很多线上和线下的交流,2024年我们和社区参与者、贡献者、维护者建立了更有效的沟通渠道,推动了开放共享社区的进一步建设。

4.1 用户案例

得益于Sermant在解决微服务治理问题、架构转型升级等方面的持续耕耘,我们已经积累的众多的社区用户,如零束科技、鲸灵集团、用友汽车、元保科创、马上消费、运车网、多比特、海管家等,覆盖金融、汽车、电商、物流、手游等各个行业。

在多比特小游戏出海场景下,通过集成Sermant成功构建了服务可视化系统,整合服务监控、调用链、日志系统,并持续推动服务治理平台的构建,解决服务治理功能接入难、升级难、开发成本高的问题。目前所有微服务已经全量接入Sermant,后续在框架下对业务无感的持续提升各项能力,独立迭代。

图 - 多比特利用Sermant实现微服务治理

在电商行业的全链路灰度方案设计里,我们的社区用户利用Sermant实现了具有全链路一致性、高扩展性、动态调整能力的方案。公共组件通过插件化形式提供,减少了业务侧频繁进行 SDK 升级的工作量,大幅降低了升级推动的难度与成本。有效节省 20%以上的运维成本和业务沟通成本,提升了整体协同效率。

图 - 某电商企业基于Sermant实现的全链路灰度方案

以上应用案例我们还有很多,在此不一一列出。未来我们将把开源社区用户的落地实践集合成典型案例的系列,给更多的开源社区用户以参考和启发,辐射更多行业来帮助解决企业微服务架构的转型和演进问题,敬请期待。

4.2 开源社区参与和贡献

在过去的一年中,我们通过微信群答疑、Issue解答等方式帮助许多企业用户和开发者解决了在服务治理结构选型和演进、接入Sermant落地实践过程中的关键问题,消除了服务治理场景中的许多痛点。

  

图– 帮助用户和开发者解决使用过程中遇到的问题

在这过程中也吸引了很多开发者和我们一起参与社区代码贡献,不仅帮助我们解决使用中的一些问题,还给我们提供的一些关键特性代码,如SpringBoot注册插件支持Nacos、指标服务等。

为了更加方便倾听社区的声音,与开发者们共同构建开放的社区生态,我们定期组织社区例会,在会议中介绍Sermant的最新动态和后续的发展方向,倾听企业用户的真实诉求,与开发者们共同探讨Sermant下个阶段的技术构建计划。

除了社区例会,我们今年也与一些用户进行了线下的深入交流,给用户阐述Sermant能够给用户带来什么价值,能在哪些用户真实场景下的落地应用。

图 – Sermant与社区用户面对面交流

Sermant开源社区生态的不断完善,也需要感谢社区的各位Maintainer对社区的规划与治理,在此也特别感谢@zwmagic等对社区的杰出贡献。我们定期召开Maintainer会议来讨论后续社区的规划和治理方案,努力共同把Sermant开源社区建设的更好。Sermant社区也希望更多的志同道合的同学能加入进来,成为我们的maintainer和committer等关键角色,一起为社区建设添砖加瓦。

4.4 开源活动

2024年,Sermant运营团队活跃于各大开源峰会和活动中,持续与开发者们进行面对面的深入交流。 例如在2024年11月初举行的中国开源年会上,Sermant开办了活动展台,并在云原生分论坛分享了主题演讲。会议期间,我们还和元保科技、马上消费的社区用户进行了深入交流。

图 – Sermant参加中国开源年会

在2024年12月初举行的华为云开源开发者论坛上,我们不仅与多比特的用户展开了线下的交流,还邀请了多比特的用户分享了小游戏出海场景下基于Sermant的云原生微服务架构演进。

图 – Sermant社区用户多比特在华为云开源开发者论坛演讲

通过与开发者们的面对面交流和,Sermant进一步增强了在开源社区、云原生技术、微服务管理和服务网格等领域的影响力。

4.5 博客文章分享

2024年,Sermant社区发布了17篇技术文章,带来了Sermant最新的版本特性,分享了最新的社区技术动态。我们希望通过在同城双活、一地多活、全链路灰度、故障注入等场景的案例文章来给社区用户带来一些新的思路,以解决相关领域的问题。例如《基于Sermant的全链路灰度发布在汽车行业DMS系统的应用》对全链路灰度的应用场景提供了一些样例。

图 – Sermant社区发布的文章

另外,开源社区的不少开发者和用户也主动投稿,对Sermant的使用、开发、源码等方面分享自己的收获。尤其是“程序员阿越”,从对Sermant的源码解析的角度发布了系列文章,抽丝剥茧地分享Sermant的实现原理。感兴趣的读者可以阅读下博主的相关文章(《Sermant源码(一)agent premain挂载》)。

图 – 用户发表的Sermant系列文章

在此我们也诚挚地向大家征集文章,非常欢迎各位社区成员积极向我们贡献,让更多的人看到您的技术总结和案例分享,传递技术的力量。

五、总结

回顾2024年,我们携手Sermant开源社区的参与者、贡献者和维护者,以“开放共享”为核心理念,共同推动Sermant了社区的快速发展,构建了一个技术与热情并蓄,创新与合作共生的社区生态。

Sermant能够成为CNCF官方项目,是社区每一位成员的共同努力赢得的。展望未来,我们将更加积极推动和社区的沟通协作,营造更加和谐友好的开源社区,并持续进行技术创新和版本迭代。

如果您对Sermant感兴趣或者Sermant已经帮助您解决了实际问题,欢迎加入我们,成为一名Sermanter吧!


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

Sermant——CNCF官方项目。


华为云开源
9 声望3 粉丝