首页 > 其他分享 >探讨微服务治理场景中,Sermant Backend如何管理插件动态配置

探讨微服务治理场景中,Sermant Backend如何管理插件动态配置

时间:2024-10-09 17:25:47浏览次数:6  
标签:插件 配置 配置管理 Sermant 路由 Backend

本文分享自华为云社区《Sermant Backend配置管理功能在微服务治理场景中的应用》,作者:华为云开源。

一、背景

Sermant是基于Java字节码增强技术的无代理服务网格,业务应用通过JavaAgent的方式将Sermant挂载至目标进程中。其中动态配置是Sermant框架中的关键能力,它能够在微服务挂载Sermant运行的过程中动态地调整服务治理规则,实现运行时的管控。关于动态配置中心的介绍可以参考《如何利用动态配置中心在JavaAgent中实现微服务的多样化治理》

为了用户能够在统一的控制台方便快捷地管理动态配置,在Sermant 2.0.0之后的版本里,Sermant Backend(下文简称Backend)新增了配置管理功能,目前已经支持了Zookeeper、Nacos和KIE三种配置中心类型。

本文以动态调整灰度发布场景的治理规则为例来展示Backend是如何管理插件的动态配置的。

二、配置管理功能在灰度发布场景中的应用

灰度发布是一种常用的软件发布策略,旨在逐步将新功能或更新从一小部分用户扩展到更大范围的用户。这样可以在有限的风险下测试新功能的表现,并根据反馈进行调整。在灰度发布场景中新版本或功能只会被部署给一小部分用户或流量,然后逐步增加到更多的用户或流量中,出现问题时可以及时进行调整或回滚,保障整体系统的稳定性和可靠性。

 

Sermant的标签路由插件可以通过对服务提供者以服务粒度或者全局粒度配置路由规则,通过将某一个或多个服务的提供者划分到同一个分组,约束流量只在指定分组中流转,从而实现流量隔离的目的,可以作为流量染色、蓝绿发布、灰度发布、全链路灰度、同可用区优先调用等场景的能力基础。

在部署了Backend后,就可以通过Sermant来对各个插件的配置进行动态管理。标签路由插件支持下发动态配置来修正流量路由的方向和比例,实现上述的灰度发布功能。下面我们来以此场景来展示Backend是如果做到变更路由规则的。

 

首先,当没有新版本发布时,流量会路由至基线版本(1.0.0)的下游服务,如下图所示:

1-无新版本发布时的流量分布

 

如果此时需要发布新的1.0.1版本并引入小规模的灰度流量。那么在Provider的1.0.1版本发布后,我们可以通过路由规则将10%流量分配至version为1.0.1的Provider,用于验证新版本功能,并保证如果新版本出现问题时只会影响少部分请求。此时可以通过Backend的配置管理功能来新增路由规则。

 

首先,在Backend的主页面点击配置管理进入配置管理页面,配置管理页面默认会展示路由插件配置,配置管理页面支持通过Group规则、key规则进行模糊查询,如下图所示:

2-配置管理页面

 

然后,在配置管理页面点击新增按钮进入配置详情页面来新增配置,配置的插件类型选择路由插件。输入上游服务的应用名称、环境名称、下游服务的服务名称和规则内容,并发布配置。标签路由插件的详细路由规则请参考标签路由插件的官方文档。路由插件规则配置如下图所示:

3-新增路由规则配置

 

配置发布之后,请求流量将会按照路由规则进行分配。效果如下图所示:

4-发布路由规则配置后的流量分布

 

如果新版本的Provider功能验证没有问题之后,需要逐步将流量规模扩大,最终以1.0.1版本来替换原有的1.0.0版本。这里以最终流量全部路由切换到version为1.0.1的Provider为例,展示如何调整路由规则中的流量比例。

在配置管理页面通过插件类型查询上面配置的路由插件配置,如下图所示:

5-路由插件配置查询结果

 

点击查看按钮跳转到配置详情页面,在配置详情页面修改路由插件的路由规则,具体修改内容如下图所示(weight是权重值,通过修改weight可以调整路由比例):

6-修改路由插件配置

 

路由规则修改发布之后,标签路由插件会安装新的路由规则进行流量分发,所有的流量将会路由到version为1.0.1的Provider,效果如下所示:

7-新的路由规则发布后的流量分布

 

当provider服务全部升级到1.0.1版本时,若不需要再通过路由插件进行流量控制(如路由方式不变化也可不删除),此时,可以删除路由插件配置。在配置列表页面查询到要删除的配置时,可以点击删除按钮删除配置。如下图所示,为了防止用户误删,点击删除按钮时会提醒“是否要删除当前配置项”,确认之后才会进行删除操作。

8-删除路由插件配置

 

删除路由插件之后,请求流量会按原来的负载均衡规则路由至provider服务实例上,效果如下图所示。

9-升级完成后的流量分布

三、各插件配置管理在Backend的适配

以上是Sermant路由插件结合Sermant Backend来进行使用的示例。对开源仓库的原生Sermant插件,我们已经都做了页面的适配,各插件的有语义参数都支持在输入框中进行输入并自动生成合法的配置组和配置键,可以对配置进行管理。对于开源开发者自己开发的插件如果也想集成这套能力,可以参考Backend相关的开发者指南,添加相应的UI模版即可快速集成。

四、总结

Sermant中的动态配置在实现微服务的多样化治理中扮演着重要的角色,是实现微服务治理的重要手段之一。在2.0.0版本之后新增的Backend的可视化配置管理功能给Sermant的微服务动态治理带来了极大的便利性,Backend从观测变成了观测和管控一体化的平台,提升了Sermant使用者的服务治理体验。

 

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

Sermant 官网:https://sermant.io

GitHub 仓库地址:https://github.com/sermant-io/Sermant

 

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

标签:插件,配置,配置管理,Sermant,路由,Backend
From: https://www.cnblogs.com/huaweiyun/p/18454699

相关文章

  • MyBatis-Plus 的核心插件及其使用介绍
    MyBatis-Plus是基于MyBatis的增强工具,为简化MyBatis的开发提供了诸多功能扩展。它的目标是减少重复代码、提高开发效率,提供了CRUD(Create,Read,Update,Delete)操作的简化方法以及多种实用插件。以下是MyBatis-Plus的核心插件及其使用介绍:1.分页插件(PaginationInt......
  • 富文本编辑器UEDITOR支持从WORD复制粘贴保留格式和图片的插件
    编辑器:百度ueditor前端:vue2,vue3,vue-cli,html5需求:复制粘贴word内容图片,word图片转存交互,导入pdf,导入PowerPoint(PPT)要求:开源,免费,技术支持用户体验:Ctrl+V快捷键操作该说不说,最近这块应该也是挻火的,今天早上又有网友加我微信私聊,说是想了解一下这块的技术和方案。实......
  • IDEA 神器!效率爆棚的技巧和插件,你都用上了吗?
    IDEA神器!效率爆棚的技巧和插件,你都用上了吗?各位老铁们,大家好!今天咱们来聊聊程序员的“瑞士军刀”——IntelliJIDEA。这玩意儿功能太强大了,用好了简直就是如虎添翼。今天就给大家分享一些我平时开发中总结的IDEA使用技巧和超级好用的插件,保证让你效率翻倍!IDEA神级技巧,让你代......
  • Eplan插件 - 自由文本编辑器
    前言使用此插件可以快速完成对项目中的自由文本、路径功能文本的修改、删除等操作。插件介绍用户界面插件UI界面进行了更新,相比较之前的插件界面风格更清爽简洁。功能介绍插件批量将选中文本中的源文本替换为修改文本。插件支持多种选择方式,可以在绘图区选中文本,也可在......
  • 在vscode开发平台中编写HTML的基础快门键以及安装插件
    1、HTML5是HTML的第五次重大修改;2、相关快门键使用如下:   (1)放大缩小视图:放大:Ctrl和+;缩小:Ctrl和-;   (2)向上复制一行:alt+shift+......
  • AI虚拟主播生成插件中的关键代码!
    AI虚拟主播,作为新媒体领域的创新力量,正逐渐改变着我们的信息传播方式,它们不仅能够模拟真实主播的言行举止,还能通过智能算法生成个性化、高质量的内容。在这背后,离不开一套强大的生成插件,而这套插件中的关键代码则是其核心所在,今天,我们就来揭开AI虚拟主播生成插件的神秘面纱,分......
  • 唯一客服浏览器插件:直播或客服平台自动回复插件
    支持平台:抖音巨量直播后台-抖音本地生活中控台-抖音直播间-微信小店客服-抖音小店飞鸽客服-快手小店直播中控台-淘宝直播中控台-视频号直播中控台-小红书直播中控台-tiktok直播页面-58微聊网页端-支付宝直播中控台-百度直播中控台 应用场景主流直播......
  • vscode插件开发
    一、创建项目创建VsCode的插件项目,将会用到yo和generate-code,因此,先安装这两个脚手架。npmi-gyogenerate-code然后,初始化插件目录。yocode注:如果报错:Youdon'tseemtohaveageneratorwiththename“generator-code”installed.就先执行npminstallgene......
  • 如何使用 Vuex 的插件机制来增强状态管理的功能?
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • 【Wing】背后的插件们
    wing作为我们日常开发的命令行开发工具,项目开源以来,陆陆续续接入了多个插件,在这里集中分享给大家。☞Github☜☞Gitee☜01.wing-screen作为Android平台设备投屏插件,根据PC系统平台集成scrcpy或QTScrcpy组件,支持多个设备并行操作。02.wing-jadx集成Android平......