基于微服务的灰度发布方法技术

技术编号:14312856 阅读:87 留言:0更新日期:2016-12-30 13:28
本发明专利技术提供的基于微服务的灰度发布方法,在基于微服务思想的服务器架构设计下,采取小流量更新的部署方式,并根据实时数据分析结果决定后续采取的策略。该方法有效降低了发布风险,可以把发布中产生的问题限制在可控范围内。

【技术实现步骤摘要】

本专利技术涉及基于微服务的灰度发布方法
技术介绍
目前,许多企业都有服务器集群,服务器集群由大量业务服务器组成,为用户提供服务。但很多服务器集群的架构还是基于传统的MVC层级关系,一个服务一般包含了许多个业务模块,产生了较多的业务耦合,因而在部署方面也存在一定的耦合风险。例如,需要更新某个服务中的A模块的业务,但由于A模块在该服务中无法分离,难以避免的会部署全部服务,导致为了更新小功能不得不更新其所在服务的全部功能,易造成部署风险。此外,部署服务的过程,尽管已经有了灰度发布(灰度发布是指在黑与白之间、能够平滑过渡的一种发布方式。例如AB测试就是一种灰度发布,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在发布开始的时候就可以发现、调整问题,问题的影响范围有限。),但现有的灰度发布方法在发布后的回滚和监控方面存在缺陷,无法非常细力度、多维度的部署需要更新的服务,也无法快速得知部署后的实际运行情况。在说明书“
技术介绍
”部分公开的内容,有助于本领域技术人员理解本专利技术的技术方案,但不应据此认为这些内容一定属于现有技术或公知常识。
技术实现思路
为了克服“
技术介绍
”部分所反映的缺陷,本专利技术提供基于微服务的灰度发布方法。基于微服务的灰度发布方法,包括:反向代理服务器获取原始发布请求中的维度参数;反向代理服务器调用存储了灰度发布策略的存储器,将维度参数和灰度发布策略匹配,确定原始发布请求对应的微服务业务服务器;反向代理服务器向对应的微服务业务服务器发布原始发布请求;灰度发布过程中进行实时数据分析,根据分析结果采取后续策略。进一步的,维度参数包括渠道号、客户端版本、请求网关的业务方法、客户端业务来源。进一步的,不同的微服务相互独立、互不干扰。进一步的,微服务能够进行负载均衡的集群部署。进一步的,后续策略包括回滚或者进一步扩大发布范围。更进一步的,如果后续策略为回滚,则对灰度发布过程中产生的数据进行数据迁移。更进一步的,如果灰度发布过程中产生的数据存在数据变更,则单独保存历史数据。本专利技术技术方案中,“包括”、“用于”等词语应按照开放式表达方式理解。本领域技术人员通过阅读本说明书并结合现有技术或公知常识能够获知的内容,本说明书中不再赘述。本专利技术提供的基于微服务的灰度发布方法,在基于微服务思想的服务器架构设计下,采取小流量更新的部署方式,并根据实时数据分析结果决定后续采取的策略。该方法有效降低了发布风险,可以把发布中产生的问题限制在可控范围内。附图说明图1为具体实施方式中实现基于微服务的灰度发布方法的部件架构的简化示意图。图2为具体实施方式中基于微服务的灰度发布方法的流程图。具体实施方式下面对本专利技术的实施方式进行进一步的具体说明。但应注意,本专利技术的范围并不局限于所描述的具体技术方案。任何对所描述的具体技术方案中的技术要素进行相同或等同替换获得的技术方案或本领域技术人员在所描述的具体技术方案的基础上不经过创造性劳动就可以获得的技术方案,都应当视为落入本专利技术的保护范围。实现本专利技术技术方案,首先需要进行基础工作,对现有业务的业务层次和模块进行分析,将其中相对独立的业务部分和非常重要的业务部分拆分出来,把这些业务部分划分成一个个的子服务,此即为微服务。微服务的特点是不同的微服务相互独立、互不干扰。将现有业务拆分为微服务,实质上是通过比较细力度的业务分析,把传统的服务器架构转变为松耦合的微服务架构,从而实现业务的解耦。例如,现有的业务中存在发送短信的模块,则可以将该业务拆分为注册业务微服务和短信发送微服务,两个微服务部署在不同的业务服务器,形成注册业务微服务的业务服务器集群和短信发送微服务的业务服务器集群。同时设置消息队列集群,利用消息中间件(例如KAFKA,一种高吞吐量的开源分布式发布订阅消息系统。)在不同的微服务集群之间推送消息。来自客户端的原始请求首先由注册业务微服务进行处理,注册业务微服务发现原始请求中包括向指定用户发送短信的请求时,通过消息中间件推送消息到短信发送微服务,短信发送微服务收到消息后,发送短信到指定的用户,如果出现发送失败,可以通过重试等策略在短信发送微服务的内部进行调整。这样注册业务微服务和短信发送微服务就实现了解耦,两个微服务相互独立,互不干扰。如上所述,将现有业务拆分为微服务后,每个微服务都要部署到多个业务服务器上,形成微服务业务服务器集群。为了保证微服务的稳定性和可扩展性,要求微服务能够进行负载均衡的集群部署。反向代理服务器NGINX能够实现负载均衡配置。而将负载均衡配置自动化部署到相应的业务服务器上,可以利用开源的自动化持续集成工具jenkins和相应的shell脚本实现,业务服务器可以根据其IP地址进行识别。本专利技术技术方案“基于微服务的灰度发布方法”的实现需要基于一定的部件架构,图1为部件架构的简化示意图。一般客户端处于因特网(internet),而业务服务器处于内部的局域网,因此客户端和业务服务器之间需要通过反向代理服务器通信。多个部署了微服务的业务服务器组成微服务业务服务器集群。为了简化显示,图1中的客户端、反向代理服务器和存储器只画了一个,而实际中它们的数量往往非常多。图1中的微服务业务服务器集群只画了两个,每个微服务业务服务器集群中只有两个业务服务器,实际中微服务业务服务器集群和每个集群中业务服务器的数量也远远多于此。图1中的连线代表通信关系。基于微服务的灰度发布方法,其流程如图2所示,包括:S201:反向代理服务器获取原始发布请求中的维度参数。具体的,本步骤中,客户端向反向代理服务器发送原始发布请求,原始发布请求中包括了维度参数。维度参数用于标记客户端的多样性,使得客户端和服务器端有更多沟通上的区分度。常见的维度参数包括渠道号、客户端版本、请求网关的业务方法、客户端业务来源。渠道号(CHANNEL)反映了客户端所处的市场渠道。客户端版本(VERSION)反映了客户端软件的版本号信息。请求网关的业务方法(METHOD)为请求的接口方法名称,例如登录(login)、注册(register)等。客户端业务来源(REQUEST_SOURCE_INDEX)为约定的标记值,用于区分每个业务的来源。此外,维度参数还可以包括客户端的IP地址、客户端的UA(用户代理,User-Agent)等。渠道号、客户端版本、请求网关的业务方法、客户端业务来源等维度参数可以设置在客户端原始发布请求的代码中,作为原始发布请求的规定参数。原始发布请求中的维度参数能够被反向代理服务器以get/post方式(get用来从服务器上获得数据,post用来向服务器上传递数据)获取。反向代理服务器可以选用NGINX,NGINX是一款高性能、轻量级的反向代理服务器,LUA语言(一个小巧的脚本语言)能够嵌入到NGINX的配置中,形成功能强大的NGINX-LUA模块。S202:反向代理服务器调用存储了灰度发布策略的存储器,将维度参数和灰度发布策略匹配,确定原始发布请求对应的微服务业务服务器。具体的,本步骤中,存储器中事先存储了灰度发布的发布策略,发布策略中包括了维度参数和相对应的微服务业务服务器的IP地址。这样,反向代理服务器调本文档来自技高网...
基于微服务的灰度发布方法

【技术保护点】
基于微服务的灰度发布方法,其特征在于,所述的方法包括:反向代理服务器获取原始发布请求中的维度参数;反向代理服务器调用存储了灰度发布策略的存储器,将维度参数和灰度发布策略匹配,确定原始发布请求对应的微服务业务服务器;反向代理服务器向对应的微服务业务服务器发布原始发布请求;灰度发布过程中进行实时数据分析,根据分析结果采取后续策略。

【技术特征摘要】
1.基于微服务的灰度发布方法,其特征在于,所述的方法包括:反向代理服务器获取原始发布请求中的维度参数;反向代理服务器调用存储了灰度发布策略的存储器,将维度参数和灰度发布策略匹配,确定原始发布请求对应的微服务业务服务器;反向代理服务器向对应的微服务业务服务器发布原始发布请求;灰度发布过程中进行实时数据分析,根据分析结果采取后续策略。2.根据权利要求1所述的方法,其特征在于,所述的维度参数包括渠道号、客户端版本、请求网关的业务方法、客户端业务来源。3.根...

【专利技术属性】
技术研发人员:柳洋
申请(专利权)人:北京海誉动想科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1