CN110399142B - 一种灰度与生产环境版本隔离的方法及系统 - Google Patents
一种灰度与生产环境版本隔离的方法及系统 Download PDFInfo
- Publication number
- CN110399142B CN110399142B CN201910686132.7A CN201910686132A CN110399142B CN 110399142 B CN110399142 B CN 110399142B CN 201910686132 A CN201910686132 A CN 201910686132A CN 110399142 B CN110399142 B CN 110399142B
- Authority
- CN
- China
- Prior art keywords
- version
- tag
- storing
- gray scale
- version table
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种灰度与生产环境版本隔离的方法及系统,属于灰度发布、版本控制技术领域,解决现有技术中Product和gray共用一套数据库的问题。本发明在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,一套版次表包括tag_version表和version表;将原有的配置表中的结构化的配置信息抽取成字符串,每种类型的配置信息抽取成单独一条字符串,并存储到tag_version表中;给应用系统或/和灰度系统指定相关的版次,并存储到version表中;基于访问请求,应用系统或灰度系统查询version表中对应的版次,然后根据版次在tag_version表中读取相关的配置数据,也可根据扩展进行读取相关的配置数据,再根据配置数据得到配置信息。本发明用于灰度和生产环境版本的隔离。
Description
技术领域
一种灰度与生产环境版本隔离的方法及系统,用于灰度和生产环境版本的隔离,属于灰度发布、版本控制技术领域。
背景技术
目前当产品有新版本,release测试(即指对软件的release版本进行测试)通过以后,直接放到更新服务器上,做全量用户推送。当发现新版本存在测试未覆盖到的问题时,造成的影响面较大,解决问题的代价也很大。为了降低影响,推出了灰度发布技术。
灰度发布(又名金丝雀发布),在其上可以进行A/B测试,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对产品特性B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。灰度期为灰度发布开始到结束期间。现有各个应用系统为避免单点故障,基本都是以集群方式(2台及以上)部署,而数据库大都配置了主-从-备。
一般灰度发布流程如下:
首先,在现有生成环境部署系统,即应用系统或生产环境(product),额外搭建一套与现有部署几乎一模一样的系统,作为灰度系统或灰度环境(gray);添加分流设备,用于切换流量进入product或者gray。
其次,当系统要发布新版本时,首先控制分流设备,切换流量到product,然后在gray发布新版本,再按照一定策略,切换一部分流量到gray,用于验证发布是否正确合理。观察gray上运行情况,若无问题,则将流量全部切换到gray,然后在product上发布新版本,切换一部分流量到product,观察product运行情况,若无问题,最后将流量全部切到product。实施流程如图1所示。
上述实施过程中,有个很大的难点在于product和gray数据共享的问题,比如查询某客户信息,则必须从product和gray两方进行查询。通常有以下两种方案:
一.Product和gray数据库独立,搭建两套数据库,一套用于product,一套用于gray。
应用系统设计成多数据源模式,并按业务类型进行改造:查询类业务同时查询两套数据库,存储类业务,product和gray各自存储各自的数据。此方案的数据太过冗余;当增加一套gray时,product必须改造,设计难度与编码量大大增加,维护成本提高,尤其是当原系统有分库分表设计时,改造难度大大提高;
二.product和gray共用一套数据库,数据库设计时,抽离业务表和配置表,一套业务表,多张配置表。product与gray共用一套业务表,配置表独立。参考专利文献《CN105824745A》;当此方案增加一套gray时,必须增加一套配置表;配置表通常有多张,有多套gray时,必须维护多套多张配置表,配置表增加,维护的出错率也增加;当发生版本回退时,配置表只能依靠人工手动修改,容易出错。
发明内容
针对上述研究的问题,本发明的目的在于提供一种灰度与生产环境版本隔离的方法及系统,解决现有技术中product和gray共用一套数据库,每增加一套gray时,必须增加一套配置表;配置表通常有多张,有多套gray时,必须维护多套多张配置表,配置表增加,维护的出错率也增加;当发生版本回退时,配置表只能依靠人工手动修改问题,容易出错。
为了达到上述目的,本发明采用如下技术方案:
一种灰度与生产环境版本隔离的方法,包括如下步骤:
S1.在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,即在应用系统的原有表的基础上增加了一套版次表,一套版次表包括tag_version表和version表或一套版次表包括tag_yersion表、version表和tag_reversion表,其中,原有表包括业务表和配置表;
S2.在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_version表中的版次与version表中的应用系统或/和灰度系统进行绑定;
S3.基于步骤S2的结果,在接收到应用系统或/和灰度系统访问请求时,根据应用系统或/和灰度系统查询version表中对应的版次,然后根据版次在tag_version表中读取相关的配置数据或根据版次在tag_version表中读取签名值,再根据签名值在tag_reversion表中读取相关的配置数据,最后根据配置数据得到对应的配置信息。
进一步,所述步骤S1中,一套版次表包括tag_yersion表和version表时,其中,tag_version表的结构包括用于存储主键的id、用于存储版次的version、用于存储配置数据的data和用于存储配置数据类型的type,其中,id的字段类型为bigint(20),version的字段类型为varchar(32),data的字段类型为text,type的字段类型为varchar(32);version表的结构包括用于存储主键的id、用于存储生产环境的env和用于存储版次的version,其中,id的字段类型为bigint(20),env的字段类型为varchar(32),version的字段类型为varchar(32);
或一套版次表包括tag_yersion表、version表和tag_reversion表时,其中,tag_version表的结构包括用于存储主键的id、用于存储版次的version和用于存储配置数据的签名值的data和用于存储配置数据类型的type,其中,id的字段类型为bigint(20),version的字段类型为varchar(32),data的字段类型为varchar(512),type的字段类型为varchar(32);version表的结构包括用于存储主键的id、用于存储环境的env和用于存储版次的version,其中,id的字段类型为bigint(20),env的字段类型为varchar(32),version的字段类型为varchar(32);tag_reversion表的结构包括用于存储主键的id、用于存储配置数据的签名值的reversion和用于存储配置数据的data,其中,id的字段类型为bigint(20),reversion的字段类型为varchar(512),data的字段类型为text。
进一步,所述步骤S1中,一套版次表包括tag_version表和version表时,tag_version表存储一次打版的字符串或多次打版的字符串,所述字符串对应的版次不重复;一套版次表包括tag_yersion表、version表和tag_reversion表时,tag_reversion表中存储一次打版的字符串或多次打版的字符串,所述字符串对应的签名值不重复。
进一步,所述步骤S2中,一套版次表包括tag_yersion表和version表时,在执行打版的过程中,对应版次将配置表中的结构化的配置信息抽取成的字符串压缩后存储到tag_version表中;或一套版次表包括tag_version表、version表和tag_reversion表时,在执行打版的过程中,对应版次将配置表中的结构化的配置信息抽取成的字符串的签名值压缩后存储到tag_version表中,对应版次将配置表中的结构化的配置信息抽取成的字符串和字符串的签名值压缩后存储到tag_reversion表中。
进一步,所述步骤S2中,若版本发生回退,应用系统的版次需重新指定,并同时修改version表中的版次。
一种灰度与生产环境版本隔离的系统,包括应用系统服务器、灰度发布控制器和访问模块;
应用系统服务器:在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,即在应用系统的原有表的基础上增加了一套版次表,一套版次表包括tag_version表和version表或一套版次表包括tag_version表、version表和tag_reversion表,其中,原有表包括业务表和配置表;
灰度发布控制器:在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_version表中的版次与version表中的应用系统或/和灰度系统进行绑定;
访问模块:在接收到应用系统或灰度系统访问请求时,根据应用系统或灰度系统查询version表中对应的版次,然后根据版次在tag_version表中读取相关的配置数据或根据版次在tag_version表中读取签名值,再根据签名值在tag_reversion表中读取相关的配置数据,最后根据配置数据得到对应的配置信息。
进一步,所述应用系统服务器中,一套版次表包括tag_version表和version表时,tag_version表存储一次打版的字符串或多次打版的字符串,所述字符串对应的版次不重复;一套版次表包括tag_version表、version表和tag_reversion表时,tag_reversion表中存储一次打版的字符串或多次打版的字符串,所述字符串对应的签名值不重复。
进一步,所述灰度发布控制器包括打版模块和发布模块;
打版模块:在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
发布模块:打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_yersion表中的版次与version表中的应用系统或/和灰度系统进行绑定。
进一步,所述发布模块能修改应用系统的版次。
本发明同现有技术相比,其有益效果表现在:
一、不需要抽取业务表和配置表,而是采用增加版次表的方式,将结构化的配置数据抽取成字符串存放于版次表中,避免了抽取不当,product和gray配置交叉的问题,而且对原系统的入侵小,不需要修改原表的数据结构;当配置增加时,不需要增加表,只在版次表增加了几行数据;
二、本发明通过版次读取相关的配置信息,各个环境各个历史的配置数据都存放在表中,当发布出问题时,可以很方便的进行版本回退,回退不易出错;
三、本发明进行配置信息同时,只需要修改product的版次即可,不仅降低了出错率,而且节约了人力成本。
附图说明
图1为背景技术中的灰度发布流程示意图;
图2为本发明中打版和发布示意图;
图3为本发明中tag_version表和version表的最基本表结构示意图;
图4为本发明中存储了两条数据的tag_version表;
图5为本发明中存储了四条数据的tag_version表;
图6为本发明中存储了应用系统和灰度系统版次的version表;
图7为本发明中tag_reversion表的最基本表结构示意图。
具体实施方式
下面将结合附图及具体实施方式对本发明作进一步的描述。
一种灰度与生产环境版本隔离的方法,包括如下步骤:
S1.在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,即在应用系统的原有表的基础上增加了一套版次表,一套版次表包括tag_version表和version表或一套版次表包括tag_yersion表、version表和tag_reversion表,其中,原有表包括业务表和配置表;
S2.在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_yersion表中的版次与version表中的应用系统或/和灰度系统进行绑定;
S3.基于步骤S2的结果,在接收到应用系统或/和灰度系统访问请求时,根据应用系统或/和灰度系统查询version表中对应的版次,然后根据版次在tag_version表中读取相关的配置数据或根据版次在tag_version表中读取签名值,再根据签名值在tag_reversion表中读取相关的配置数据,最后根据配置数据得到对应的配置信息。
进一步,所述步骤S1中,一套版次表包括tag_version表和version表时,其中,tag_version表的结构包括用于存储主键的id、用于存储版次的version、用于存储配置数据的data和用于存储配置数据类型的type,其中,id的字段类型为bigint(20),version的字段类型为varchar(32),data的字段类型为text,type的字段类型为varchar(32);version表的结构包括用于存储主键的id、用于存储生产环境的env和用于存储版次的version,其中,id的字段类型为bigint(20),env的字段类型为varchar(32),version的字段类型为varchar(32);
或一套版次表包括tag_version表、version表和tag_reversion表时,其中,tag_version表的结构包括用于存储主键的id、用于存储版次的version和用于存储配置数据的签名值的data和用于存储配置数据类型的type,其中,id的字段类型为bigint(20),version的字段类型为varchar(32),data的字段类型为varchar(512),type的字段类型为varchar(32);version表的结构包括用于存储主键的id、用于存储环境的env和用于存储版次的version,其中,id的字段类型为bigint(20),env的字段类型为varchar(32),version的字段类型为varchar(32);tag_reversion表的结构包括用于存储主键的id、用于存储配置数据的签名值的reversion和用于存储配置数据的data,其中,id的字段类型为bigint(20),reversion的字段类型为varchar(512),data的字段类型为text。
进一步,所述步骤S1中,一套版次表包括tag_version表和version表时,tag_version表存储一次打版的字符串或多次打版的字符串,所述字符串对应的版次不重复;一套版次表包括tag_yersion表、version表和tag_reversion表时,tag_reversion表中存储一次打版的字符串或多次打版的字符串,所述字符串对应的签名值不重复。
进一步,所述步骤S2中,一套版次表包括tag_version表和version表时,在执行打版的过程中,对应版次将配置表中的结构化的配置信息抽取成的字符串压缩后存储到tag_version表中;或一套版次表包括tag_version表、version表和tag_reversion表时,在执行打版的过程中,对应版次将配置表中的结构化的配置信息抽取成的字符串的签名值压缩后存储到tag_version表中,对应版次将配置表中的结构化的配置信息抽取成的字符串和字符串的签名值压缩后存储到tag_reversion表中。
进一步,所述步骤S2中,若版本发生回退,应用系统的版次需重新指定,并同时修改version表中的版次。
一种灰度与生产环境版本隔离的系统,包括应用系统服务器、灰度发布控制器和访问模块:
应用系统服务器:在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,即在应用系统的原有表的基础上增加了一套版次表,一套版次表包括tag_version表和version表或一套版次表包括tag_version表、version表和tag_reversion表,其中,原有表包括业务表和配置表;
灰度发布控制器:在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_version表中的版次与version表中的应用系统或/和灰度系统进行绑定;
访问模块:在接收到应用系统或灰度系统访问请求时,根据应用系统或灰度系统查询version表中对应的版次,然后根据版次在tag_yersion表中读取相关的配置数据或根据版次在tag_version表中读取签名值,再根据签名值在tag_reversion表中读取相关的配置数据,最后根据配置数据得到对应的配置信息。
进一步,所述应用系统服务器中,一套版次表包括tag_version表和version表时,tag_version表存储一次打版的字符串或多次打版的字符串,所述字符串对应的版次不重复;一套版次表包括tag_yersion表、version表和tag_reversion表时,tag_reversion表中存储一次打版的字符串或多次打版的字符串,所述字符串对应的签名值不重复。
进一步,所述灰度发布控制器包括打版模块和发布模块;
打版模块:在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
发布模块:打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_version表中的版次与version表中的应用系统或/和灰度系统进行绑定。
进一步,所述发布模块能修改应用系统的版次。
实施例
如图2所示,通过灰度发布控制器执行打版动作,将相关的配置信息进行抽取,存放到版次tag_version表中。比如执行了3次打版动作,则在tag_version表中存放了3个版本(版次)的配置数据vP0、vG1、vG2。执行发布动作,该指令用于将版次与生产环境绑定。比如prodcut→vP0、gray1→vG1、gray2→vG2,并存储在version表中,其中,“→”表示用于将版次与生产环境绑定。
应用系统product,灰度系统gray1,灰度系统gray2依照绑定关系,获取相应的版本(版次),然后从tag_version表中读取具体的配置数据。具体如下
1.数据库层,应用系统和灰度系统原有的配置表的结构不动,增加一套版次表,一套版次表包括tag_version表和version表。最基本的表结构,如图3所示;
2.应用层新增灰度发布控制器:灰度发布控制器包括打版模块和发布模块,打版模块用于打版;发布模块模块用于发布。
执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将存储在配置表中的结构化的配置信息抽取成字符串,每种类型配置信息抽取成单独的一条字符串。如最初的应用系统的配置表中的结构化的流程配置抽取为字符串config_strA,参数校验配置抽取为字符串config_strB,将字符串压缩存储到tag_version表中;此时,tag_version中有两条数据,如图4所示。需要实现灰度系统发布时,基于字符串config_strA和字符串config_strB进行对应的配置信息修改后,若再次打版,则此时tag_version表中有四条数据,即保留了修改前的配置信息所对应的字符串,如图5所示。
打版完成后,发布时,给应用系统或/和灰度系统指定相关的版次,并将对应关系存储到version表中。如指定product版次为v_20190503,指定gray1版次为v_20190504,gray2版次为v_20190504,如图6所示。当版本发生回退时,使用灰度发布控制器中的发布模块的发布功能进行修改版次,如product需要回退到前一个或者前两个版本时,只需修改product的版次即可。
应用系统读取配置:product、gray1、gray2查询version表,获取对应的版次,然后根据版次信息从tag_version表中读取配置信息。如product此时读取的流程配置信息为config_strA,入参配置信息为config_strB;gray1读取的流程配置信息为config_strA2,入参配置信息为config_strB2;gray2读取的流程配置信息为config_strA2,参数校验配置为config_strB2。
扩展情况:一套版次表包括tag_version表、version表和tag_reversion表,即打版过程中tag_version表中的data字段不直接存储具体的配置数据(即指抽取成的字符串),而是将存储在配置表中的结构化的配置信息抽取成字符串,每种类型配置信息抽取成单独的一条字符串。如最初的应用系统的原有配置表中的结构化的流程配置抽取为字符串config_strA,参数校验配置抽取为字符串config_strB,此时,不直接将字符串压缩存储到tag_version表中,而是采用扩展方案,即压缩存储其签名值(MD5或者SHA算法均可),具体的配置数据存放在另一张表中,如tag_reversion,其基本表结构,如图7所示。具体执行过程如下:
1.执行打版动作(即指执行打版的过程中或指执行打版)时,在tag_version中插入数据(即配置数据的签名值),根据签名值检查tag_reversion中的reversion是否存在对应的配置数据,若存在,则不再插入,可减少配置信息的冗余度,若不存在,则插入。
2.应用系统读取配置时,先从version表获取版次信息,然后从tag_version表获取签名值,最后根据reversion中的签名值查询获取tag_reversion中的配置数据,再根据配置数据得到配置信息。
以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。
Claims (9)
1.一种灰度与生产环境版本隔离的方法,其特征在于,包括如下步骤:
S1.在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,即在应用系统的原有表的基础上增加了一套版次表,一套版次表包括tag_yersion表、version表和tag_reversion表,其中,原有表包括业务表和配置表;
S2.在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_version表中的版次与version表中的应用系统或/和灰度系统进行绑定;
S3.基于步骤S2的结果,在接收到应用系统或/和灰度系统访问请求时,根据应用系统或/和灰度系统查询version表中对应的版次,然后根据版次在tag_version表中读取相关的配置数据或根据版次在tag_version表中读取签名值,再根据签名值在tag_reversion表中读取相关的配置数据,最后根据配置数据得到对应的配置信息。
2.根据权利要求1所述的一种灰度与生产环境版本隔离的方法,其特征在于,所述步骤S1中,一套版次表包括tag_version表和version表时,其中,tag_version表的结构包括用于存储主键的id、用于存储版次的version、用于存储配置数据的data和用于存储配置数据类型的type,其中,id的字段类型为bigint(20),version的字段类型为varchar(32),data的字段类型为text,type的字段类型为varchar(32);version表的结构包括用于存储主键的id、用于存储生产环境的env和用于存储版次的version,其中,id的字段类型为bigint(20),env的字段类型为varchar(32),version的字段类型为varchar(32);
或一套版次表包括tag_version表、version表和tag_reversion表时,其中,tag_version表的结构包括用于存储主键的id、用于存储版次的version和用于存储配置数据的签名值的data和用于存储配置数据类型的type,其中,id的字段类型为bigint(20),version的字段类型为varchar(32),data的字段类型为varchar(512),type的字段类型为varchar(32);version表的结构包括用于存储主键的id、用于存储环境的env和用于存储版次的version,其中,id的字段类型为bigint(20),env的字段类型为varchar(32),version的字段类型为varchar(32);tag_reversion表的结构包括用于存储主键的id、用于存储配置数据的签名值的reversion和用于存储配置数据的data,其中,id的字段类型为bigint(20),reversion的字段类型为varchar(512),data的字段类型为text。
3.根据权利要求1所述的一种灰度与生产环境版本隔离的方法,其特征在于,所述步骤S1中,一套版次表包括tag_version表和version表时,tag_version表存储一次打版的字符串或多次打版的字符串,所述字符串对应的版次不重复;一套版次表包括tag_version表、version表和tag_reversion表时,tag_reversion表中存储一次打版的字符串或多次打版的字符串,所述字符串对应的签名值不重复。
4.根据权利要求1所述的一种灰度与生产环境版本隔离的方法,其特征在于,所述步骤S2中,一套版次表包括tag_version表和version表时,在执行打版的过程中,对应版次将配置表中的结构化的配置信息抽取成的字符串压缩后存储到tag_version表中;或一套版次表包括tag_version表、version表和tag_reversion表时,在执行打版的过程中,对应版次将配置表中的结构化的配置信息抽取成的字符串的签名值压缩后存储到tag_version表中,对应版次将配置表中的结构化的配置信息抽取成的字符串和字符串的签名值压缩后存储到tag_reversion表中。
5.根据权利要求1-4任意一项所述的一种灰度与生产环境版本隔离的方法,其特征在于,所述步骤S2中,若版本发生回退,应用系统的版次需重新指定,并同时修改version表中的版次。
6.一种灰度与生产环境版本隔离的系统,其特征在于,包括应用系统服务器、灰度发布控制器和访问模块;
应用系统服务器:在应用系统和灰度系统共用一套数据库的基础上,在数据库中增加一套版次表,即在应用系统的原有表的基础上增加了一套版次表,一套版次表包括tag_version表、version表和tag_reversion表,其中,原有表包括业务表和配置表;
灰度发布控制器:在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_version表中的版次与version表中的应用系统或/和灰度系统进行绑定;
访问模块:在接收到应用系统或灰度系统访问请求时,根据应用系统或灰度系统查询version表中对应的版次,然后根据版次在tag_version表中读取相关的配置数据或根据版次在tag_version表中读取签名值,再根据签名值在tag_reversion表中读取相关的配置数据,最后根据配置数据得到对应的配置信息。
7.根据权利要求6所述的一种灰度与生产环境版本隔离的系统,其特征在于,所述应用系统服务器中,一套版次表包括tag_version表和version表时,tag_version表存储一次打版的字符串或多次打版的字符串,所述字符串对应的版次不重复;一套版次表包括tag_version表、version表和tag_reversion表时,tag_reversion表中存储一次打版的字符串或多次打版的字符串,所述字符串对应的签名值不重复。
8.根据权利要求6或7所述的一种灰度与生产环境版本隔离的系统,其特征在于,所述灰度发布控制器包括打版模块和发布模块;
打版模块:在执行打版的过程中,将生成的版次存储到tag_version表中,对应tag_version表中的版次将配置表中的结构化的配置信息抽取成字符串,其中,每种类型的配置信息抽取成单独一条字符串,将字符串存储到tag_version表中或将字符串的签名值存储到tag_version表中,并将签名值和其对应的字符串存储到tag_reversion表中,其中,结构化的配置信息是指关系型数据库对应存储配置信息的表的数据;
发布模块:打版完成后,在发布时,给应用系统或/和灰度系统指定相关的版次,并存储到version表中,用于将tag_yersion表中的版次与version表中的应用系统或/和灰度系统进行绑定。
9.根据权利要求8所述的一种灰度与生产环境版本隔离的系统,其特征在于,所述发布模块能修改应用系统的版次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910686132.7A CN110399142B (zh) | 2019-07-26 | 2019-07-26 | 一种灰度与生产环境版本隔离的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910686132.7A CN110399142B (zh) | 2019-07-26 | 2019-07-26 | 一种灰度与生产环境版本隔离的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399142A CN110399142A (zh) | 2019-11-01 |
CN110399142B true CN110399142B (zh) | 2023-04-07 |
Family
ID=68325205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910686132.7A Active CN110399142B (zh) | 2019-07-26 | 2019-07-26 | 一种灰度与生产环境版本隔离的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399142B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115525533A (zh) * | 2021-06-24 | 2022-12-27 | 腾讯云计算(北京)有限责任公司 | 信息处理方法、装置、计算机设备及存储介质 |
CN114385515A (zh) * | 2022-03-24 | 2022-04-22 | 凯泰铭科技(北京)有限公司 | 保险运营平台的灰度发布方法、系统、装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009155469A2 (en) * | 2008-06-18 | 2009-12-23 | Eads Na Defense Security And Systems Solutions, Inc. | Systems and methods for a simulated network environment and operation thereof |
CN103176790A (zh) * | 2011-12-26 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 应用发布方法和系统 |
CN103283209A (zh) * | 2011-04-18 | 2013-09-04 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN105824745A (zh) * | 2015-01-04 | 2016-08-03 | 中国移动通信集团湖南有限公司 | 一种灰度发布方法及装置 |
CN107203376A (zh) * | 2017-04-11 | 2017-09-26 | 国网天津市电力公司信息通信公司 | 一种企业级信息化系统 |
CN108881030A (zh) * | 2018-06-07 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 灰度发布场景下的路由方法及装置 |
CN109408381A (zh) * | 2018-10-10 | 2019-03-01 | 四川新网银行股份有限公司 | 一种基于数据校验模板的产品数据自动校验平台及方法 |
CN109510852A (zh) * | 2017-09-15 | 2019-03-22 | 阿里巴巴集团控股有限公司 | 灰度发布的方法及装置 |
CN109814896A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 服务器升级方法、装置、计算机系统及可读存储系统 |
CN111427608A (zh) * | 2020-03-20 | 2020-07-17 | 重庆富民银行股份有限公司 | 用于银行核心系统的灰度发布方法 |
CN113391823A (zh) * | 2021-06-15 | 2021-09-14 | 中国工商银行股份有限公司 | 灰度发布方法、装置及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US7464154B2 (en) * | 2001-05-18 | 2008-12-09 | Network Resonance, Inc. | System, method and computer program product for analyzing data from network-based structured message stream |
-
2019
- 2019-07-26 CN CN201910686132.7A patent/CN110399142B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009155469A2 (en) * | 2008-06-18 | 2009-12-23 | Eads Na Defense Security And Systems Solutions, Inc. | Systems and methods for a simulated network environment and operation thereof |
CN103283209A (zh) * | 2011-04-18 | 2013-09-04 | 北京新媒传信科技有限公司 | 一种应用服务平台系统及其实现方法 |
CN103176790A (zh) * | 2011-12-26 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 应用发布方法和系统 |
CN105824745A (zh) * | 2015-01-04 | 2016-08-03 | 中国移动通信集团湖南有限公司 | 一种灰度发布方法及装置 |
CN107203376A (zh) * | 2017-04-11 | 2017-09-26 | 国网天津市电力公司信息通信公司 | 一种企业级信息化系统 |
CN109510852A (zh) * | 2017-09-15 | 2019-03-22 | 阿里巴巴集团控股有限公司 | 灰度发布的方法及装置 |
CN108881030A (zh) * | 2018-06-07 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 灰度发布场景下的路由方法及装置 |
CN109408381A (zh) * | 2018-10-10 | 2019-03-01 | 四川新网银行股份有限公司 | 一种基于数据校验模板的产品数据自动校验平台及方法 |
CN109814896A (zh) * | 2018-12-14 | 2019-05-28 | 深圳壹账通智能科技有限公司 | 服务器升级方法、装置、计算机系统及可读存储系统 |
CN111427608A (zh) * | 2020-03-20 | 2020-07-17 | 重庆富民银行股份有限公司 | 用于银行核心系统的灰度发布方法 |
CN113391823A (zh) * | 2021-06-15 | 2021-09-14 | 中国工商银行股份有限公司 | 灰度发布方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
基于PaaS的容器引擎管理平台的设计及实现;张婧茹;《中国优秀硕士学位论文全文数据库信息科技辑》;20180415(第4期);全文 * |
移动应用灰度发布系统的设计与实现;颜振东;《中国优秀硕士学位论文全文数据库信息科技辑》;20180415(第4期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110399142A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101334797B (zh) | 一种分布式文件系统及其数据块一致性管理的方法 | |
CN103324552B (zh) | 两阶段单实例去重数据备份方法 | |
CN102985911B (zh) | 高度可伸缩和分布式重复数据删除 | |
CN106021594B (zh) | 数据库表和xml报文的映射处理方法及其系统 | |
CN101183377B (zh) | 一种基于消息中间件的高可用性数据库集群系统 | |
CN110399142B (zh) | 一种灰度与生产环境版本隔离的方法及系统 | |
CN103455557B (zh) | 一种基于日志的结构化数据同步方法 | |
CN104391948A (zh) | 数据仓库的数据标准化构建方法及系统 | |
CN107391306A (zh) | 一种异构数据库备份文件恢复方法 | |
CN105556519A (zh) | 对oracle存储器中数据库的存储器中快照存储的多版本并行控制 | |
CN101464890B (zh) | 一种混合日志生成方法和解析方法 | |
CN104516967A (zh) | 一种电力系统海量数据管理系统及其使用方法 | |
CN105556520A (zh) | 在存储器中镜像盘中的数据以提高查询性能 | |
CN104239417A (zh) | 一种分布式数据库数据分片后动态调整方法及装置 | |
CN110555770B (zh) | 一种基于增量哈希的区块链世界状态校验和恢复方法 | |
CN104504030B (zh) | 一种面向电力调度自动化海量报文的索引方法 | |
CN102750322B (zh) | 一种机群文件系统分布式元数据一致性保证方法和系统 | |
WO2023066086A1 (zh) | 数据处理方法、分布式数据库系统、电子设备及存储介质 | |
CN101702219A (zh) | 一种物料信息生成方法和装置 | |
US7200625B2 (en) | System and method to enhance availability of a relational database | |
CN107766521B (zh) | 一种电网规划数据版本控制的方法 | |
CN103605732A (zh) | 基于Infobright的数据仓库和系统及其构建方法 | |
CN104750849A (zh) | 用于维护基于树形结构的目录关系的方法和系统 | |
CN115658815A (zh) | 基于cdc实现的数据同步的方法 | |
CN1185596C (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 |