CN110198353A - 服务版本权重灰度发布的*** - Google Patents
服务版本权重灰度发布的*** Download PDFInfo
- Publication number
- CN110198353A CN110198353A CN201910465616.9A CN201910465616A CN110198353A CN 110198353 A CN110198353 A CN 110198353A CN 201910465616 A CN201910465616 A CN 201910465616A CN 110198353 A CN110198353 A CN 110198353A
- Authority
- CN
- China
- Prior art keywords
- service
- service node
- weight
- version
- registration center
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/085—Retrieval of network configuration; Tracking network configuration history
- H04L41/0859—Retrieval of network configuration; Tracking network configuration history by keeping history of different configuration generations or by rolling back to previous configuration versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及分布式环境应用版本管理领域,公开了一种服务版本权重灰度发布的***,解决可动态的根据服务版本配置的版本权重负载服务请求,做到服务版本权重的负载,灰度发布服务版本。本发明包括注册中心、数据库和服务版本权重管理模块;注册中心提供有一个可动态的修改服务版本权重信息接口,服务版本权重管理模块调用该接口可以动态的修改服务版本权重信息;注册中心启动或者重启的时候,会从数据库拉取已经配置的所有的服务版本权重信息,并存入注册中心自身内存中的服务节点列表里,以供注册的服务消费者在拉取服务节点列表的时候,能够获取到服务节点列表中所对应的每个不同版本服务节点的不同权重。本发明适用于服务版本权重灰度发布。
Description
技术领域
本发明涉及分布式环境应用版本管理领域,特别涉及版本权重流量切换,灰度发布。
背景技术
在复杂的分布式环境下,服务之间相互调用复杂,服务功能迭代速度很快,需要不断的正是环境新增或者修改服务提供的功能,需要做到平滑的切换版本并且可快速回滚替换。目前常规的灰度发布方案一种是基于代码层面的改造,针对不同用户或者参数调用服务不同版本的不同逻辑,此种方案对代码侵入性很强,且不具备通用性;另外一种方案是基于流量接入层(如nginx)做对应的配置将流量切换不同版本,此种方案需要外部配置,且不能按照一定的版本权重负载不同版本的服务。
发明内容
本发明要解决的技术问题是:提供一种服务版本权重灰度发布的***,解决可动态的根据服务版本配置的版本权重负载服务请求,做到服务版本权重的负载,灰度发布服务版本。
为解决上述问题,本发明采用的技术方案是:服务版本权重灰度发布的***,包括注册中心、数据库、服务版本权重管理模块以及服务消费者;
注册中心提供有一个接口,服务版本权重管理模块调用该接口可以动态的修改服务版本权重信息;注册中心启动或者重启的时候,会从数据库拉取已经配置的所有的服务版本权重信息,并存入注册中心自身内存中的服务节点列表里,以供注册的服务消费者在拉取服务节点列表的时候,能够获取到服务节点列表中所对应的每个不同版本服务节点的不同权重,其中,所述服务节点列表包括服务节点的名称、节点版本号、权重值以及IP端口信息;同时,在注册中心向服务消费者提供服务节点的不同版本的不同权重的时候,注册中心还将向服务消费者提供用于版本权重、灰度发布控制的SDK;
服务消费者需要调用服务节点的时候,根据服务节点列表中不同版本的不同权重,按照SDK里的版本权重算法选取服务节点列表中的具体服务节点进行调用。
进一步的,服务消费者调用服务节点的具体步骤包括:
将被调用服务的服务节点列表中的所有服务节点的版本权重相加得到一个总值Count;
将每个服务节点的版本权重除以总值Count得到一个百分比值;
随机一个0~100%的值,该值会落在上一步产生的每个节点的百分比值范围内,则取该服务节点进行调用。
本发明的有益效果是:本发明很好的解决可动态的根据服务版本配置的版本权重负载服务请求,且对代码几乎无侵入,具有很强的通用性。
附图说明
图1是实施例的结构框图;
图2是版本权重的传递流程图;
图3是服务节点调用的流程图;
图4是版本权重的限流效果图。
具体实施方式
本发明整体思路上摒弃了常规的流量控制和版本灰度方案,不在服务提供方入口做版本权重的流量控制和灰度功能,而是将流量真正的来源即服务调用方做被调用服务的版本权重和灰度控制,即每个服务调用方都按照版本的权重负载服务提供者的流量,那么服务提供者接收到的整体的版本流量就是按照该服务提供方所配置的版本权重、灰度发布规则所控制的版本流量。本发明具体方案如下:
本专利基于对注册中心改造可使其能接收拉取服务版本权重,改造后的注册中心主要具备两个功能:
1、注册中心启动或重启能自动去数据中心拉取已配置的所有服务的版本权重信息并存入自身内存,并暴露一个实时修改版本权重的接口,在服务版本权重有变动的时候,服务版本权重管理端可通过调用该接口实时修改服务版本权重;
2、服务消费者在拉取服务节点列表的时候,能够获取到服务节点列表中所对应的每个不同版本服务节点的不同权重。其中,服务节点列表可包括服务节点的名称、节点版本号、权重值以及IP端口信息等。
另外,注册中心向服务消费者提供服务节点的不同版本的不同权重的时候,注册中心还将向服务消费者提供用于版本权重、灰度发布控制的SDK,在服务消费者需要调用服务节点的时候,根据服务节点列表中不同版本的不同权重,按照SDK里的版本权重算法选取服务节点列表中的具体服务节点进行调用,以完成对服务提供者的版本权重控制,灰度发布等功能。
为使本发明的目的、技术方案和优点更加清楚,下面结合实施例对本发明做进一步地详细描述。
实施例提供一种服务版本权重灰度发布的***,如图1所示,包括注册中心、数据库、服务版本权重管理模块以及服务消费者;
其中,注册中心提供有一个接口,服务版本权重管理模块调用该接口可以动态的修改服务版本权重信息;注册中心启动或者重启的时候,会从数据库拉取已经配置的所有的服务版本权重信息,并存入注册中心自身内存中的服务节点列表里,以供注册的服务消费者在拉取服务节点列表的时候,能够获取到服务节点列表中所对应的每个不同版本服务节点的不同权重,其中,所述服务节点列表包括服务节点(服务提供者)的名称、节点版本号、权重值以及IP端口信息;同时,在注册中心向服务消费者提供服务节点的不同版本的不同权重的时候,注册中心还将向服务消费者提供用于版本权重、灰度发布控制的SDK。
实施例的一种工作流程如下:
步骤一、注册中心启动或者重启的时候会去数据库拉取已经配置的所有的服务版本权重信息,并存入注册中心自身内存中的服务节点列表里,以供注册的服务消费者在拉取服务节点列表的时候,能够获取到服务节点列表中所对应的每个不同版本服务节点的不同权重。并且注册中心会提供一个可修改版本权重信息的接口,在服务版本权重管理模块修改版本权重信息时调用该接口以动态的修改版本权重信息。
以上步骤中的版本信息拉取刷新也可以跳过注册中心,服务消费者可以直接从数据库拉取服务节点相关版本权重信息。而如图2所示,实施例将服务节点的版本权重信息加载到注册中心是为了提高拉取和刷新版本权重信息的效率和实时性。
步骤二、服务节点启动注册到注册中心,注册中心会根据注册的服务节点的名称从数据库拉取一次该服务节点的版本权重信息,以保证该服务节点的版本权重信息的实时性。
步骤三、在需要调整服务节点不同版本的权重或要做新版本的灰度发布时,可通过服务版本权重管理模块调用注册中心的接口,从配置服务节点不同版本的不同权重值(默认每个版本的权重值是100%)。
步骤四、服务消费者会定时去注册中心拉取所有需要调用的服务的服务节点列表,并缓存到注册中心本地的缓存中,该服务节点列表包括服务节点的名称、节点版本号、权重值以及IP端口信息。服务消费者在根据服务节点的名称调用服务节点的时候,会先从本地缓存查询对应的服务节点列表,当缓存中没有对应服务节点列表时会从注册中心中再次拉取该名称对应的所有的服务节点列表。
步骤五、服务消费者根据拉取到的服务节点的不同版本的不同权重按照权重负载算法选择一个服务节点进行掉头,该算法主要包括:1、将被调用服务的服务节点列表中的所有服务节点的版本权重相加得到一个总值Count;2、将每个服务节点的版本权重除以总值Count得到一个百分比值;3、随机一个0~100%的值,该值会落在上一步产生的每个节点的百分比值范围内,则取该服务节点进行调用。
以上步骤四和步骤五,如图3,服务消费者在要去请求某个服务节点的时候,先去本地缓存(缓存的数据可以从注册中心获取也可以直接从配置数据库获取)查询服务节点列表,列表信息如图3,主要包括服务节点的名称、节点版本号、权重值以及IP端口信息。服务消费者根据以上信息中的版本权重按照SDK中的版本权重算法选取其中一个节点,请求服务节点中对应的节点接口。
步骤六、如果要做灰度发布,则只需要将老版本的版本权重配置为一个较大比列的值,将新版本的版本权重值配置为一个较小比例权重,并添加到注册中心的服务节点列表中。服务消费者会拉取到新版本的版本权重信息,会根据配置将较小流量负载到新版本上,在服务节点的新版本的功能测试完成后,可以将老版本的版本权重配置成0,则所有的流量都会切换到新版本上,则完成了整个服务版本的灰度发布功能。
为更加直观的体现实施例中版本权重的限流过程,可参见图4,图中服务节点ServiceA有三个不同版本分别为V-1.0.0,V-1.0.5,V-2.0.0三个版本的的权重分别配置为0,10,90。在服务的消费方,图中服务消费者ConsumerA、ConsumerB、ConsumerC。三个分别请求ServiceA都按照配置的版本权重去请求ServiceA。那么ServiceA的不同版本的节点接收到的请求流量的总和就是按照ServiceA所配置的版本权重分配的流量比例。如图4中ServiceA版本为V-1.0.0的流量为0,斑纹为V-1.0.5的流量为10%,V-2.0.0的流量为90%。最终实现了按照版本权重分配流量。
Claims (2)
1.服务版本权重灰度发布的***,其特征在于,包括注册中心、数据库、服务版本权重管理模块以及服务消费者;
注册中心提供有一个接口,服务版本权重管理模块调用该接口可以动态的修改服务版本权重信息;注册中心启动或者重启的时候,会从数据库拉取已经配置的所有的服务版本权重信息,并存入注册中心自身内存中的服务节点列表里,以供注册的服务消费者在拉取服务节点列表的时候,能够获取到服务节点列表中所对应的每个不同版本服务节点的不同权重,其中,所述服务节点列表包括服务节点的名称、节点版本号、权重值以及IP端口信息;同时,在注册中心向服务消费者提供服务节点的不同版本的不同权重的时候,注册中心还将向服务消费者提供用于版本权重、灰度发布控制的SDK;
服务消费者需要调用服务节点的时候,根据服务节点列表中不同版本的不同权重,按照SDK里的版本权重算法选取服务节点列表中的具体服务节点进行调用。
2.如权利要求1所述的服务版本权重灰度发布的***,其特征在于,服务消费者调用服务节点的具体步骤包括:
将被调用服务的服务节点列表中的所有服务节点的版本权重相加得到一个总值Count;
将每个服务节点的版本权重除以总值Count得到一个百分比值;
随机一个0~100%的值,该值会落在上一步产生的每个节点的百分比值范围内,则取该服务节点进行调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465616.9A CN110198353B (zh) | 2019-05-30 | 2019-05-30 | 服务版本权重灰度发布的*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910465616.9A CN110198353B (zh) | 2019-05-30 | 2019-05-30 | 服务版本权重灰度发布的*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110198353A true CN110198353A (zh) | 2019-09-03 |
CN110198353B CN110198353B (zh) | 2020-09-15 |
Family
ID=67753617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910465616.9A Active CN110198353B (zh) | 2019-05-30 | 2019-05-30 | 服务版本权重灰度发布的*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110198353B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518119A (zh) * | 2021-05-25 | 2021-10-19 | 深圳壹账通智能科技有限公司 | ABTest的服务分发方法、装置、设备及存储介质 |
CN113610637A (zh) * | 2021-08-12 | 2021-11-05 | 上海通联金融服务有限公司 | 灰度算法支持下的智能路由发布的方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176790A (zh) * | 2011-12-26 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 应用发布方法和*** |
CN103457870A (zh) * | 2013-09-25 | 2013-12-18 | 武汉理工大学 | 用于分布式***的负载均衡及高可用性子***及方法 |
US20170201850A1 (en) * | 2009-01-28 | 2017-07-13 | Headwater Research Llc | Method for Child Wireless Device Activation to Subscriber Account of a Master Wireless Device |
CN107197012A (zh) * | 2017-05-19 | 2017-09-22 | 焦点科技股份有限公司 | 一种基于元数据管理***的服务发布及监管***及方法 |
CN107391104A (zh) * | 2017-05-31 | 2017-11-24 | 杭州大搜车汽车服务有限公司 | 一种客户端与react native代码的更新依赖管理方法、装置及*** |
CN108243254A (zh) * | 2018-01-17 | 2018-07-03 | 平安科技(深圳)有限公司 | 电子装置、应用升级版本发布的方法及存储介质 |
CN109597643A (zh) * | 2018-11-27 | 2019-04-09 | 平安科技(深圳)有限公司 | 应用灰度发布方法、装置、电子设备及存储介质 |
CN109669719A (zh) * | 2018-09-26 | 2019-04-23 | 深圳壹账通智能科技有限公司 | 应用灰度发布方法、装置、设备及可读存储介质 |
CN109814910A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 自动化灰度发布方法、装置、计算机***及存储介质 |
-
2019
- 2019-05-30 CN CN201910465616.9A patent/CN110198353B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170201850A1 (en) * | 2009-01-28 | 2017-07-13 | Headwater Research Llc | Method for Child Wireless Device Activation to Subscriber Account of a Master Wireless Device |
CN103176790A (zh) * | 2011-12-26 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 应用发布方法和*** |
CN103457870A (zh) * | 2013-09-25 | 2013-12-18 | 武汉理工大学 | 用于分布式***的负载均衡及高可用性子***及方法 |
CN107197012A (zh) * | 2017-05-19 | 2017-09-22 | 焦点科技股份有限公司 | 一种基于元数据管理***的服务发布及监管***及方法 |
CN107391104A (zh) * | 2017-05-31 | 2017-11-24 | 杭州大搜车汽车服务有限公司 | 一种客户端与react native代码的更新依赖管理方法、装置及*** |
CN108243254A (zh) * | 2018-01-17 | 2018-07-03 | 平安科技(深圳)有限公司 | 电子装置、应用升级版本发布的方法及存储介质 |
CN109669719A (zh) * | 2018-09-26 | 2019-04-23 | 深圳壹账通智能科技有限公司 | 应用灰度发布方法、装置、设备及可读存储介质 |
CN109597643A (zh) * | 2018-11-27 | 2019-04-09 | 平安科技(深圳)有限公司 | 应用灰度发布方法、装置、电子设备及存储介质 |
CN109814910A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 自动化灰度发布方法、装置、计算机***及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113518119A (zh) * | 2021-05-25 | 2021-10-19 | 深圳壹账通智能科技有限公司 | ABTest的服务分发方法、装置、设备及存储介质 |
CN113610637A (zh) * | 2021-08-12 | 2021-11-05 | 上海通联金融服务有限公司 | 灰度算法支持下的智能路由发布的方法 |
CN113610637B (zh) * | 2021-08-12 | 2023-07-04 | 上海通联金融服务有限公司 | 灰度算法支持下的智能路由发布的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110198353B (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6231020B2 (ja) | クラウドコンピューティング環境におけるプロセスの調整 | |
CN106484528B (zh) | 分布式框架中用于实现集群动态伸缩的方法及装置 | |
CN110198353A (zh) | 服务版本权重灰度发布的*** | |
CN110493067A (zh) | 一种api网关服务更新的方法及装置 | |
CN109213792A (zh) | 数据处理的方法、服务端、客户端、装置及可读存储介质 | |
CN110191148A (zh) | 一种面向边缘计算的统计函数分布式执行方法及*** | |
Suraci et al. | Context-aware semantic service discovery | |
CN108134766A (zh) | 一种服务发布的方法、装置、***、服务器及客户端 | |
CN109471872A (zh) | 处理高并发查询请求的方法及装置 | |
CN106856438A (zh) | 一种网络业务实例化的方法、装置及nfv*** | |
CN107968805A (zh) | 一种事件通知方法及服务器 | |
CN115714817A (zh) | 一种动态反馈加权云存储资源调度方法、装置及设备 | |
CN109521943A (zh) | 云数据库实例的分配方法及相关产品 | |
CN114697150B (zh) | 命令的下发方法和装置、存储介质及电子装置 | |
WO2022252251A1 (zh) | 服务网络环境下的服务质量预测方法 | |
Frosinin et al. | Threshold policies for controlled retrial queues with heterogeneous servers | |
Cao et al. | A context-aware adaptive web service composition framework | |
CN106331000B (zh) | 一种确定服务方案的方法及装置 | |
CN113012336A (zh) | 银行业务的排队预约方法及其装置、存储介质和设备 | |
CN106886452B (zh) | 一种简化云化***任务调度的方法 | |
CN103377089B (zh) | 处理器群的基于负载的编程管理方法和*** | |
Zheng et al. | An RBF neural network–based dynamic virtual network embedding algorithm | |
CN112631680A (zh) | 微服务容器调度***、方法、装置和计算机设备 | |
CN116887285A (zh) | 一种基于蜣螂优化算法的边缘计算服务器放置方法 | |
CN101552695B (zh) | 一种跨多专业网的统一网络管理方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |