一种灰度发布方法及装置技术领域
本发明涉及灰度发布技术领域,尤其涉及一种灰度发布方法及装置。
背景技术
目前的软件产品一般需要通过部分用户试用,经过一个测试阶段确认产品
没有问题后再正式发布,面向全部用户。也即,软件产品的发布需要及早获得
用户的意见反馈,完善产品功能,提升产品质量,让用户参与产品测试,加强
与用户互动,降低产品升级所影响的用户范围。
软件产品的发布一般采用灰度发布的方式。灰度发布是指在黑与白之间,
能够平滑过渡的一种发布方式。比如,在A测试(test)这种灰度发布方式中,
是让一部分用户继续用A,另一部分用户开始用B,如果用户对B没有什么反
对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保
证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响
度。
针对任一软件产品,需要在数据库中存储与该软件产品相关的数据。在单
数据库模型下的数据存储方式中,灰度环境与生产环境需要共用一套数据库,
在进行灰度发布时,会使生产环境与灰度环境的配置数据产生冲突。为了解决
生产环境与灰度环境的配置数据产生冲突的问题,有时会采用多套数据库模
式,一套灰度环境对应一套数据库,生产环境对应另外的一套数据库。随着数
据库中数据量的增加,这种方式将大大增加数据库的部署和维护成本。
发明内容
本发明实施例提供一种灰度发布方法及装置,用以解决单数据库模型下的
数据存储方式会使生产环境与灰度环境的配置数据产生冲突,而多套数据库模
式会增加数据库的部署和维护成本的问题。
本发明实施例提供一种灰度发布方法,包括:
应用服务器接收代理服务器发送的用户的访问请求;
在基于所述访问请求,确定用户需要访问数据库的配置表时,根据数据库
中不同配置表的标识信息,访问所述应用服务器所负责访问的配置表;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
可选地,所述应用服务器接收代理服务器发送的用户的访问请求之后,还
包括:
在基于所述访问请求,确定用户需要访问数据库的业务表时,将访问请求
所指示的修改后的字段添加在数据库中的业务表中,并保留业务表中该修改后
的字段所对应的修改前的字段。
可选地,所述方法还包括:
周期性对数据库的业务表中修改前的字段进行删除处理。
本发明另一实施例提供的一种灰度发布方法,包括:
代理服务器接收用户的访问请求;
所述代理服务器根据所述访问请求中携带的用户标识,确定为所述用户提
供服务的应用服务器;
所述代理服务器指示确定的所述应用服务器基于所述访问请求,访问数据
库中的数据;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
本发明实施例提供的一种灰度发布装置,包括:
接收模块,用于接收代理服务器发送的用户的访问请求;
访问模块,用于在基于所述访问请求,确定用户需要访问数据库的配置表
时,根据数据库中不同配置表的标识信息,访问所述应用服务器所负责访问的
配置表;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
本发明另一实施例提供的一种灰度发布装置,包括:
接收模块,用于接收用户的访问请求;
确定模块,用于根据所述访问请求中携带的用户标识,确定为所述用户提
供服务的应用服务器;
指示模块,用于指示确定的所述应用服务器基于所述访问请求,访问数据
库中的数据;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
本发明实施例针对同一应用对象,设计一套数据库,该数据库中包括不同
类型的配置表和一种业务表。在具体实施中,为每个配置表设置标识信息,基
于该标识信息,不同的应用服务器可以负责访问不同的配置表。采用本发明实
施例,对生产环境和灰度环境下的配置数据进行分开处理,避免了生产环境与
灰度环境的配置数据产生冲突的问题;并且,本发明实施例在一套数据库中设
置不同类型的配置表和一种业务表,除了可以对生产环境和灰度环境下的配置
数据进行分开访问外,还可以实时进行生产环境和灰度环境下的业务数据的同
步,这种方式显然可以大大减少数据库的部署和维护成本。
附图说明
图1为本发明实施例一提供的灰度发布方法流程图;
图2为本发明实施例二提供的灰度发布方法流程图;
图3为本发明实施例三提供的灰度发布方法流程图;
图4为与图3对应的系统结构示意图;
图5为本发明实施例四提供的灰度发布装置结构示意图;
图6为本发明实施例五提供的灰度发布装置结构示意图。
具体实施方式
本发明实施例中,将数据库中的配置表和业务表分别对待;具体地,由于
在灰度环境下经常变更配置表中的配置数据,而生产环境下的配置表中的配置
数据通常保持不变,另外,灰度环境下的业务数据和生产环境下的业务数据通
常需要同步,因此,本发明实施例针对同一应用对象,设计一套数据库,该数
据库中包括不同类型的配置表和一种业务表。在具体实施中,为每个配置表设
置标识信息,基于该标识信息,不同的应用服务器可以负责访问不同的配置表。
采用本发明实施例,对生产环境和灰度环境下的配置数据进行分开处理,避免
了生产环境与灰度环境的配置数据产生冲突的问题;并且,本发明实施例在一
套数据库中设置不同类型的配置表和一种业务表,除了可以对生产环境和灰度
环境下的配置数据进行分开访问外,还可以实时进行生产环境和灰度环境下的
业务数据的同步,这种方式显然可以大大减少数据库的部署和维护成本。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,为本发明实施例一提供的灰度发布方法流程图,包括以下步
骤:
S101:应用服务器接收代理服务器发送的用户的访问请求。
S102:在基于所述访问请求,确定用户需要访问数据库的配置表时,根据
数据库中不同配置表的标识信息,访问所述应用服务器所负责访问的配置表;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存储配
置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表和生
产环境下的配置表。
本发明实施例中的配置表,是指系统配置相关的字典表或数据表,改动配
置表对应用系统的影响较大,主要包括两个方面的影响,一个方面是相当于修
改了系统的环境变量,使系统全局受到影响,如修改字符集编码(也即修改语
种)、修改登录模式等。另一方面是配置表中的配置数据会影响到页面展示,
如网页的导航菜单配置数据,如果增加或修改这部分配置数据,会使显示页面
发生变化。本发明实施例中的业务表,是指对在应用运行过程中产生的业务数
据形成的表,其改动对应用系统影响较小。
可选地,所述数据库中包括对应同一应用对象的多个灰度环境下的配置表
和一个生产环境下的配置表。
在具体实施过程中,对应用程序数据库的表进行梳理,将结构或数据变化
较频繁的配置表提取出来,每种灰度环境对应一张配置表(可以有多种或一种
灰度环境),生产环境对应一张配置表,生产环境和灰度环境对应同一张业务
表。并在具体实施中,为每张配置表添加标识信息,比如,某应用程序在一套
数据库中具有两种灰度环境下的配置表和一个生产环境下的配置表,则生产环
境对应后缀名为_A的配置表,灰度环境1对应后缀名为_B1的配置表,灰度
环境2对应后缀名为_B2的配置表。当然,数据库中也很有可能会有结构或数
据变化不频繁的配置表,对这部分配置表可以不做分离处理。
在具体实施中,不同的应用服务器负责访问不同类型的配置表,也即,每
个应用服务器当前对应一种应用环境(一种灰度环境或生产环境)。比如,某
应用在数据库中拥有一个灰度环境下的配置表A和一个生产环境下的配置表
B,使一个应用服务器强制对应配置表A或B,在接收到用户的访问请求时,
通过对用户身份的识别,使之分流到相应的应用服务器上去,应用服务器基于
用户的访问请求,访问自身对应的配置表A或B。如果该应用在数据库中还拥
有部分没有进行应用环境分离的配置表,还可以基于用户的访问请求,直接访
问这部分没有进行应用环境分离的配置表。
这里,需要说明的是,一个应用服务器负责访问一种具有标识信息的配置
表,各应用服务器可以共同访问没有作标识的配置表(也即没有进行应用环境
分离的配置表),应用服务器所负责访问一种具有标识信息的配置表,在当前
可以是生产环境下的配置表,也可以是灰度环境下的配置表,但该配置表的类
型是可以变化的,比如,在经过一段时间的测试后,灰度环境下的配置表有可
能转变为生产环境下的配置表。
在具体实施中,本发明实施例在基于应用环境,对配置表进行拆分时,基
于以下几个原则:第一,最少分离原则,即将尽量对配置表拆分的个数越少越
好,因此配置表拆分的个数越多,维护成本会越高。举例来说,如果一张配置
表的数据变化或结构变化,会使得正式环境或灰度环境中的一个出现致命问题
时(比如导致业务不能正常使用、页面无法正常打开或环境变量被修改时等)。
则需要将该配置表被拆分成不同类型的配置表。比如一张配置表配置的是网站
的导航栏菜单,在下一个版本中,导航栏要增加一个新的链接。如果不对当前
的配置表作分离,则在灰度环境发布的时候,正式环境也会出现这个新链接。
一则这个链接不应出现在正式环境中,二则可能这个链接指向的页面还没发布
在生产环境中(只发布在灰度环境中),因此导致用户在正式环境中访问该链
接直接出现404的错误。第二,业务表单一性原则,即只采用一张业务表存放
业务数据,避免业务数据同步带来的风险。
可选地,所述应用服务器接收代理服务器发送的用户的访问请求之后,还
包括:
在基于所述访问请求,确定用户需要访问数据库的业务表时,将访问请求
所指示的修改后的字段添加在数据库的业务表中,并保留业务表中该修改后的
字段所对应的修改前的字段。
本发明实施例还提供了业务表增量更新机制。由于针对生产环境和灰度环
境的业务表只有一张,针对业务表中的数据,表字段只增不减;如表字段名称
需要变换,则采用新增字段的方式来实现,同时保留原有结构。这样使得业务
表能在正式环境与灰度环境中共用。如需要将一张订单表中的订单类型字段进
行修改,则可以新增一个订单类型字段,在灰度环境中使用新增字段,而在生
产环境继续使用原有的字段,这样就实现了一张业务表可以在两套不同的版本
中兼容。当然,对配置表也可以采用这种增量更新机制,但由于配置表进行了
应用环境分离,因此使用该机制的必要性不大。
可选地,所述方法还包括:
周期性对数据库的业务表中修改前的字段进行删除处理。
在具体实施过程中,可以每隔一段时间对数据库进行梳理,删除业务表中
废弃的字段,以避免长期的增量更新所带来数据结构的冗余。
上述内容的介绍中,提到“在接收到用户的访问请求时,通过对用户身份
的识别,使之分流到相应的应用服务器上去”,这里,进行访问请求分流的即
为代理服务器。具体见以下实施例二,实施例二对代理服务器侧的工作流程作
了介绍,具体实施与上述实施例一重复之处,不再赘述。
如图2所示,为本发明实施例二提供的灰度发布方法流程图,包括以下步
骤:
S201:代理服务器接收用户的访问请求;
S202:所述代理服务器根据所述访问请求中携带的用户标识,确定为所述
用户提供服务的应用服务器;
S203:所述代理服务器指示确定的所述应用服务器基于所述访问请求,访
问数据库中的数据;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
可选地,所述数据库中包括对应同一应用对象的多个灰度环境下的配置表
和一个生产环境下的配置表。
如图3所示,为本发明实施例三提供的灰度发布方法流程图,包括以下步
骤:
S301:代理服务器接收用户的访问请求。
S302:代理服务器根据所述访问请求中携带的用户标识,确定为所述用户
提供服务的应用服务器,并将用户的访问请求发送给确定的应用服务器。
S303:应用服务器解析代理服务器发送的用户的访问请求,若基于所述访
问请求,确定用户需要访问数据库的配置表,则进入S304,若基于所述访问请
求,确定用户需要访问数据库的业务表,则进入S305。
S304:应用服务器在确定用户需要访问数据库的配置表时,根据数据库中
不同配置表的标识信息,访问所述应用服务器所负责访问的配置表;其中,所
述数据库中包括不同类型的配置表和一种业务表,配置表用于存储配置数据,
业务表用于存储业务数据,配置表类型包括灰度环境下的配置表和生产环境下
的配置表。
S305:应用服务器在确定用户需要访问数据库的业务表时,将访问请求所
指示的修改后的字段添加在数据库中的业务表中,并保留业务表中该修改后的
字段所对应的修改前的字段。
如图4所示,为与图3对应的系统结构示意图。用户终端通过互联网向代
理服务器发起访问请求,代理服务器识别用户身份(即当前与哪个应用服务器
进行了关联),将其分流到相应的应用服务器。若访问的是配置表,则应用服
务器分析配置表的标识信息,访问自身负责的配置表。
基于同一发明构思,本发明实施例中还提供了一种与灰度发布方法对应的
灰度发布装置,由于该装置解决问题的原理与本发明实施例灰度发布方法相
似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,为本发明实施例四提供的灰度发布装置结构示意图,包括:
接收模块51,用于接收代理服务器发送的用户的访问请求;
访问模块52,用于在基于所述访问请求,确定用户需要访问数据库的配置
表时,根据数据库中不同配置表的标识信息,访问所述应用服务器所负责访问
的配置表;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
可选地,所述访问模块52还用于:
在基于所述访问请求,确定用户需要访问数据库的业务表时,将访问请求
所指示的修改后的字段添加在数据库中的业务表中,并保留业务表中该修改后
的字段所对应的修改前的字段。
可选地,所述访问模块52还用于:
周期性对数据库的业务表中修改前的字段进行删除处理。
可选地,所述数据库中包括对应同一应用对象的多个灰度环境下的配置表
和一个生产环境下的配置表。
如图6所示,为本发明实施例五提供的灰度发布装置结构示意图,包括:
接收模块61,用于接收用户的访问请求;
确定模块62,用于根据所述访问请求中携带的用户标识,确定为所述用户
提供服务的应用服务器;
指示模块63,用于指示确定的所述应用服务器基于所述访问请求,访问数
据库中的数据;
其中,所述数据库中包括不同类型的配置表和一种业务表,配置表用于存
储配置数据,业务表用于存储业务数据,配置表类型包括灰度环境下的配置表
和生产环境下的配置表。
可选地,所述数据库中包括对应同一应用对象的多个灰度环境下的配置表
和一个生产环境下的配置表。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计
算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结
合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包
含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、
CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产
品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和
/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/
或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入
式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算
机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一
个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设
备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中
的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个
流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使
得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处
理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个
流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基
本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要
求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发
明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及
其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。