写点什么

Sermant:无代理服务网格架构解析及无门槛玩转插件开发

  • 2023-12-11
    广东
  • 本文字数:1764 字

    阅读完需:约 6 分钟

Sermant:无代理服务网格架构解析及无门槛玩转插件开发

本文分享自华为云社区《Sermant:无代理服务网格架构解析及无门槛玩转插件开发》,作者: 华为云社区精选 。


本期直播的主题是《从架构设计到开发实践,深入浅出了解Sermant》,华为云云原生 DTSE 技术布道师、华为云高级工程师、Sermant 开源社区 PMC 核心成员栾文飞,为广大开发者详细从架构设计角度介绍了 Sermant 的类加载器架构和插件化机制,并在实战中从基础能力开发,到进阶使用统一动态配置能力、统一日志能力一步步完成插件开发。

Sermant 核心机制——插件化


Sermant 分为两层,Sermant 框架层和 Sermant 服务治理层,Sermant 框架提供了一系列的 API 用于插件开发者可以快速进行服务治理插件的开发。


服务治理层是由多种不同的服务治理能力组成,包含流量控制、标签路由等都是被包装在不同的插件中。其中还包括 Backend 可用于一些状态展示和事件监控管理。



Sermant 的插件化机制中得益于 Java 的 SPI 机制,在很多高可扩展的的项目中,都会利用 SPI 去加载自己的扩展,Sermant 在框架中定义插件声明接口,用于加载不同的服务治理插件,插件开发者只需要按照接口契约,即可轻松将插件接入 Sermant。


Sermant 核心机制——类隔离


Sermant 将框架、插件、微服务之间进行了全面的类隔离,避免框架和插件之间、插件与插件之间以及 Sermant 与微服务之间出现类冲突问题,并且从开发者的视角来看,服务治理能力开发中对类隔离能力无感知,且无需担心类冲突问题。



除此之外,在 Sermant 的类加载结构中还有一个很重要的机制,在服务治理插件的开发过程往往会利用到宿主服务的一些类,如果盲目的进行隔离,将会在开发中引入大量的反射逻辑,这会极大的影响执行性能。所以 Sermant 类加载结构中添加了一个局部类加载机制,可以允许插件在切面出使用切面类的类加载器对用到的宿主类进行类加载,从开发者视角来看,服务治理能力开发中,避免复杂的反射操作,开发效率提升巨大。


Sermant 插件开发实战 Tips


• 基础能力


Sermant 服务治理插件简单来讲就是一系列切面的集合,最终完成了复杂的治理能力。在面向切面编程时,有两个核心的概念,即 Join point(切点)——指定切面的横切位置;Advice(通知)——切面执行的具体行为。对应 Sermant 的插件开发中也有逻辑与之对应,在 Sermant 中声明切面位置的称之为插件声明,执行切面逻辑的称之为拦截器。


Sermant 的插件声明可以基于类名、超类、注解等进行类定位,并通过方法名、类型、参数、返回值等进行方法定位,定位完成后进行字节码增强。


Sermant 的拦截器提供了 Before、After、Throw 三个关键的生命周期,并在其上提供了形如跳过方法执行,修改方法参数,修改方法返回,修改异常抛出等通用能力。



• 进阶能力——统一动态配置


Sermant 提供了一种基于分层模型设计的配置管理方案,它的核心组件包括 Group 和 Key。Sermant 通过不同的 Group(分组信息)来对配置项进行隔离,使配置管理更具灵活性和可扩展性;同时,通过 Key 对配置项进行具体属性的标识,实现了对配置项的精准控制和高效维护,Sermant 的模型概念在各主流配置中心中均有对应。



最重要的一点,Sermant 为开发者和使用者屏蔽了配置中心的差异,可以无需修改任何代码,就可以让 Sermant 对接多种配置中心。插件开发者,只需要通过 Group 和 Key 进行配置的划分,无需了解各配置中心的实际字段,就可以开发出不依赖配置中心的动态服务治理能力。


• 进阶能力——统一日志


Sermant 日志开发者在使用统一日志时,通过 JUL 接口来构造日志即可,无需再依赖其他第三方日志门面依赖,仅需使用 Java 原生日志接口,并且 Sermant 提供的统一日志是和微服务完全隔离的,避免了边车日志系统对微服务日志系统带来不良的影响。


除此之外,Sermant 中改造了日志处理器,针对高级别的日志进行了监控,可以配置将高级别日志进行异常的上报,可以第一时间发现边车运行的异常状态,无需开发者进行二次开发。


Follow me,一起动手实战“插件开发”


在开发实战环节,带领开发者开发了一个简单的监控能力,针对特定的类和方法进行监控,通过定义插件声明和拦截点,就可以快速完成一个简单监控插件的开发。


在基础能力完成后,又通过动态配置的方式,控制了监控能力的开启和关闭,并且通过 Sermant 统一日志,将异常场景所产生的日志进行了监控,通过简单的几个步骤,就可完成一个非侵入的监控组件,可见 Sermant 的插件开发学习曲线对开发者非常友好。



点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 5
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
Sermant:无代理服务网格架构解析及无门槛玩转插件开发_云原生_华为云开发者联盟_InfoQ写作社区