首页 > 其他分享 >Sermant:无代理服务网格架构解析及无门槛玩转插件开发

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

时间:2023-12-11 11:33:22浏览次数:40  
标签:插件 代理服务 开发 开发者 日志 Sermant 切面

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

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

Sermant核心机制——插件化

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

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

cke_128.jpeg

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

cke_129.png

Sermant核心机制——类隔离

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

cke_130.png

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

cke_131.png

Sermant插件开发实战Tips

• 基础能力

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

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

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

cke_132.png

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

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

cke_133.png

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

• 进阶能力——统一日志

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

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

cke_134.png

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

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

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

cke_135.png

 

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

 

标签:插件,代理服务,开发,开发者,日志,Sermant,切面
From: https://www.cnblogs.com/huaweiyun/p/17893997.html

相关文章

  • 比较好用的影像导入CAD插件
    一、获取:资源下载二、使用步骤:1、第一步打开CAD软件,命令行输入appload回车2、出现对话框找到影像导入CAD插件.VLX这个文件,点加载,3、在对话框下面出现加载成功,关闭对话框4、在命令行输入INSG回车5、出现对话框,找到需要的影像直接打开即可。注意:影像tif文件和t......
  • ubuntu给终端加代理服务器
    ubuntu给终端加代理访问google.com是否可以访问通curlhttps://www.google.com如果访问不通说明代理服务器没有配置好。使用gedit~/.bashrc打开网络配置gedit~/.bashrc找到文章的最后添加代理exporthttp_proxy='http://127.0.0.1:7890'exporthttps_proxy='http://127.0.0.1......
  • 11.6k star,真的吹爆这款开源插件,太强了!!
    这款插件可以一键将你看到的网页内容统统下载下来,整合到本地作为一个html文件,还可以针对部分内容进行下载,也可以对下载内容添加笔记、文本高亮等。支持目前主流的大部分浏览器。1SingleFile简介如果你直接另存一个html页面的话,很多时候页面内容会变得很乱,部分资源也会没有保......
  • 个人使用的IDEA插件,强烈推荐
    1google-java-format代码自动格式化简介:google-java-format插件可以帮助我们不通过对应的快捷键就可以实现特定方式下自动格式化代码。2Translation简介:翻译插件,支持google翻译、百度翻译、有道翻译。使用:快捷键Ctrl+Shift+O3KeypromoterX简介:KeyPromoterX是一个提示插件......
  • MyBatisX插件使用
    Idea的MyBatisX插件使用——代码生成器一、概述1.1功能描述:自动根据数据库生成以下对象domain:表对应的实体对象mapper:操作数据库的对象mapper.xml:定义了mapper对象和数据库的关联,可以在里面自己写SQLservice:包含常用的增删改查业务处理serviceImpl:具体实现serv......
  • k8s:通过 kubectl 插件 Kubepug 实现集群升级检查(废弃API资源检查)
    背景:k8s的版本迭代很快,虽然主要版本一直没有变化,但是次要版本一直在迭代,2022年一年就发布了三个次要版本,同时不同的次要版本之间API资源一直在变化,有新加入的,也有废弃删除的。不同版本的api资源版本也有不同,往往不是向下兼容的,比如在低版本中API资源版本为v1beta1,而高版......
  • vscode-go语言插件,分析(三)
    goDebugConfiguration.ts配置GoDebugConfigurationProvider实现vscode.DebugConfigurationProvider接口goDebugFactory.ts调试工厂GoDebugAdapterDescriptorFactory描述工厂,实现vscode.DebugAdapterDescriptorFactory接口GoDebugAdapterTrackerFactory跟踪器,能够读取记录......
  • VSCode插件开发:右键点击创建一个文件夹和相应名称的文件
    开发一个输入名称然后创建文件夹和相同文件名的文件那么首先是注册右键点击事件"contributes":{"commands":[{"command":"createuniappfile.createvuefile","title":"CreateUniappFile"}],&qu......
  • Windows系统webp图片预览插件
    Windows系统webp图片预览插件、下载插件并安装软件名称:WebPCodecforWindows(WindowsWebP编解码组件)最新版本:0.19.9(29Jan2020)评可证:Freeware系统要求:WindowsXP/Vista/7/8/10下载地址:WebpCodecSetup.exe(4.9MB)、WebPPhotoshopplug-in(516KB) ......
  • vscode插件开发,使用CustomEditor进行OFD文件预览
    使用js开发,对ofd预览使用的三方库是ofd.js,通过将ofd.js继承到插件里面对点击ofd文件进行预览的效果要实现的效果大致如下:识别*.ofd结尾的文件打开OfdViewer窗口,实现预览ofd文件那么开始了,这里就不详细讲解如何创建vscode插件开发,直接看几个重要的代码,也就是实现的逻辑。......