Sermant框架下的服务治理插件快速开发及使用指南

Sermant源码(二)如何无侵入接入配置中心 本章基于Sermant2.0.0,分析dynamic-config插件为springboot宿主应用无侵入接入配置中心。过程中涉及Sermant的两个核心通用能力(core):1. 阅读详情

概要

Sermant是基于Java字节码增强技术的云原生无代理服务网格,它具有非侵入、插件化和高性能的特点。通过Sermant核心框架,可以很容易的开发用于各种服务治理用途的插件,包括负载均衡、流量控制、标签路由、标签透传等。在本文中,我们通过案例讲解,说明如何基于Sermant开发一个接口统计调用时长的插件,并用于生产环境的部署。
在第一章,我们讲解如何快速开发一个插件并演示完整的代码开发过程。我们会重点介绍 1) 如何开发一个主模块,针对应用程序进行代码增强;2)如何对插件进行打包构建。
在第二章,我们将会讲解如何通过第一章开发的Sermant程序包进行服务治理。我们将演示宿主应用通过premain方法挂载Sermant Agent,并验证增强效果。
在第三章,我们将介绍Sermant提供的高阶功能。重点包括:1) 通过Sermant Backend对Sermant Agent进行监控;2) 如何使用Sermant日志功能进行日志打印,避免日志功能的类冲突并同时兼顾边车异常状态的可观测性;3) 如何基于动态配置功能实时调整Agent运行时行为。

一、 插件开发

本章,我们将基于Sermant官方提供的插件开发模板,从零开始完整的展示使用Sermant框架开发服务治理插件的流程。

本模板插件需要实现的主要任务是拦截并增强宿主应用的controller接口方法,计算方法执行耗时。

接下来就让我们开始插件开发的代码之路吧!

Sermant官方提供了插件开发的模板代码,执行以下Maven指令拉取:

$ mvn archetype:generate -DarchetypeGroupId=com.huaweicloud.sermant -DarchetypeArtifactId=sermant-template-archetype -DarchetypeVersion=1.2.0 -DgroupId=com.huaweicloud.sermant -Dversion=1.2.0 -Dpackage=com.huaweicloud -DartifactId=first-plugin 

具体的执行步骤和细节可以参考Sermant官网创建首个插件文档。该模板代码预先设计了插件开发的项目结构和pom文件配置,我们可以更好的专注于插件功能的实现。下面展示的代码在此模板的基础上进行开发。我们也在Sermant-example的first-plugin-demo中提供了我们开发后的示例代码。

1.1 插件主模块开发

插件主模块是插件的主要实现,开发者需要在该模块中声明该插件的增强逻辑。

插件主模块需要确定拦截宿主应用的哪些类。本篇文章,宿主应用被拦截的类如下所示:

package com.huaweicloud.template;  
  
@RestController  
public class Controller {  
    @RequestMapping("sayHello")  
    public void sayHello(String name) throws InterruptedException {  
        System.out.println("hello " + name);  
        Thread.sleep(5);  
    }  
}

插件主模块需要完成计算sayHello方法执行耗时的增强逻辑,因此我们首先需要拦截Controller类的sayHello方法,然后在拦截器中对该方法进行前置和后置增强计算方法耗时。

在template-plugin模块创建com.huawei.sermant.template包,本节创建的类均位于此包。

1)创建TemplateDeclarer类,该类继承自com.huaweicloud.sermant.core.plugin.agent.declarer.AbstractPluginDeclarer类,需重写父类的getClassMatcher方法和getInterceptDeclarers方法。用于声明字节码增强拦截的类名和方法名,以及相应的拦截器。代码实现细节如下:

public class TemplateDeclarer extends AbstractPluginDeclarer {  
    @Override  
    public ClassMatcher getClassMatcher() {  
        // 匹配需要拦截的类,具有多种匹配方式,本处使用类的全限定名匹配          
        return ClassMatcher.nameEquals("com.huaweicloud.template.Controller"  );  
    }  
  
    @Override  
    public InterceptDeclarer[] getInterceptDeclarers(ClassLoader classLoader) {  
        // 返回InterceptDeclarer数组,每个InterceptDeclarer确定自己需要拦截的方法和Interceptor  
        return new InterceptDeclarer[]{  
                // 匹配需要拦截的方法,具有多种匹配方式,本处使用方法名称进行匹配  
                InterceptDeclarer.build(MethodMatcher.nameEquals("sayHello"), new TemplateInterceptor())  
        };  
    }  
} 

ClassMatcher类和MethodMatcher类具有多种匹配方法,可以查阅Sermant官网字节码增强文档。

2)创建TemplateInterceptor类,该类需实现com.huaweicloud.sermant.core.plugin.agent.interceptor.Interceptor接口,重写接口的before、after和onThrow方法,以分别实现对拦截点的前置增强、后置增强和异常处理代码逻辑。代码实现细节如下:

public class TemplateInterceptor implements Interceptor {  
   
    private static final String START_TIME = "startTime";  
  
    @Override  
    public ExecuteContext before(ExecuteContext context) {   
        context.setLocalFieldValue(START_TIME, System.currentTimeMillis());  
        System.out.println("已记录方法运行开始的时间");  
        return context;  
    }  
  
    @Override  
    public ExecuteContext after(ExecuteContext context) {  
        long endTime = System.currentTimeMillis();  
        long elapsedTime = endTime - (long) context.getLocalFieldValue(START_TIME);   
        System.out.println("方法耗时:" + elapsedTime + "毫秒");  
        return context;  
    }  
  
    @Override  
    public ExecuteContext onThrow(ExecuteContext context) {  
        return context;  
    }  
}

我们在before方法记录被拦截方法执行开始的时间,在after方法计算被拦截方法执行耗时并打印到控制台。

3)添加增强声明的SPI配置,在工程中template/template-plugin下的资源目录resources中添加META-INF/services目录,并在其中创建名为com.huaweicloud.sermant.core.plugin.agent.declarer.PluginDeclarer的SPI文件,并向其中添加字节码增强声明类的类名:

com.huaweicloud.sermant.template.TemplateDeclarer

到此,插件主模块的代码逻辑开发完成,我们实现了对目标类的拦截,并对被拦截类的方法进行了增强。

1.2 插件打包构建

在该模板目录下执行maven命令对模板插件进行打包构建:

mvn clean package

构建完成后会生成agent/目录,具体文件结构如下所示:

.  
├── common  
├── config Sermant配置文件  
├── core  
├── god  
├── implemant  
├── Application.jar 宿主应用,可以替换为自己开发的应用  
├── sermant-agent.jar Sermant Agent产品,用于宿主应用挂载使用  
└── pluginPackage  
    └── template  
        ├── config 插件配置文件  
        ├── plugin 插件主模块  
        └── service 插件服务模块

现在我们已经完成了一个简单的插件,该插件可以计算被拦截方法的耗时,下面我们将开始展示该插件的效果。

二、 Sermant Agent 使用

2.1 启动Sermant Agent

Sermant默认开启动态配置服务,修改config目录下的config.properties文件关闭动态配置服务:

# 动态配置服务开关  
agent.service.dynamic.config.enable=false  

进入到第一章1.2节构建的产物目录agent/中,通过为宿主服务配置-javaagent指令来通过premain方式启动Sermant Agent:

java -javaagent:sermant-agent.jar -jar Application.jar

控制台打印如下输出说明通过premain方式启动Sermant Agent成功。

[2023-1024T17:26:49.049] [INFO] Loading god library into BootstrapClassLoader.  
[2023-10-24T17:26:49.153] [INFO] Building argument map by agent arguments.  
[2023-10-24T17:26:49.161] [INFO] Loading core library into SermantClassLoader.  
[2023-10-24T17:26:49.162] [INFO] Loading sermant agent, artifact is: default  
[2023-10-24T17:26:49.740] [INFO] Load sermant done, artifact is: default

Sermant Agent还可以通过agentmain方式在宿主应用运行中执行挂载。关于Sermant Agent使用的更多细节请参考Sermant官网Sermant Agent使用手册文档。

2.2 验证

宿主应用已经成功挂载Sermant Agent,本节我们将验证插件增强逻辑是否生效。

执行以下命令发起对宿主应用接口服务的get请求:

curl http://127.0.0.1:8080/sayHello?name=lihua

宿主应用控制台打印的输出内容如下所示:

已记录方法运行开始的时间  
hello lihua  
方法耗时:20毫秒  
ECHO: Best wish to you!

可以看到,Sermant Agent成功拦截到了宿主应用的类并执行了增强逻辑。

三、 Sermant 进阶功能

3.1 Sermant Backend

Sermant Backend包含Sermant数据处理后端模块和前端信息展示模块,旨在为Sermant提供运行时的可观测能力,当前主要包括Sermant Agent心跳信息、上报事件的接收和展示、webhook推送等功能。

Sermant Backend与Sermant Agent配合使用。Sermant Agent挂载在宿主应用中,其作为数据发送端可定时发送当前Sermant Agent的心跳数据(服务名、主机名、实例ID、版本号、IP、时间戳、插件挂载信息)和事件数据(Sermant Agent启停、核心服务启停、字节码增强、日志数据等)。

Backend为非必要组件,用户可按需部署,通过下载Sermant-1.2.0的release包获取Backend组件。解压该release包,进入sermant-agent/server/sermant目录执行以下命令启动Sermant Backend:

java -jar sermant-backend-1.2.0.jar

通过浏览器访问地址http://127.0.0.1:8900/,如果看到如下页面,则说明Sermant Backend启动成功;

Sermant Agent使用Backend需要对Agent的参数进行配置。修改agent(第一章构建的产物目录)/config目录下的config.properties文件。

配置项需修改为:

# 开启心跳服务开关  
agent.service.heartbeat.enable=true  
# 开启统一网关服务开关  
agent.service.gateway.enable=true

参考2.1节启动Sermant Agent,在Backend前端页面可以看到启动的Sermant Agent和挂载的template插件信息:

关于Backend的更多细节请参考Sermant官网Sermant Backend使用手册文档。

3.2 日志功能

日志是在程序开发中不可或缺的能力,通过日志可以快速找出程序运行时的状态及遇到的问题。

JavaAgent产品在使用日志类时容易出现和宿主应用类冲突和日志配置冲突的问题,Sermant构建的日志系统解决了这一问题。Sermant日志系统基于JUL&logback构建,为插件开发提供了完整的、配置灵活的、避免类冲突的日志工具,并且Sermant提供的日志系统可以和宿主微服务做到从配置到执行上的完全隔离。除此之外,结合Sermant Backend组件,Sermant日志系统可以提供异常事件的统一采集和上报。

现在我们需要在日志中记录被拦截方法的执行时间,本节将演示如何使用Sermant提供的日志系统。

3.2.1 添加日志

我们在插件主模块的TemplateInterceptor类中定义一个私有静态常量LOGGER,用于该类下的日志构造。

// Sermant日志类  
private static final Logger LOGGER = LoggerFactory.getLogger();  

接下来我们在该类的after方法使用日志记录被拦截方法的运行时间,该条日志的级别为INFO。

LOGGER.info("方法耗时: " + elapsedTime);

Sermant日志系统可以记录各级别(TRACE、DEBUG、INFO、WARN、ERROR)日志来达到对程序运行不同程度的监控。

更多细节请参考Sermant官网日志功能文档。

3.2.2 日志演示

按照第二章的方式启动Sermant并调用宿主应用的接口:

curl http://127.0.0.1:8080/sayHello?name=lihua

前往logs/sermant/core/app/xxxx-xx-xx目录查看Sermant日志,“xxxx-xx-xx”为记录日志的时间。可以看到方法耗时成功记录在了日志文件中。

[INFO] [com.huaweicloud.sermant.template.TemplateInterceptor] [after:45] [http-nio-8080-exec-1] 方法耗时: 20 

3.2.3 异常日志上报

Sermant日志系统统一采集到的warn和error级别的日志可上传至Sermant Backend进行观测。我们将人为打印异常日志,并通过Backend观测。

在插件主模块TemplateInterceptor类的before方法中打印一条warn级别的日志,在after方法中打印一条error级别的日志:

LOGGER.warning("warning message");  
LOGGER.severe("error message");

修改config目录下的config.properties文件开启事件上报相关配置:

# 事件系统开关  
event.enable=true  
# Warn级别日志事件上报开关  
event.offerWarnLog=true  
# Error级别日志事件上报开关  
event.offerErrorLog=true

按照第二章的方式启动Sermant并调用宿主应用的接口:

curl http://127.0.0.1:8080/sayHello?name=lihua

前往Sermant Backend前端页面可以看到上报的异常信息:

3.3 动态配置

3.3.1 添加动态配置

Sermant提供了动态配置功能,目前支持Zookeeper、Nacos和Kie作为配置中心。动态配置功能允许Sermant对动态配置中心下发的配置进行配置管理和监听等操作,以实现丰富多样的服务治理能力。本节以Zookeeper为例,演示如何使用Sermant的动态配置服务为此插件添加执行增强逻辑的开关。

首先在插件主模块TemplateInterceptor类中添加Map字段模拟开关状态,ENABLE_KEY为开关的名称,并设置开关默认状态为true:

private static final Map<String, Boolean> CONFIG_MAP = new HashMap<>();  
  
private static final String ENABLE_KEY = "enable"; 
{  
    // 开关默认状态为true  
    CONFIG_MAP.put(ENABLE_KEY, true);   
}

然后在before方法和after方法中添加开关:

if (!CONFIG_MAP.get(ENABLE_KEY)) {  
    System.out.println("不执行增强逻辑");  
    return context;  
}

接下来,我们需要动态修改开关的状态,添加动态配置服务字段,获取动态配置服务类实例并注册监听器监听Zookeeper相应节点变化: 

// 获取动态配置服务类实例  
    private final DynamicConfigService dynamicConfigService = ServiceManager.getService(DynamicConfigService.class);  
  
// 获取Sermant框架提供的yaml解析器  
    private final YamlConverter converter = OperationManager.getOperation(YamlConverter.class);  
  
    {  
       dynamicConfigService.addConfigListener("template-config", "sermant/template-plugin",  
            new DynamicConfigListener() {  
                @Override  
                public void process(DynamicConfigEvent event) {  
                    // 解析yaml文件为map  
                    Optional<Map<String, Object>> convertOptional = converter.convert(event.getContent(), Map.class);  
                    if (convertOptional.isPresent()) {  
                        // 修改开关状态  
                        CONFIG_MAP.put(ENABLE_KEY, (boolean) convertOptional.get().get(ENABLE_KEY));  
                    }  
                    System.out.println("插件配置项发生变化, 配置项值为: " + event.getContent());  
                }  
            });  
    } 

使用动态配置需要打开动态配置服务开关,修改config目录下的config.properties文件:

# 动态配置服务开关  

agent.service.dynamic.config.enable=true

3.3.2 动态配置演示

开启动态配置服务需在本地启动zookeeper。启动宿主应用并挂载Sermant Agent,对宿主应用接口服务发起调用:

curl http://127.0.0.1:8080/sayHello?name=lihua

此时开关默认开启,控制台输出如下:

已记录方法运行开始的时间  
hello lihua  
方法耗时:23毫秒 

开始下发动态配置,创建/sermant/template-plugin/template-config节点,设置节点的value为“enable: false”:

create /sermant
create /sermant/template-plugin  
create /sermant/template-plugin/template-config enable: false

宿主应用控制台打印如下输出:

插件配置项发生变化, 配置项值为: enable: false

再次对宿主应用接口服务发起调用:

curl http://127.0.0.1:8080/sayHello?name=lihua

可以看到控制台打印出了不执行增强逻辑的内容,说明动态配置下发成功:

不执行增强逻辑  
hello lihua  
不执行增强逻辑

动态配置的演示到此就结束了,更多动态配置的细节请参考Sermant官网动态配置功能文档。

四、 本章总结

本篇文章介绍了如何基于Sermant框架快速开发服务治理插件的流程以及使用Sermant Agent产品的方式。可以发现,通过Sermant底层框架提供的能力,我们可以非常容易的开发符合自身需求的插件,同时结合Sermant的日志系统、动态配置和Backend组件,更精细灵活的增强服务治理插件的功能。Sermant是基于Java字节码增强技术的无代理服务网格,具有无侵入、插件化和高性能的特点,希望本篇文章能对有意愿使用Sermant产品的开发者们有所帮助!

Sermant作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护,广泛欢迎大家的加入。

SOA/ESB架构升级之路:从微服务到ServiceMesh,再到Sermant 随着云计算和容器技术的发展,SOA/ESB架构模式在目前公有云上的典型参考架构是将应用部署在Kubernetes中,通过Ingress来暴露外部访问入口,通过Service来定义内部服务发现和负载均衡,通过ConfigMap和Secret来管理配置和敏感信息。同时,Sermant框架在性能、灵活性和易用性方面具有较大的优势,值得关注和尝试。微服务是一种轻量级的服务架构模式,它将应用拆分为多个小而独立的服务,每个服务负责一个单一的业务功能,并且通过轻量级的协议(如HTTP、REST、gRPC等)来进行通信。 阅读详情

相关推荐

2021 buaa 计组上机P0 logisim 3道课上考试题

每年题目都不一样,但看看往年题可以帮助查缺补漏 第一题:组合逻辑设计 4人(1个组长和3个组员)对议题进行投票表决。组长有一票否决权。如果组长一票否决,则议题被否决。如果组长正常投票(同意、反对或者弃权),则统计同意的人数和反对的人数。当同意人数大于反对人数,则议题通过,否则议题被否决。 请设计组合逻辑电路,实现这样子的一个投票表决器 同意 反对 弃权 一票否决 组长信号 00 01 10 组员信号 00 01与11 10 第2题 时序逻辑电路设计 设计一个Mealy型电路,若序列的

weixin_41892813的博客 3457

GOTC全球开源技术峰会|Sermant首次亮相,推进云原生微服务治理技术的演进

5月27日至28日,全球开源技术峰会GOTC 2023在上海张江科学会堂成功举办。作为面向全球开发者的开源技术盛宴,大会以“Open Source, Into the Future”为主题,汇集了诸多专家学者和产业代表,共同探讨开源未来,助力开源发展。本次GOTC峰会也邀请了Linux基金会执行董事、LF AI & Data 基金会执行董事,CNCF中国区总监、来百度、华为、腾讯、火山引擎、红帽、Intel、VMWare、F5、微软、开源中国等企业的全球开源重磅嘉宾出席。

hwcloud_OS的博客 285

摄像机实时接入分析平台视频分析网关AI智能分析智慧营业厅方案

通过智能化的改造,可以提高营业厅的运营效率,降低运营成本,同时提升客户体验和安全保障。

EasyDarwin开源社区技术博客 703

ServiceStage集成Sermant实现应用的优雅上下线

优雅上下线旨在确保服务在进行上下线操作时,能够平滑过渡,避免对业务造成影响,保证资源的高效利用。Sermant基于字节码增强的技术实现了应用优雅上下线能力,应用发布与运维平台ServiceStage通过集成Sermant使得应用在进行持续发布时实现无侵入式地优雅上下线。

hwcloud_OS的博客 1167

从零构建高精度电子秤:HX711与STM32的时序通信陷阱与实战避坑指南

本文详细解析了使用STM32F103C8T6与HX711模块构建高精度电子秤的通信时序陷阱与实战解决方案。重点探讨了微秒级延迟实现、数据读取算法、校准方法和滤波优化,帮助开发者避开常见通信问题,提升电子秤的测量精度和稳定性。

data3的博客 782

EMI硬件抑制八项工程对策:从回路面积到谐振规避

电磁干扰(EMI)是电子系统可靠性与EMC合规性的核心挑战,其本质源于高频电流回路产生的辐射与耦合效应。理解回路面积、共模/差模噪声、阻抗匹配等基础原理,是实施有效抑制的前提。技术价值体现在降低辐射发射(RE)、传导发射(CE)超标风险,提升产品一次通过率与长期稳定性。典型应用场景包括开关电源设计、高速数字接口布局、工业嵌入式设备及医疗电子等对EMC要求严苛的领域。本文聚焦可落地的硬件级对策,涵盖回路面积控制、屏蔽策略、变压器漏磁管理、双线传输与阻抗匹配等关键实践,深度融合电流回路物理模型与PCB工程实现。

weixin_35019679的博客 84

玩转Sermant开发,开发者能力机制解析

本着从入门到精通的思路,本文对在Sermant开发中所常用的能力,从机制上进行更深入的解析。

华为云官方博客 1495

关于对鱼眼相机图片进行畸变校正的两种思路

鱼眼畸变主要表现为径向畸变(Radial Distortion),图像中心正常,边缘向外拉伸。畸变模型通常基于入射角θ\thetaθ(光线与光学轴夹角)和图像半径rrr的关系。等距投影(Equidistant Projection)rdfθrd​fθ,其中rdr_drd​为畸变图像半径,fff为焦距,θ\thetaθ为入射角。等立体角投影(Equisolid Angle Projection)rd2fsin⁡θ2rd​2fsinθ/2。

qq_45670407的博客 1546

全新升级!Sermant 2.2.0 Release版本正式发布

2025年伊始,Sermant社区正式发布了2.2.0 release版本,这也是Sermant加入CNCF基金会后发布的第一个特性版本。本次更新在流量治理、外部Agent统一管理等方面推出了新的重要特性,包括基于xDS协议的流控能力、支持挂载外部Agent、SpringBoot注册插件支持Nacos注册中心、指标服务等。除此之外,本次版本更新还对社区提出的已知问题和部分功能进行了修复和优化。

hwcloud_OS的博客 1168

【学习系列】SAP RAP 29:如何创建Application Jobs(下)

本文介绍了在SAP系统中通过API创建和使用Application Jobs的方法。主要内容包括:1) 创建RAP应用并通过Action调用API创建Jobs;2) 使用事件驱动方式异步更新Job状态;3) 通过URL跳转到标准日志页面;4) 使用Custom Entity获取Job日志;5) 演示遗留接口IF_APJ_DT_EXEC_OBJECT和IF_APJ_RT_EXEC_OBJECT的使用。文章提供了详细的代码示例,展示了如何通过CL_APJ_RT_API=>SCHEDULE_JOB调度作业,

DeveloperMrMeng的博客 376

STM32Cube高效开发教程<基础篇>(一)----概述

一、 STM32系列器件和开发工具发展历史声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。一、 STM32系列器件和开发工具发展历史。

我的博客 1171

实例讲解基于Sermant快速开发服务治理插件

我们通过案例讲解,说明如何基于Sermant开发一个接口统计调用时长的插件,并用于生产环境的部署。

华为云官方博客 841

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

本文从开发者视角来看核心设计中的插件机制和类加载器架构,在实战中从基础能力开发,到进阶使用统一动态配置能力、统一日志能力等一步步完成插件开发。

华为云官方博客 730

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Sermant 开源项目使用教程

Sermant(也称为 Java-mesh)是一个基于 Java 字节码增强技术的无代理服务网格。它利用 Java 字节码增强技术为应用程序提供服务治理能力,解决大规模微服务架构中的服务治理问题。Sermant 的愿景还包括构建一个插件开发生态系统,帮助开发者在不干扰应用程序代码的情况下,更轻松地创建服务治理功能。 ## 项目快速启动 ### 准备工作 1. 下载 Sermant 发布包(推

gitblog_01055的博客 1070

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

开发者能力机制解析,玩转Sermant开发

本文将详细解析Sermant的插件加载和调度机制,以及开发者中常用到的统一动态配置和统一日志解析能力,带领开发者深入浅出地掌握Sermant的底层机制。

hwcloud_OS的博客 213

新特性速览! Sermant 2.1.0版本重磅发布

9月底,Sermant社区正式发布了2.1.0 Release版本,本次版本更新为大家带来了许多新的重要特性。在此前版本xDS协议支持的基础上,2.1.0版本新增了路由和负载均衡的CRD的支持,同时路由插件也适配了当前的xDS协议。此外新增了RocketMQ灰度发布插件,首次支持了消息队列的灰度发布;用户体验上,我们对Backend的Agent管理功能再次进行了完善,现在可以直接在Backend上直接对插件进行动态热插拔。

hwcloud_OS的博客 1060

云原生微服务治理技术朝无代理架构的演进之路

本文基于对微服务治理技术从SOA, 微服务框架,到云原生架构的历史发展总结,提出了一种新的基于Javaagent技术的新一代无代理架构的服务治理技术,并介绍了其相关的代表性开源项目Sermant。

华为云官方博客 1409

正式发布后的一年,我们都做了什么? | Sermant 2023年度总结

2023年,是Sermant 1.0版本正式发布后的第一年。我们在这一年里不断地进行迭代,目前已经发布到了1.3版本,在可观测性能力、框架能力、服务治理能力等各方面都得到了大幅的提升。这一年我们不仅通过了信通院的可信开源认证,也在各个开源生态用户的真实场景中落地应用。我们还在线上线下组织参与了很多开源社区的活动,目前Sermant在云原生领域已经有了不小的影响力。在这里,我们一起来总结一下过去的一年里,我们都做了什么吧。

hwcloud_OS的博客 1027

华为云开源项目Sermant正式成为CNCF官方项目

近日,由华为云发起的开源项目Sermant正式加入云原生计算基金会(CNCF)。

hwcloud_OS的博客 714

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

Sermant在经历了2022年的萌芽期和2023年的快速发展后,2024年迎来了重要的突破——Sermant正式加入了CNCF(云原生计算基金会),成为云原生开源生态中的重要成员。

hwcloud_OS的博客 828

Sermant 开源项目指南

Sermant 的目录结构通常包含以下几个关键部分: - `agent`:这里是Java Agent的实现,用于动态地增强应用程序以提供服务治理功能。 - `backend`:这个目录包含了后台服务的相关代码,它提供了与Java Agents之间的连接以及数据预处理服务。 - `config`:此目录存储了各种配置模板和样本,用于初始化项目设置。 - `docs`:文档目录,包含项目的用户手册和

gitblog_00982的博客 631

华为云ServiceStage集成Sermant实现应用的优雅上下线

优雅上下线旨在确保服务在进行上下线操作时,能够平滑过渡,避免对业务造成影响,保证资源的高效利用。Sermant基于字节码增强的技术实现了应用优雅上下线能力,应用发布与运维平台ServiceStage通过集成Sermant使得应用在进行持续发布时实现无侵入式地优雅上下线。ServiceStage(应用管理与运维平台)是华为云面向企业的应用管理与运维平台,提供应用发布、部署、监控与运维等一站式解决方案。整个平台支持一系列技术栈,包含Java、Node.js、Docker、Tomcat等。

hwxiaozhi的博客 847

集成 Sermant,ServiceStage 带你实现应用上下线平滑过渡

为了保证应用正确上下线、流量不丢失,ServiceStage 基于 Sermant 提供了一套优雅上下线的方案,包括预热、延迟下线等,避免了请求超时、连接拒绝、流量丢失等问题的发生。

华为云官方博客 1471

一站式部署Sermant:从环境准备到JavaAgent注入的完整教程

Sermant是一款基于Java字节码增强技术的云原生无代理服务网格(Proxyless Service Mesh),它通过JavaAgent技术实现服务治理能力,无需额外部署Sidecar代理。本文将带你完成从环境准备到JavaAgent注入的全流程部署,让你快速上手这个强大的微服务治理工具。 ## 📋 环境准备清单 部署Sermant前需确保环境满足以下要求: - **JDK版本**:

gitblog_01147的博客 830

Sermant标签路由能力在同城双活场景的应用

目前应用上云已成为趋势,用户也对应用在云上的高可靠方案有更高追求,目前同城双活场景作为应用高可靠方案中的一种常见实践方案,对微服务流量提出了数据中心亲和性的要求,目前通过Sermant的标签路由能力可以实现此要求并能快速助力同城双活方案的落地。

hwcloud_OS的博客 1283
上一篇: COSCon‘23|Sermant亮相2023第八届中国开源年会,共赢数智时代
下一篇: DTSE Tech Talk | 3招解决时序数据高基数难题,性能多维度提升!
华为云开源
博客等级 码龄4年 281粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值