一、前言
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 社区交流群