正式发布后的一年,我们都做了什么? | Sermant 2023 年度总结
一、前言
2023 年,Sermant 积极活跃在开源社区的各个角落,您也许在开源峰会、在大学校园、在线上直播、在开源社区的博客中看到过我们的身影,也许您的项目已经在生产环境上已经接入了 Sermant。如果您还不了解 Sermant,现在在浏览器搜索框输入 JavaAgent 和服务治理,可以看到排名靠前的都是与 Sermant 相关的搜索结果,因为我们已深耕这片领域。
Sermant 是基于 Java 字节码增强技术的云原生无代理服务网格,2022 年底,我们在社区正式发布了 1.0 版本,宣告 Sermant 首个稳定的正式版本的面世。我们以非侵入式地为业务应用提供服务治理功能为出发点,建立了 Sermant 项目的雏形。从开发效率、用户友好等角度,我们一直在构建和优化项目的框架和机制。1.0 版本后的 Sermant 已经具备了非侵入、高性能、插件化的核心优势,并且开源生态中已经提供了服务注册、标签路由、流量控制等插件能力来应用于典型的服务治理场景。同样在 2022 年底,Sermant 官网 也正式上线,以让开发者和用户更好地了解、使用、开发 Sermant 为目标,详尽地提供了 Sermant 的快速入门、用户使用手册、开发者指南、博客分享等内容。另外,我们还加入了 CNCF LANDSCAPE ,在云原生 Service Mesh 领域占据了一席之地。
2022 年底是 Sermant 种下的种子刚刚发芽的阶段。2023 年,Sermant 在技术能力构建、开源生态构建、开源可信能力构建等方面加速投入,开始野蛮生长。
二、技术能力构建
在发布 1.0 版本之后,Sermant 一直保持了较高的项目活跃度。2023 年,Sermant 发布了1.1、1.2、1.3三个大版本和若干个补丁版本,从框架类隔离机制、动态插拔 Agent 和插件、动态配置对接 Nacos、服务和 Agent 的可观测性、流量治理能力、服务可用性治理能力等方面做了大幅的更新或增强。我们希望通过不断地版本更新迭代,将 Sermant 打造成一个易用性好、兼容性强、扩展性高、性能优秀的一个开源项目,为社区带来极致的服务治理体验。
图 – Sermant 最新 1.3.0 版本 Release Note
2.1 可观测性能力提升
2023 年,Sermant 在对自身的可观测性上得到了重要的提升,尤其是边车自观测能力以及字节码增强的观测能力。
2.1.1 Sermant 自观测能力
针对可观测性,我们建立了对 Sermant 运行状态及服务治理能力状态的监控机制,用户能够更直观,更清晰的看到 Sermant 进行服务治理的过程,可用于快速了解 Sermant 运行状态及当前已生效的服务治理能力,使服务治理有迹可循。用户通过访问 Backend,可在前端页面直接看到 Sermant 运行状态,服务治理能力触发的事件以及 Sermant 服务运行期间产生的警告、错误等日志信息。 Sermant 的自观测能力解决了 JavaAgent 难以运维观察的问题,对使用 Sermant 来进行微服务治理的用户来说很好的实现了 Agent 的管理。
图 – Sermant Backend 页面展示 Agent 上报的信息
2.1.2 字节码增强效果的观测能力
另外,由于 Sermant 是基于字节码增强技术来实现的,我们在字节码增强的可观测性上也做了提升。第一种方式属于静态配置,启动宿主应用前,可以在配置文件中开启字节码增强日志打印的开关以及输出字节码增强后的 class 文件,可以直观地对增强后的类进行查看。第二种方式属于动态查看字节码增强信息,我们在 Sermant 启动完成后,运行官方提供的 AgentLoader,并传入参数下发查询增强信息的指令 command=CHECK_ENHANCEMENT,即可在日志中查看到 Sermant 已执行的增强信息,包括挂载了哪些插件和增强了哪些类的方法。
2.2 框架能力提升
在框架能力方面,2023 年 Sermant 不仅全面优化了类隔离机制,也正式支持了 Agent 和插件的动态热插拔能力,对于适用广泛的配置中心 Nacos 也实现了支持。
2.2.1 热插拔能力
Sermant 最新版本目前支持 premain 和 agentmain 两种方式启动。agentmain 启动方式可以支持 Agent 和插件的热部署方式,在故障注入等场景中可以在服务不停机状态下可以实现多次动态注入和移除各类故障。另外,Sermant 的插件也支持动态挂载和卸载。
下图为 Sermant 的热插拔能力的示意图,在初始状态可以通过动态挂载 Agent 的能力安装字节码增强框架,然后可以通过动态挂载/卸载插件的能力在运行态增减所需服务治理能力,也可以直接将整个 Agent 进行卸载。
图 – Sermant 的热插拔机制
2.2.2 配置中心支持 Nacos
动态配置中心为 Sermant 动态配置服务的配套组件,动态配置服务允许 Sermant 从动态配置中心拉取配置以实现丰富多样的服务治理能力。以往版本 Sermant 的支持的动态配置中心有 Zookeeper 和 Kie,新版本适配了 Nacos 的数据模型,支持从 Nacos 下发配置并监听。动态配置中心在 Sermant 中的角色和作用可以阅读相关博客《如何利用动态配置中心在JavaAgent中实现微服务的多样化治理》。
2.2.3 更好的类隔离能力
Sermant 在 1.2.0 版本中对此前的类隔离框架和机制做了全面的优化,不仅保证了不向宿主服务引入类冲突问题,避免在开箱即用时对宿主服务造成负面影响,同时也了保障框架与插件、插件与插件之间不会引入类冲突问题,避免插件开发者因为和其他服务治理插件产生类冲突问题而苦恼。经历多次迭代,如今 Sermant 的类隔离架构已可以轻松的应对各种复杂的类加载环境。更详细的类隔离机制的介绍可以参阅相关博客《Sermant类隔离架构解析——解决JavaAgent场景类冲突的实践》。
2.3 服务治理能力提升
在插件层面,2023 年我们对现有插件做了不少优化,例如流控插件引入基于系统规则的流控能力以及基于负载的自适应流控能力;在标签路由插件对路由规则模型进行了统一和以及增加了链路染色能力。另外,Sermant 还新增了流量标签透传插件、消息队列禁止消费插件、离群实例摘除插件等,应用于服务治理的各个典型场景。各插件的介绍可以参考官网的插件使用手册。
三、客户案例
Sermant 起源于华为云,目前在华为云内部的众多云服务中得到了广泛的应用。
在微服务引擎 CSE 中,基于 Sermant 实现了非侵入接入服务注册发现、全链路灰度等功能,完成其他云厂商到华为云的微服务搬迁。该场景下用户在不修改业务代码的前提下,完成了搬迁工作,极大地降低了开发和运维成本。
在华为云混沌工程领域中,实现了基于 Sermant 的故障注入、流量录制回放等能力。这是 Sermant 动态热插拔能力的典型适用场景。开发和运维人员可以在应用运行的过程中利用热插拔能力将包装了不同故障模式的插件热加载至业务进程中,以测试系统的可靠性和稳定性。动态卸载能力的支持也使得我们可以在一次运行测试中多次注入各种故障。
在华为云 CPTS 云服务中,基于 Sermant 框架开发的全链路压测能力构建了零业务代码侵入的性能压测一体化平台的能力。不仅实现了流量染色的标记和传递,还支持外部服务 mock 转发、影子库、压测流量接入的统一控制等功能,为全链路压测平台提供了核心的基础能力。
此外,不少产品也已经实现了将现有的 SDK 能力向 Agent 能力做迁移,为服务治理功能提供了新的非侵入一键接入的选择。
2023 年 Sermant 在众多开源生态用户的真实场景中也实现了落地。某私域电商用户基于 Sermant 开源框架自研了若干插件,在监控、故障演练等场景中应用于 600+生产环境实例中。某网约车平台在架构优化上,引入 Sermant 进行改造,实现服务的自动发现和 API 管理能力,从零散管理到统一管控,提供统一的微服务注册和治理中心。某汽车领域用户使用 Sermant 开源仓库的服务注册插件实现了 200+实例以零业务代码修改的方式从 A 云无损迁移到 B 云。未来还有一些开源生态用户将基于 Sermant 将 SDK 能力逐步向 Agent 改造,将服务治理能力统一收编至 One Agent。这些例子充分证明 Sermant 在 JavaAgent 服务治理领域能有效的为企业用户减少服务治理能力的接入成本以及微服务架构的改造成本,并且企业用户还可自定义开发插件适配自身场景,将服务治理功能的粒度细化到插件中,按需引入互相隔离。
如果您也是 Sermant 的生态用户,欢迎您在我们 Github 仓库的 issue中登记您的使用情况,一起打造繁荣的 Sermant 社区生态。我们不仅会为您提供快速支持和响应,建立专属支持渠道,帮助您更高效地实施和落地 Sermant 项目,也会根据公司的使用情况形成丰富的 Sermant 案例库,帮助企业进行落地实践宣传。
四、开源社区建设
4.1 线下会议和活动
2023 年 5 月底 GOTC 全球开源技术峰会上,Sermant 作为新锐项目首次在此类开源大会活动中亮相,在现场开设了活动展台并在峰会举办期间发表了快闪演讲,吸引许多开发者在 Sermant 展台和演讲台下围观。此后,Sermant 越来越频繁地在参与了各个线下开源交流会议及活动。例如,在国内开源领域有着重要影响力的开放原子基金会举办的 OAGS 开放原子全球开源峰会、ICT 领域的华为开发者大会、云原生领域的顶级国际开源会议 KubeCon China、汇聚众多开源大咖的 CosCon 中国开源年会等。我们历经中国的东南西北方向,在北京、上海、成都、东莞开办开源展台和在分论坛分享议题,面对面地和广大开发者进行线下交流,扩大了 Sermant 在开源、云原生、微服务治理、服务网格领域的生态影响力。
图 – 中国开源年会 Sermant 展台现场
4.2 线上直播和视频发布
2023 年,Sermant 借助华为云开发者联盟 DTSE TechTalk 直播平台,完成了多次在线技术交流直播,以面对面的方式和关注 Sermant 的开发者进行交流互动,普及了 Sermant 为微服务治理领域带来的价值,在线回答了不少开发者关心的技术问题。直播活动吸引了数万开发者的围观,拉进了和社区开源开发者的距离。
此外,Sermant 创建并运营了 Bilibili 视频网站账号 ,不仅发布了首支 Sermant 项目宣传视频和以往开源峰会参会的演讲视频,也自制了功能演示系列视频,以普通用户的视角带领大家体验如何把 Sermant 应用在具体的治理场景中。该视频账号将持续为大家带来更多的 Sermant 动态,第一时间和开发者们分享 Sermant 的活动和技术相关视频,敬请期待。
4.3 可信开源项目认证
开源可信是 Sermant 重点关注的方面,特别在软件安全性上,每个版本发布前都会进行安全漏洞扫描并处理扫描问题。
2023 年底,Sermant 参与了中国信通院主导的开源可信认证测试。在开源项目的许可证合规性、软件安全性、软件活跃度、技术成熟度、服务支持力、软件兼容性六个方面 Sermant 都通过了认证,信通院为 Sermant 颁发了可信开源社区成熟度能力检验证书,也是对我们在开源可信方面投入的认可。
图 – Sermant 领取可信开源项目认证证书现场
信通院开源可信认证相关新闻动态——《中国信通院发布2023可信开源系列评估结果》。
五、写在最后
开源代表了开放和共享,2023 年 Sermant 积极拥抱社区,以各种方式为大家传递我们的开源理念和技术积累。Sermant 开源社区每一个人的付出才铸就了现在稳定的框架底座能力、丰富的服务治理能力以及越来越开放和繁荣的社区生态。未来我们将继续把 Sermant 打造成更易用、性能更好、能力更强的开源项目,也真诚地欢迎越来越多的开发者和用户加入到我们的行列!
----------------------------------------------------------------------------------
Sermant 作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。
• Sermant 官网:https://sermant.io
• GitHub 仓库地址:https://github.com/huaweicloud/Sermant
• 扫码加入 Sermant 社区交流群
版权声明: 本文为 InfoQ 作者【华为云开源】的原创文章。
原文链接:【http://xie.infoq.cn/article/6095958c5e2d9aeed3f912b72】。未经作者许可,禁止转载。
评论