CN117714459A - 一种动态灰度服务发布系统、方法、设备及计算机介质 - Google Patents
一种动态灰度服务发布系统、方法、设备及计算机介质 Download PDFInfo
- Publication number
- CN117714459A CN117714459A CN202311838018.4A CN202311838018A CN117714459A CN 117714459 A CN117714459 A CN 117714459A CN 202311838018 A CN202311838018 A CN 202311838018A CN 117714459 A CN117714459 A CN 117714459A
- Authority
- CN
- China
- Prior art keywords
- service
- gray
- gray scale
- request
- configuration
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000008859 change Effects 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 10
- 238000012360 testing method Methods 0.000 abstract description 7
- 238000012423 maintenance Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005315 distribution function Methods 0.000 description 2
- 241001270131 Agaricus moelleri Species 0.000 description 1
- 241000287219 Serinus canaria Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种动态灰度服务发布系统、方法、设备及计算机介质,在服务部署发布的场景中,使所有服务器在需要发布的时候通过灰度服务配置模块和灰度服务更新组件开启灰度发布功能,并将灰度发布配置动态变更到API网关和各个服务中,客户端发起的请求通过灰度负载均衡组件将灰度请求转发到灰度服务,正式请求转发到正式服务,这时在灰度服务器上实施变更操作不会影响到正式用户使用,当测试人员完成所有服务器上的功能测试后关闭灰度发布功能,则所有服务器都恢复成正式服务器提供所有用户使用,整个发布过程对于用户无感知,对于实施人员操作简单不易出错,提高了容错率,提升了运维效率,提升了用户体验。
Description
技术领域
本发明属于数据处理技术领域,特别涉及移动金融技术领域,具体涉及一种动态灰度服务发布系统、方法、设备及计算机介质。
背景技术
现有灰度服务发布方案一般需要准备两套服务器,一套固定用于灰度服务发布,一套固定用于正式服务发布,当需要灰度发布服务时,API网关通过客户端发出请求时传入的标识来判断,有标识的请求转发到灰度服务器的服务上,没有标识的请求转发到正式服务器的服务上;
现有的技术方案虽然可以实现服务灰度发布,但是不够灵活,需要预先部署两套服务器服务通过API网关转发请求,这样的方式存在几个问题:
(1)资源浪费,灰度服务器只在需要灰度发布时使用。
(2)需要维护两套服务器上的服务版本,运维成本增加。
(3)API网关服务无法灰度发布。
(4)灰度服务器固定,无法根据实际运行情况动态调整灰度服务器资源。
(5)因为灰度服务都是通过API网关转发,如果转发后的服务还需要调用另一个灰度服务的接口则无法实现。
发明内容
针对上述现有技术的不足,本申请提供一种动态灰度服务发布系统、方法、设备及计算机介质,本申请在服务部署发布的场景中,使所有服务器在需要发布的时候通过灰度服务配置模块和灰度服务更新组件开启灰度发布功能,并将灰度发布配置动态变更到API网关和各个服务中,客户端发起的请求通过灰度负载均衡组件将灰度请求转发到灰度服务,正式请求转发到正式服务,这时在灰度服务器上实施变更操作不会影响到正式用户使用。当测试人员完成所有服务器上的功能测试后关闭灰度发布功能,则所有服务器都恢复成正式服务器提供所有用户使用,整个发布过程对于用户无感知,对于实施人员操作简单不易出错,提高了容错率,提升了运维效率,提升了用户体验。
第一方面本申请提出了一种动态灰度服务发布系统,系统由注册中心、策略数据库、API网关、应用系统、灰度负载均衡模块、灰度服务更新模块和灰度服务配置模块共同集成;
所述注册中心,用于记录灰度服务标识,当所述灰度服务标识发生变更时通知所述API网关和应用系统更新灰度服务标识;
所述策略数据库,用于在灰度服务发布开启时读写所述灰度服务配置模块配置/变更的策略;
所述灰度服务配置模块,用于根据所述应用系统的管理端请求执行服务配置操作,所述服务配置操作包括:对灰度服务发布进行开启/关闭,将服务设置为灰度服务/正式服务,对正式服务/灰度服务进行一键切换,以及对灰度客户端策略进行变更;
所述灰度服务更新模块,用于初始化服务灰度标识以及根据上述注册中心的通知对服务灰度标识进行变更;
所述灰度负载均衡模块,用于根据灰度服务状态选择对应的灰度负载均衡策略,根据所述灰度负载均衡策略将包含灰度标识的客户端请求轮流转发到包含灰度标识的服务;
所述API网关,用于部署灰度API网关和正式API网关,并根据所述客户端请求从所述灰度服务配置模块中获取请求前缀名,根据所述请求前缀名将客户端请求代理到对应的API网关;
所述应用系统,用于接收所述管理端请求/用户端请求,根据所述管理端请求/用户端请求执行对应的操作。
在一些实施例的一些可选的实现方式中,所述灰度服务配置模块包括灰度客户端策略变更单元;
所述灰度客户端策略变更单元,用于对灰度服务发布进行开启/关闭,以及对灰度客户端策略进行变更;所述灰度客户端策略变更单元包括灰度服务选择组件和灰度服务数据配置组件;
所述灰度服务选择组件,用于在灰度服务发布功能开启后,任意选择添加/移除至少一个灰度服务,调用所述注册中心更新所述灰度服务的服务灰度标识并向所述应用系统发出变更通知;
所述灰度服务数据配置组件,用于将灰度服务配置写入所述策略数据库进行配置数据查询。
在一些实施例的一些可选的实现方式中,所述灰度服务配置模块还包括服务设置切换单元和服务切换页面;
所述服务设置切换单元,用于将服务设置为灰度服务/正式服务,以及对正式服务/灰度服务进行一键切换,所述服务设置切换单元包括服务操作组件和灰度服务标识设置组件;
所述服务操作组件,用于通过所述服务切换页面进行灰度服务/正式服务的设置和切换;
所述灰度服务标识设置组件,用于查询注册中心中带有灰度服务标识的服务实例和不带有灰度服务标识的服务实例,移除带有灰度服务标识的服务实例的灰度服务标识,为不带有灰度服务标识的服务实例添加灰度服务标识;
所述服务切换页面,用于装载所述服务设置切换单元,对所述灰度服务/正式服务进行设置/一键切换。
在一些实施例的一些可选的实现方式中,所述灰度服务配置模块还包括灰度服务发布调用单元;
所述灰度服务发布调用单元,用于查询灰度服务发布状态以及当前客户端状态,根据所述灰度服务发布状态以及当前客户端状态确定请求类型,所述灰度服务发布调用单元包括状态查询组件和请求配置组件;
所述状态查询组件,用于判断灰度发布标志为开启/关闭状态,以及判断当前客户端是否为灰度客户端状态;
所述请求配置组件,用于根据所述灰度发布标志状态和当前客户端状态执行请求配置流程,所述请求配置流程包括:
当灰度发布标志为关闭时,不改变请求前缀并直接调用接口;
当灰度发布标志为开启并且当前客户端不属于灰度客户端时,在请求前缀拼接正式前缀;
当灰度发布标志为开启并且当前客户端属于灰度客户端时,在请求前缀拼接灰度前缀。
在一些实施例的一些可选的实现方式中,所述所述灰度服务更新模块包括灰度服务查询单元和灰度服务变更单元;
所述灰度服务查询单元,用于当应用启动时,查询所述策略数据库中的灰度服务配置和服务灰度标识,将查询结果保存在内存中并传递给所述灰度负载均衡模块使用;
所述灰度服务变更单元,用于当收到注册中心变更通知时,重新从注册中心获取服务灰度标识并更新到本地缓存,实现动态变更发布配置。
在一些实施例的一些可选的实现方式中,所述灰度负载均衡模块包括灰度服务状态判断单元、灰度服务配置读取分析单元、第一灰度负载均衡策略调用单元、第二灰度负载均衡策略调用单元和第三灰度负载均衡策略调用单元;
所述灰度服务状态判断单元,用于判断灰度服务状态为状态一/状态二,所述状态一为:API网关和应用系统收到客户端请求,所述状态二为:当前灰度服务还需调用另一个灰度服务;
所述灰度服务配置读取分析单元,用于读取灰度发布标志和灰度服务实例id,并所述根据灰度发布标志判断是否开启灰度服务发布功能;
所述第一灰度负载均衡策略调用单元,用于当所述灰度服务状态判断单元判断为状态一并且所述灰度服务配置读取分析单元分析为开启灰度服务发布功能时,执行第一灰度负载均衡策略,所述第一灰度负载均衡策略为:当请求中包含灰度标识时,从所述注册中心获取服务注册信息,从所述服务注册信息中筛选出包含灰度标识的服务,再通过负载均衡原则将包含灰度标识的请求轮流转发到包含灰度标识的服务中;
所述第二灰度负载均衡策略调用单元,用于当所述灰度服务状态判断单元判断为状态二并且所述灰度服务配置读取分析单元分析为开启灰度服务发布功能时,执行第二灰度负载均衡策略,所述第二灰度负载均衡策略为:当请求中包含灰度标识时,从所述注册中心获取服务注册信息,从所述服务注册信息中筛选出包含灰度标识的服务,直接将包含灰度标识的请求转发到包含灰度标识的服务中;
所述第三灰度负载均衡策略调用单元,用于当所述灰度服务配置读取分析单元分析为关闭灰度服务发布功能时,执行第三灰度负载均衡策略,所述第三灰度负载均衡策略为:从注册中心取出所有服务,根据负载均衡默认轮询策略,按最小次数决定调用对应的服务。
在一些实施例的一些可选的实现方式中,所述API网关包括灰度网关部署单元、正式网关部署单元和代理配置指定单元;
所述灰度网关部署单元,用于部署灰度API网关;
所述正式网关部署单元,用于部署正式API网关;
所述代理配置指定单元;用于根据代理请求前缀将请求代理到对应的API网关。
第二方面本申请提出一种动态灰度服务发布方法,所述方法应用于一种动态灰度服务发布系统,包括以下步骤:
应用系统的管理端通过灰度服务配置模块开启灰度服务发布功能并配置灰度服务;
所述灰度服务配置模块将灰度服务发布的相关配置数据保存到策略数据库,同时将服务灰度标识更新到注册中心;
注册中心发出配置变更通知,通知所有已注册的服务;
被通知的API网关和应用系统通过灰度服务更新模块将变更数据更新到本地缓存;
当API网关和应用系统收到客户端请求时,API网关和应用系统根据灰度负载均衡模块从本地缓存中读取配置,根据配置判断请求属于灰度前缀还是正式前缀,将请求路由到灰度服务/正式服务完成整个处理过程。
第三方面本申请提出一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面本申请提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明的有益效果:
(1)通过Nginx的3种代理策略实现API网关的灰度发布,弥补了现有灰度发布方案无法灰度API网关的不足。
(2)通过灰度负载均衡组件实现了API网关和所有服务全链路的灰度路由。
(3)灰度服务器和正式服务器可以通过灰度服务更新组件和灰度服务配置模块动态切换,保证灰度服务器也能用于正式服务中,合理利用所有服务器资源。
(4)通过灰度服务更新组件和灰度服务配置模块,灰度服务可以任意选择,满足多个服务中只需要灰度发布某一个或几个服务的场景。
(5)所有服务器均能合理利用,所以能保证所有灰度和正式服务器上的应用版本的统一。
附图说明
图1为本发明的系统原理框图。
图2为调用接口处理流程图。
图3为开启灰度发布功能时的数据流向图。
图4为关闭灰度发布功能时的数据流向图。
图5为本发明的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制;相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
第一方面本申请提出了一种动态灰度服务发布系统,如图1所示:系统由注册中心、策略数据库、API网关、应用系统、灰度负载均衡模块、灰度服务更新模块和灰度服务配置模块共同集成;
所述注册中心,用于记录灰度服务标识,当所述灰度服务标识发生变更时通知所述API网关和应用系统更新灰度服务标识;
所述策略数据库,用于在灰度服务发布开启时读写所述灰度服务配置模块配置/变更的策略;
其中,策略数据库为Redis,用于读写灰度发布策略的NoSql数据库;
所述灰度服务配置模块,用于根据所述应用系统的管理端请求执行服务配置操作,所述服务配置操作包括:对灰度服务发布进行开启/关闭,将服务设置为灰度服务/正式服务,对正式服务/灰度服务进行一键切换,以及对灰度客户端策略进行变更;
其中,灰度服务配置模块属于后管服务中的一个配置模块,用于灰度服务发布的开启/关闭、添加/移除服务灰度标识(将服务设置为灰度服务或者正式服务)、一键切换正式灰度服务、变更灰度客户端策略、提供灰度服务发布查询接口;
在一些实施例的一些可选的实现方式中,所述灰度服务配置模块包括灰度客户端策略变更单元;
所述灰度客户端策略变更单元,用于对灰度服务发布进行开启/关闭,以及对灰度客户端策略进行变更;所述灰度客户端策略变更单元包括灰度服务选择组件和灰度服务数据配置组件;
所述灰度服务选择组件,用于在灰度服务发布功能开启后,任意选择添加/移除至少一个灰度服务,调用所述注册中心更新所述灰度服务的服务灰度标识并向所述应用系统发出变更通知;
所述灰度服务数据配置组件,用于将灰度服务配置写入所述策略数据库进行配置数据查询。
其中,变更灰度客户端策略:当灰度服务发布功能开启后,任意选择添加或移除一个或多个灰度服务,调用注册中心Api更新服务灰度标识并向各应用系统发出变更通知,并将灰度发布相关配置写入Redis便于查询配置数据,所述灰度发布相关配置包括灰度服务发布功能是否开启、服务实例id,使用范围策略:包括允许使用灰度服务的设备id和登录账号;
在一些实施例的一些可选的实现方式中,所述灰度服务配置模块还包括服务设置切换单元和服务切换页面;
所述服务设置切换单元,用于将服务设置为灰度服务/正式服务,以及对正式服务/灰度服务进行一键切换,所述服务设置切换单元包括服务操作组件和灰度服务标识设置组件;
所述服务操作组件,用于通过所述服务切换页面进行灰度服务/正式服务的设置和切换;
所述灰度服务标识设置组件,用于查询注册中心中带有灰度服务标识的服务实例和不带有灰度服务标识的服务实例,移除带有灰度服务标识的服务实例的灰度服务标识,为不带有灰度服务标识的服务实例添加灰度服务标识;
所述服务切换页面,用于装载所述服务设置切换单元,对所述灰度服务/正式服务进行设置/一键切换。
其中,一键切换正式灰度服务:通过一键切换正式灰度服务功能可以高效将测试通过后的灰度服务转为正式服务让正式用户访问,而原来的正式服务转为灰度服务用于部署,通过页面点击一键切换后,先查询注册中心中所有服务灰度标识的服务实例和对应没有服务灰度标识的服务实例,移除带服务灰度标识的服务实例的服务灰度标识,没有服务灰度标识的服务实例添加服务灰度标识;
例如:正式服务配置为服务A(服务实例id:A-192-168-0-110-8080)、服务B(服务实例id:B-192-168-0-113-8083),灰度服务配置为服务A(服务实例id:A-192-168-0-111-8080)、服务B(服务实例id:B-192-168-0-113-8083),使用一键切换功能后,正式服务配置变为服务A(服务实例id:A-192-168-0-111-8080)、服务B(服务实例id:B-192-168-0-113-8083),灰度服务配置变为服务A(服务实例id:A-192-168-0-110-8080)、服务B(服务实例id:B-192-168-0-113-8083)。
防止实施人员因为服务器过多操作不当搞混正式服务和灰度服务导致变更有遗漏出现事故,并保证所有服务器应用服务的版本统一,不需要维护多套版本。
在一些实施例的一些可选的实现方式中,所述灰度服务配置模块还包括灰度服务发布调用单元;
所述灰度服务发布调用单元,用于查询灰度服务发布状态以及当前客户端状态,根据所述灰度服务发布状态以及当前客户端状态确定请求类型,所述灰度服务发布调用单元包括状态查询组件和请求配置组件;
所述状态查询组件,用于判断灰度发布标志为开启/关闭状态,以及判断当前客户端是否为灰度客户端状态;
所述请求配置组件,用于根据所述灰度发布标志状态和当前客户端状态执行请求配置流程,所述请求配置流程包括:
当灰度发布标志为关闭时,不改变请求前缀并直接调用接口;
当灰度发布标志为开启并且当前客户端不属于灰度客户端时,在请求前缀拼接正式前缀;
当灰度发布标志为开启并且当前客户端属于灰度客户端时,在请求前缀拼接灰度前缀。
其中,灰度服务发布查询:用于客户端查询是否属于灰度客户端,判断规则:根据客户端设备id和登录账号查询Redis中保存的允许使用的客户端设备id和登录账号信息是否匹配,如果匹配则视为灰度客户端;
根据接口返回数据进行判断是否需要在所有请求url中加入前缀、是否需要在接口请求头中加入灰度标签;灰度服务发布启动时客户端不需要修改代码,通过接口返回的配置确认是否按灰度服务格式发送请求,调用接口处理流程如图2所示;
调用接口流程说明:
客户端发起请求之前,先判断本地缓存中灰度发布配置信息,如果灰度发布标志为关闭则直接调用接口,如果灰度发布标志为开启并且当前客户端不属于灰度客户端,则在请求前缀url中拼接正式前缀;例如:原url为https://test.publish.com/app/getUser,拼接前缀后变为:https://test.publish.com/full/app/getUser;拼接正式前缀的请求会被代理到灰度API网关;
如果灰度发布标志为开启并且当前客户端属于灰度客户端,则在请求url中拼接灰度前缀,例如:原url为https://test.publish.com/app/getUser,拼接前缀后变为:https://test.publish.com/canary/app/getUser,并在请求头中加入灰度标识(请求头的key为ts,value为gray),拼接灰度前缀的请求会被代理到正式API网关,如果本地缓存中没有灰度发布配置信息,则跳过前面的步骤先调用握手接口,然后异步调用服务灰度发布查询接口,将返回结果(包括灰度发布标志、当前客户端是否为灰度客户端的信息)写入本地缓存用于下次app启动时的判断。
所述灰度服务更新模块,用于初始化服务灰度标识以及根据上述注册中心的通知对服务灰度标识进行变更;
在一些实施例的一些可选的实现方式中,所述所述灰度服务更新模块包括灰度服务查询单元和灰度服务变更单元;
所述灰度服务查询单元,用于当应用启动时,查询所述策略数据库中的灰度服务配置和服务灰度标识,将查询结果保存在内存中并传递给所述灰度负载均衡模块使用;
所述灰度服务变更单元,用于当收到注册中心变更通知时,重新从注册中心获取服务灰度标识并更新到本地缓存,实现动态变更发布配置。
其中,当应用启动时,灰度服务更新组件会查询Redis中的灰度服务配置和服务灰度标识,将查询结果保存在内存中用于灰度负载均衡组件使用,
当收到注册中心变更通知时,重新从注册中心获取服务灰度标识更新到本地缓存,从而实现动态变更发布配置,所有服务器无需重启。
所述灰度负载均衡模块,用于根据灰度服务状态选择对应的灰度负载均衡策略,根据所述灰度负载均衡策略将包含灰度标识的客户端请求轮流转发到包含灰度标识的服务;
在一些实施例的一些可选的实现方式中,所述灰度负载均衡模块包括灰度服务状态判断单元、灰度服务配置读取分析单元、第一灰度负载均衡策略调用单元、第二灰度负载均衡策略调用单元和第三灰度负载均衡策略调用单元;
所述灰度服务状态判断单元,用于判断灰度服务状态为状态一/状态二,所述状态一为:API网关和应用系统收到客户端请求,所述状态二为:当前灰度服务还需调用另一个灰度服务;
所述灰度服务配置读取分析单元,用于读取灰度发布标志和灰度服务实例id,并所述根据灰度发布标志判断是否开启灰度服务发布功能;
所述第一灰度负载均衡策略调用单元,用于当所述灰度服务状态判断单元判断为状态一并且所述灰度服务配置读取分析单元分析为开启灰度服务发布功能时,执行第一灰度负载均衡策略,所述第一灰度负载均衡策略为:当请求中包含灰度标识时,从所述注册中心获取服务注册信息,从所述服务注册信息中筛选出包含灰度标识的服务,再通过负载均衡原则将包含灰度标识的请求轮流转发到包含灰度标识的服务中;
所述第二灰度负载均衡策略调用单元,用于当所述灰度服务状态判断单元判断为状态二并且所述灰度服务配置读取分析单元分析为开启灰度服务发布功能时,执行第二灰度负载均衡策略,所述第二灰度负载均衡策略为:当请求中包含灰度标识时,从所述注册中心获取服务注册信息,从所述服务注册信息中筛选出包含灰度标识的服务,直接将包含灰度标识的请求转发到包含灰度标识的服务中;
所述第三灰度负载均衡策略调用单元,用于当所述灰度服务配置读取分析单元分析为关闭灰度服务发布功能时,执行第三灰度负载均衡策略,所述第三灰度负载均衡策略为:从注册中心取出所有服务,根据负载均衡默认轮询策略,按最小次数决定调用对应的服务。
其中,第一灰度负载均衡策略的执行条件以及执行过程为:当API网关和应用系统收到客户端请求时,该组件从内存中读取灰度服务配置,判断是否开启灰度服务发布功能,如果开启则按自定义的灰度负载均衡策略处理,再通过负载均衡原则,将包含灰度标识的请求轮流转发到包含灰度标识的服务;
第二灰度负载均衡策略的执行条件以及执行过程为:当灰度服务还需要调用另一个灰度服务时(例如:登录请求中,客户端请求——API网关,API网关路由——应用中心的服务处理登录逻辑,需要验证用户名密码是需要调用用户中心的服务进行验证,如果应用中心和用户中心的服务都属于灰度服务,则该调用为灰度服务调用另一个灰度服务),该组件从内存中读取灰度服务配置,判断是否开启灰度服务发布功能,因为同一个链路中会传递请求头数据,如果开启则直接通过自定义的灰度负载均衡策略将请求转发到对应灰度服务,实现全链路的灰度服务路由功能;
第三灰度负载均衡策略的执行条件以及执行过程为:如果没有开启则按负载均衡默认采用轮询策略处理:从注册中心取出所有服务,根据负载均衡默认轮询策略,按最小次数决定调用哪个服务,实现资源合理利用。
其中,所述自定义的灰度负载均衡策略为:当请求头中包含灰度标识则从内存中读取注册中心服务注册信息,从注册信息中筛选出包含灰度标识的服务;
负载均衡原则为:负载均衡默认采用轮询策略,将服务调用次数存储在列表中,每次调用将次数+1,按最小次数决定调用对应服务。
所述API网关,用于部署灰度API网关和正式API网关,并根据所述客户端请求从所述灰度服务配置模块中获取请求前缀名,根据所述请求前缀名将客户端请求代理到对应的API网关;
在一些实施例的一些可选的实现方式中,所述API网关包括灰度网关部署单元、正式网关部署单元和代理配置指定单元;
所述灰度网关部署单元,用于部署灰度API网关;
所述正式网关部署单元,用于部署正式API网关;
所述代理配置指定单元;用于根据代理请求前缀将请求代理到对应的API网关。
API网关需要部署两套,一套作为灰度API网关,一套作为正式API网关,通过Nginx反向代理配置中通过3个代理配置指定;
代理1指定当前缀为/canary时将请求代理到灰度API网关,
代理2指定当前缀为/full时将请求代理到正式API网关,
代理3指定其他白名单前缀时根据负载将请求代理到灰度API网关或者正式API网关,
通过这个机制,既可以实现API网关的灰度发布,也可以其他时候同时使用所有API网关,实现资源的合理利用。
开启灰度发布功能时的数据流向如图3所示,关闭灰度发布功能时的数据流向如图4所示;
所述应用系统,用于接收所述管理端请求/用户端请求,根据所述管理端请求/用户端请求执行对应的操作。
本方案通过配置页面动态指定需要灰度的服务器地址,并设置允许访问灰度服务的客户端或用户。配置完成后根据配置的灰度服务器地址在注册中心中将属于灰度服务器的服务加入服务灰度标记;客户端根据通讯握手后下发的灰度策略在所有请求的请求头中加入服务灰度标记;请求经过API网关时根据自定义的负载均衡规则将请求路由到有服务灰度标记的灰度服务,正式用户的请求路由到正式服务,此时在灰度服务器上部署服务不会影响到正式用户的使用。当灰度服务验证完成后,在后管配置中一键切换灰度服务器和正式服务器,使灰度服务器和正式服务器互换,重复前面的部署步骤完成所有服务的部署后关闭灰度服务开关;用户无感知的情况下完成服务部署,有效提升用户体验,并同时支持虚拟机和容器环境。
第二方面本申请提出一种动态灰度服务发布方法,所述方法应用于一种动态灰度服务发布系统,如图5所示,包括以下步骤:
S100:应用系统的管理端通过灰度服务配置模块开启灰度服务发布功能并配置灰度服务;
S200:所述灰度服务配置模块将灰度服务发布的相关配置数据保存到策略数据库,同时将服务灰度标识更新到注册中心;
S300:注册中心发出配置变更通知,通知所有已注册的服务;
S400:被通知的API网关和应用系统通过灰度服务更新模块将变更数据更新到本地缓存;
S500:当API网关和应用系统收到客户端请求时,API网关和应用系统根据灰度负载均衡模块从本地缓存中读取配置,根据配置判断请求属于灰度前缀还是正式前缀,将请求路由到灰度服务/正式服务完成整个处理过程。
第三方面本申请提出一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
第四方面本申请提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
在本公开所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本公开实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上仅是本发明优选的实施方式,需指出的是,对于本领域技术人员在不脱离本技术方案的前提下,作出的若干变形和改进的技术方案应同样视为落入本权利要求书要求保护的范围。
Claims (10)
1.一种动态灰度服务发布系统,其特征在于:系统由注册中心、策略数据库、API网关、应用系统、灰度负载均衡模块、灰度服务更新模块和灰度服务配置模块共同集成;
所述注册中心,用于记录灰度服务标识,当所述灰度服务标识发生变更时通知所述API网关和应用系统更新灰度服务标识;
所述策略数据库,用于在灰度服务发布开启时读写所述灰度服务配置模块配置/变更的策略;
所述灰度服务配置模块,用于根据所述应用系统的管理端请求执行服务配置操作,所述服务配置操作包括:对灰度服务发布进行开启/关闭,将服务设置为灰度服务/正式服务,对正式服务/灰度服务进行一键切换,以及对灰度客户端策略进行变更;
所述灰度服务更新模块,用于初始化服务灰度标识以及根据上述注册中心的通知对服务灰度标识进行变更;
所述灰度负载均衡模块,用于根据灰度服务状态选择对应的灰度负载均衡策略,根据所述灰度负载均衡策略将包含灰度标识的客户端请求轮流转发到包含灰度标识的服务;
所述API网关,用于部署灰度API网关和正式API网关,并根据所述客户端请求从所述灰度服务配置模块中获取请求前缀名,根据所述请求前缀名将客户端请求代理到对应的API网关;
所述应用系统,用于接收所述管理端请求/用户端请求,根据所述管理端请求/用户端请求执行对应的操作。
2.根据权利要求1所述的系统,其特征在于:所述灰度服务配置模块包括灰度客户端策略变更单元;
所述灰度客户端策略变更单元,用于对灰度服务发布进行开启/关闭,以及对灰度客户端策略进行变更;所述灰度客户端策略变更单元包括灰度服务选择组件和灰度服务数据配置组件;
所述灰度服务选择组件,用于在灰度服务发布功能开启后,任意选择添加/移除至少一个灰度服务,调用所述注册中心更新所述灰度服务的服务灰度标识并向所述应用系统发出变更通知;
所述灰度服务数据配置组件,用于将灰度服务配置写入所述策略数据库进行配置数据查询。
3.根据权利要求2所述的系统,其特征在于:所述灰度服务配置模块还包括服务设置切换单元和服务切换页面;
所述服务设置切换单元,用于将服务设置为灰度服务/正式服务,以及对正式服务/灰度服务进行一键切换,所述服务设置切换单元包括服务操作组件和灰度服务标识设置组件;
所述服务操作组件,用于通过所述服务切换页面进行灰度服务/正式服务的设置和切换;
所述灰度服务标识设置组件,用于查询注册中心中带有灰度服务标识的服务实例和不带有灰度服务标识的服务实例,移除带有灰度服务标识的服务实例的灰度服务标识,为不带有灰度服务标识的服务实例添加灰度服务标识;
所述服务切换页面,用于装载所述服务设置切换单元,对所述灰度服务/正式服务进行设置/一键切换。
4.根据权利要求3所述的系统,其特征在于:所述灰度服务配置模块还包括灰度服务发布调用单元;
所述灰度服务发布调用单元,用于查询灰度服务发布状态以及当前客户端状态,根据所述灰度服务发布状态以及当前客户端状态确定请求类型,所述灰度服务发布调用单元包括状态查询组件和请求配置组件;
所述状态查询组件,用于判断灰度发布标志为开启/关闭状态,以及判断当前客户端是否为灰度客户端状态;
所述请求配置组件,用于根据所述灰度发布标志状态和当前客户端状态执行请求配置流程,所述请求配置流程包括:
当灰度发布标志为关闭时,不改变请求前缀并直接调用接口;
当灰度发布标志为开启并且当前客户端不属于灰度客户端时,在请求前缀拼接正式前缀;
当灰度发布标志为开启并且当前客户端属于灰度客户端时,在请求前缀拼接灰度前缀。
5.根据权利要求4所述的系统,其特征在于:所述所述灰度服务更新模块包括灰度服务查询单元和灰度服务变更单元;
所述灰度服务查询单元,用于当应用启动时,查询所述策略数据库中的灰度服务配置和服务灰度标识,将查询结果保存在内存中并传递给所述灰度负载均衡模块使用;
所述灰度服务变更单元,用于当收到注册中心变更通知时,重新从注册中心获取服务灰度标识并更新到本地缓存,实现动态变更发布配置。
6.根据权利要求5所述的系统,其特征在于:所述灰度负载均衡模块包括灰度服务状态判断单元、灰度服务配置读取分析单元、第一灰度负载均衡策略调用单元、第二灰度负载均衡策略调用单元和第三灰度负载均衡策略调用单元;
所述灰度服务状态判断单元,用于判断灰度服务状态为状态一/状态二,所述状态一为:API网关和应用系统收到客户端请求,所述状态二为:当前灰度服务还需调用另一个灰度服务;
所述灰度服务配置读取分析单元,用于读取灰度发布标志和灰度服务实例id,并所述根据灰度发布标志判断是否开启灰度服务发布功能;
所述第一灰度负载均衡策略调用单元,用于当所述灰度服务状态判断单元判断为状态一并且所述灰度服务配置读取分析单元分析为开启灰度服务发布功能时,执行第一灰度负载均衡策略,所述第一灰度负载均衡策略为:当请求中包含灰度标识时,从所述注册中心获取服务注册信息,从所述服务注册信息中筛选出包含灰度标识的服务,再通过负载均衡原则将包含灰度标识的请求轮流转发到包含灰度标识的服务中;
所述第二灰度负载均衡策略调用单元,用于当所述灰度服务状态判断单元判断为状态二并且所述灰度服务配置读取分析单元分析为开启灰度服务发布功能时,执行第二灰度负载均衡策略,所述第二灰度负载均衡策略为:当请求中包含灰度标识时,从所述注册中心获取服务注册信息,从所述服务注册信息中筛选出包含灰度标识的服务,直接将包含灰度标识的请求转发到包含灰度标识的服务中;
所述第三灰度负载均衡策略调用单元,用于当所述灰度服务配置读取分析单元分析为关闭灰度服务发布功能时,执行第三灰度负载均衡策略,所述第三灰度负载均衡策略为:从注册中心取出所有服务,根据负载均衡默认轮询策略,按最小次数决定调用对应的服务。
7.根据权利要求6所述的系统,其特征在于:所述API网关包括灰度网关部署单元、正式网关部署单元和代理配置指定单元;
所述灰度网关部署单元,用于部署灰度API网关;
所述正式网关部署单元,用于部署正式API网关;
所述代理配置指定单元;用于根据代理请求前缀将请求代理到对应的API网关。
8.一种动态灰度服务发布方法,所述方法应用于如权利要求1所述的一种动态灰度服务发布系统,其特征在于:包括以下步骤:
应用系统的管理端通过灰度服务配置模块开启灰度服务发布功能并配置灰度服务;
所述灰度服务配置模块将灰度服务发布的相关配置数据保存到策略数据库,同时将服务灰度标识更新到注册中心;
注册中心发出配置变更通知,通知所有已注册的服务;
被通知的API网关和应用系统通过灰度服务更新模块将变更数据更新到本地缓存;
当API网关和应用系统收到客户端请求时,API网关和应用系统根据灰度负载均衡模块从本地缓存中读取配置,根据配置判断请求属于灰度前缀还是正式前缀,将请求路由到灰度服务/正式服务完成整个处理过程。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可以在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求8所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求8所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311838018.4A CN117714459A (zh) | 2023-12-28 | 2023-12-28 | 一种动态灰度服务发布系统、方法、设备及计算机介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311838018.4A CN117714459A (zh) | 2023-12-28 | 2023-12-28 | 一种动态灰度服务发布系统、方法、设备及计算机介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117714459A true CN117714459A (zh) | 2024-03-15 |
Family
ID=90153299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311838018.4A Pending CN117714459A (zh) | 2023-12-28 | 2023-12-28 | 一种动态灰度服务发布系统、方法、设备及计算机介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117714459A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112073320A (zh) * | 2020-11-12 | 2020-12-11 | 深圳壹账通智能科技有限公司 | 基于云网关的api灰度发布方法、装置及计算机设备 |
CN113242281A (zh) * | 2021-04-26 | 2021-08-10 | 微梦创科网络科技(中国)有限公司 | 一种灰度发布方法、装置、设备及存储介质 |
WO2022037272A1 (zh) * | 2020-08-21 | 2022-02-24 | 烽火通信科技股份有限公司 | 灰度发布方法、装置、设备及可读存储介质 |
WO2022142536A1 (zh) * | 2020-12-28 | 2022-07-07 | 京东科技控股股份有限公司 | 灰度发布方法、系统、装置、设备及存储介质 |
-
2023
- 2023-12-28 CN CN202311838018.4A patent/CN117714459A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022037272A1 (zh) * | 2020-08-21 | 2022-02-24 | 烽火通信科技股份有限公司 | 灰度发布方法、装置、设备及可读存储介质 |
CN112073320A (zh) * | 2020-11-12 | 2020-12-11 | 深圳壹账通智能科技有限公司 | 基于云网关的api灰度发布方法、装置及计算机设备 |
WO2022142536A1 (zh) * | 2020-12-28 | 2022-07-07 | 京东科技控股股份有限公司 | 灰度发布方法、系统、装置、设备及存储介质 |
CN113242281A (zh) * | 2021-04-26 | 2021-08-10 | 微梦创科网络科技(中国)有限公司 | 一种灰度发布方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111600930B (zh) | 微服务请求的流量管理方法、装置、服务器及存储介质 | |
US20210345078A1 (en) | Method of Discovering Services Provided by a Network Repository Function | |
CN101217542B (zh) | 通信网中的策略协调 | |
US7426737B2 (en) | Method and apparatus for operating an open API network having a proxy | |
CN109451451A (zh) | 终端漫游方法、设备及存储介质 | |
CN101931619B (zh) | 可插入的联系解析 | |
US20120039459A1 (en) | Communication center methods and apparatus | |
CN109088909B (zh) | 一种基于商户类型的服务灰度发布方法及设备 | |
CN101909277A (zh) | 实名制管理的实现系统和方法、以及终端 | |
CN108958949A (zh) | 应用程序的调用方法及系统 | |
CN112685287B (zh) | 产品数据的测试方法、装置、存储介质及电子装置 | |
US7212621B1 (en) | Feature interactions | |
CN107172206A (zh) | 一种路由器升级方法及系统 | |
CN114064062B (zh) | 基于Kubernetes平台和负载均衡组件的缺省灰度发布方法和装置 | |
CN116112175A (zh) | 基于区块链的数字孪生网络的业务处理方法、装置及介质 | |
CN117714459A (zh) | 一种动态灰度服务发布系统、方法、设备及计算机介质 | |
CN1653791B (zh) | 用语音xml实现电话业务的方法和系统 | |
JP3691437B2 (ja) | 次世代ネットワークサービス及びインテリジェントデータネットワークルーターのための進歩型サービスアーキテクチャー | |
US7260618B2 (en) | Method in an embedded environment for arranging functionality of a remote device | |
CN101924645B (zh) | 一种设备管理方法、装置及系统 | |
CN114615321B (zh) | 流量处理方法和装置 | |
US20190028880A1 (en) | Method for accessing context data by network service component, apparatus, and system | |
EP1895417A1 (en) | Data storage system and method for testing new applications | |
CN114048028A (zh) | 服务调用方法、装置、存储介质和电子设备 | |
CN113691583A (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 |