写点什么

正式成为 CNCF 的一员,我们是如何做到的 | Sermant 2024 年度总结

作者:华为云开源
  • 2025-01-24
    广东
  • 本文字数:5399 字

    阅读完需:约 18 分钟

正式成为CNCF的一员,我们是如何做到的 | Sermant 2024年度总结

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

一、前言

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 官方项目。



用户头像

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

还未添加个人简介

评论

发布
暂无评论
正式成为CNCF的一员,我们是如何做到的 | Sermant 2024年度总结_微服务_华为云开源_InfoQ写作社区