首页 > 编程语言 >如何利用动态配置中心在JavaAgent中实现微服务的多样化治理

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理

时间:2023-10-08 10:32:17浏览次数:52  
标签:JavaAgent Group 配置 治理 Key 服务 动态 Sermant 多样化

本文分享自华为云社区《如何利用动态配置中心在JavaAgent中实现微服务的多样化治理》,作者:华为云开源 。  

一、前言

随着JavaAgent在微服务治理方面的广泛应用和发展,我们可以在运行时对微服务进行监控、管理和调整,以满足不同的业务需求和运行环境。然而,随着微服务架构的复杂性增加,管理和配置微服务的治理变得越来越困难,因此利用动态配置中心在JavaAgent中实现微服务多样化治理变得至关重要。

Sermant是基于Java字节码增强技术的无代理服务网格,支持通过动态配置实现微服务的多样化治理。以下是Sermant的微服务架构:

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理_微服务

Sermant虽然不直接提供动态配置中心,但是Sermant基于不同的配置中心实现了动态配置功能,基于该功能Sermant不仅可以监听主流配置中心配置信息的修改、也可以针对不同的场景进行配置监听,例如:Sermant不仅可以监听服务的配置变更,还可以监听应用的全局配置变更。基于该功能可以更好的帮助开发人员和运维人员管理微服务治理的能力。

二、Sermant的动态配置模型

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

在Sermant动态配置模型中,Group的数量不宜过多。Sermant动态配置模型中Group的实现是基于配置中心的数据模型,例如:Nacos的namespace,Nacos的namespace是用于实现租户隔离的,不宜过多,因此Sermant动态配置模型的Group数量也不宜过多。

与Group相比,Sermant动态配置模型允许创建多个Key,但单个实例订阅的Key不宜太多。这是因为在配置项的订阅和维护过程中,如果单个实例订阅的Key过多,可能会导致服务的性能出现问题,甚至引发配置更新不及时或者配置冲突的问题。因此,控制单个实例订阅的Key的数量是保证配置管理高效性和可用性的关键因素之一。

Sermant动态配置模型通过Group和Key的有机结合,实现了对复杂配置场景的全面覆盖和高效支撑。同时,通过控制Group和Key的数量,简化了配置项的订阅和更新流程,提高了系统的可用性和可维护性。

Sermant的动态配置模型如下图所示:

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理_微服务_02

  • 基于 Zookeeper 的配置模型实现

Zookeeper采用树状的数据模型,会将数据信息保存在一个个数据节点上,这些节点被称为Znode,Znode是Zookeeper中最小数据单位,一个Znode可以有多个子节点。可以通过路径确定的一个唯一的Znode,如/zookeeper/key1。如下图所示:

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理_微服务_03

Sermant的动态配置模型基于Zookeeper配置中心的实现方式如下所示:

Group(分组信息):Znode节点的父节点路径信息作为Group信息

Key(配置项名称):Znode节点的节点名称作为配置项的Key,节点数据作为具体的配置内容。

Znode节点可以通过不同的路径进行隔离,不同路径下可以存在节点名称相同的节点。保证Sermant通过不同的Group(分组信息)来对配置项进行隔离,同一个Group(分组信息)下可以有相同Key(配置项名称)。

  • 基于Nacos的配置模型实现

Nacos数据模型为层次模型,对于Nacos配置管理,通过Namespace、Group、Date ID能够定位到一个配置集。如下图所示:

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理_JavaAgent_04

Namespace(命名空间)主要用于不同环境的配置隔离Group(配置分组)主要用于不同的项目或者应用配置集可以包含了系统的各种配置信息,每个配置集的ID即Data Id。配置集中包含的一个个配置内容就是配置项。它代表了一个具体的可配置的参数与其值域,通常以key=value的形式存在

Sermant的动态配置模型基于Nacos配置中心的实现方式如下:

Group(分组信息):将Nacos的Namespace(命名空间)和配置分组(Group)组合起来作为Sermant的动态配置模型的分组信息。

Key(配置项名称):Nacos的配置集ID(Data Id)作为Sermant的动态配置模型的配置项名称。

配置集(Data Id)可以通过不同的Namespace(命名空间)和配置分组(Group)进行隔离,不同的Namespace(命名空间)和配置分组(Group)下可以存在名称相同的配置集(Data Id)。保证Sermant通过不同的Group(分组信息)来对配置项进行隔离,同一个Group(分组信息)下可以有相同Key(配置项名称)。

  • 基于 ServiceComb Kie 的配置模型实现

ServiceComb-Kie(ServiceComb Key-Value Store)的数据模型基于键值对(Key-Value)的方式来存储和管理配置信息。ServiceComb-Kie基于标签来控制配置的生效范围,通过标签和Key可以确定唯一的键值对。

Sermant的动态配置模型基于ServiceComb-Kie的实现方式如下:

Group(分组信息):ServiceComb-Kie的标签信息作为Sermant的动态配置模型的Group信息。

Key(配置项名称):ServiceComb-Kie的配置项名称作为Sermant的动态配置模型的Key。

ServiceComb-Kie的配置项可以通过不同的标签信息进行隔离,不同标签下可以存在相同配置项名称的配置,同样的标签信息下可以配置不同的配置项。保证Sermant通过不同的Group(分组信息)来对配置项进行隔离,同一个Group(分组信息)下可以有相同Key(配置项名称)。

三、Sermant动态配置模型的最佳实践

动态配置是Sermant的核心功能之一,可以帮助Sermant统一管理微服务治理能力,例如:灰度发布、限流降级、链路追踪等。如下图所示:

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理_JavaAgent_05

使用Sermant动态配置进行微服务服务治理时,要避免创建过多的Group(分组信息)和Key(配置项名称),减少配置的复杂性和混乱度,降低监听过多配置带来的性能消耗,也可以提高配置的可维护性和可读性。

接下来我们通过标签路由插件讲解Sermant动态配置的最佳实践方式。

1) 标签路由插件的功能

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

2) 标签路由插件的动态配置模型

标签路由插件基于Sermant的动态配置模型进行规则配置。在微服务场景中标签路由插件动态配置模型实现如下:

Group(分组信息):基于应用名称appName和环境名称environment组成,例如:app=${appName}&envirnotallow=${ environment }

Key(配置项名称):针对服务粒度的规则,key值为servicecomb.routeRule.${srviceName},${ srviceName }为目标应用的微服务名称。针对全局粒度的规则,key值为servicecomb.globalRouteRule。

标签路由插件基于zookeeper配置中心的配置模型实现如下所示:

如何利用动态配置中心在JavaAgent中实现微服务的多样化治理_JavaAgent_06

通过标签路由插件基于Sermant动态配置模型的实现我们可以看出,Sermant动态配置模型的Group(分组信息)支持基于应用名称和环境名称生成,此时针对于单个微服务应用只需要创建一个Group(分组信息),可以避免创建过多的的Group(分组信息)。Sermant动态配置模型的Key(配置项名称)支持基于微服务场景和服务名称生成,此时可以针对单个服务、也可以针对所有服务进行动态配置,保证单个实例不需要监听多个配置项,避免监听多个配置项导致服务性能下降、配置更新不及时或者配置冲突等问题。

四、总结

JavaAgent中的动态配置在实现微服务的多样化治理中扮演着重要的角色,是实现微服务治理的重要手段之一。通过动态配置,可以对微服务的运行时状态进行动态调整,从而实现微服务的动态治理。例如,可以根据实际负载情况通过动态配置来调整微服务的负载均衡策略,实现更加精细化的负载均衡。

而使用Sermant的动态配置模型进行微服务治理,不仅可以实现微服务的动态治理,还可以减少JavaAgent在微服务治理时由于Group太多或者实例监听的配置项过多带来的消耗,可以提高配置的可维护性和可读性。此外,Sermant的动态配置模型还支持主流的配置中心ServiceComb Kie、Zookeeper、Nacos,可以满足不同微服务治理场景下的使用,让用户更方便地进行微服务治理和运维操作。


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

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

标签:JavaAgent,Group,配置,治理,Key,服务,动态,Sermant,多样化
From: https://blog.51cto.com/u_15214399/7750880

相关文章

  • CDGA|数据治理:公司建设数仓后的后续工作指南
    在当今的数字化时代,数据被视为企业的重要资产。为了更好地管理和利用这些数据,许多公司纷纷建设了数据仓库(数仓)。然而,建设数仓只是数据治理旅程的一部分,接下来还需要进行一系列的后续工作,以确保数据的质量、安全性和有效性。本文将围绕数据治理展开,介绍公司在建设数仓后的后续工作。......
  • 微服务17:微服务治理之异常驱逐
    ★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用微服务10:系统服务熔断、限流微服务11......
  • 流量治理的基石——基于字节码增强的全链路流量标签透传
     作者:李来   华为云高级软件工程师一、全链路流量标签透传在微服务架构中,流量标签用于对流量进行标记和分类,能够在微服务之间实现更精细的路由、负载均衡和流控等流量治理能力。以HTTP报文为例,每一条header都可以是一条流量标签,比如x-sermant-version:v1表示通过Sermant流......
  • CDGA|数据治理如何助力银行业务处理效率和客户满意度提升?
    在当今数字化快速发展的时代,银行业务处理效率和客户满意度的提升成为了银行的核心竞争力。为了在这两个方面取得显著成效,数据治理成为了越来越重要的议题。本文将探讨如何通过数据治理提高银行业务处理效率和客户满意度。目前,银行业务处理还面临诸多挑战。繁琐的手续、漫长的等待时......
  • 2023年DAMA-CDGA/CDGP数据治理认证报名多数人都选择这里
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023年DAMA-CDGP数据治理专家认证报名当然这里好
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023年9月天津/济南/合肥/深圳DAMA-CDGA/CDGP数据治理认证报名
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 亿信华辰|汽车行业数据治理解决方案,助力企业数字化转型数据一体化
    随着数字技术的不断革新和应用,汽车行业已转向大数据、新技术寻求生产力突破,以电动化、网联化、智能化、共享化为标志的“汽车新四化”,为汽车行业带来了翻天覆地的变化。如何抓住“新四化”的机会,在汽车产业变革中赢得先机,数据的智能化应用是关键。然而原生态的汽车行业大数据多且杂......
  • Soul CEO张璐创新平台安全治理模式,筑牢用户健康上网的安全防线
    作为备受年轻人喜爱的新型开放式社交平台,SoulApp自成立以来就致力于为用户打造一个真实无压力的社交空间,帮助用户摆脱现实的束缚,在其构建的社交空间里自在互动,尽情真实。为了营造真实、温暖、安全、多元的平台生态,保障用户的安全体验,SoulCEO张璐带领团队,持续升级平台风控......
  • 慢SQL治理实践及落地成果分享 | 京东物流技术团队
    一、治理背景数据库系统性能问题会对应用程序的性能和用户体验产生负面影响。慢查询可能导致应用程序响应变慢、请求堆积、系统负载增加等问题,甚至引发系统崩溃或不可用的情况。慢SQL治理是在数据库系统中针对执行缓慢的SQL查询进行优化和改进的一项重要工作。但原有的治理节奏,一般......