CN109101265A - 灰度发布的方法和*** - Google Patents
灰度发布的方法和*** Download PDFInfo
- Publication number
- CN109101265A CN109101265A CN201710449634.9A CN201710449634A CN109101265A CN 109101265 A CN109101265 A CN 109101265A CN 201710449634 A CN201710449634 A CN 201710449634A CN 109101265 A CN109101265 A CN 109101265A
- Authority
- CN
- China
- Prior art keywords
- gray scale
- sql statement
- database
- field
- application program
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种灰度发布的方法和***。该灰度发布的方法包括:将灰度版本的应用程序部署到申请的灰度资源中,并对所述灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配;根据所述匹配结果,生成所述数据库的灰度SQL语句;基于所述应用程序和所述数据库的灰度SQL语句,构建灰度***;根据制定的灰度策略,测试用户访问所述灰度***并进行测试;如果测试结果正常,则将所述灰度版本的应用程序发布到生产***。采用本发明实施例的技术方案,能够扩大灰度发布的使用范围。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种灰度发布的方法和***。
背景技术
目前,为减少应用程序版本更新对***稳定性的影响,通常会采用灰度发布的做法。
现有技术中,灰度发布是指通过IT技术手段,将***即将上线的功能(即灰度版本的应用程序)先给一部分用户试用,其他用户使用老版本的应用程序,其中,灰度版本的应用程序和老版本的应用程序共用一套数据库表,且应用程序通过结构化查询语言(Structured Query Language,SQL)语句实现与数据库表的配套使用。灰度版本的应用程序如果发现问题则及时修正,如果没有问题再扩大范围发布到生产***并开放给所有用户使用,即将所有用户的老版本的应用程序全部替换为灰度版本的应用程序。
然而,由于灰度版本的应用程序和老版本的应用程序共用同一套数据库表,因此,如果灰度版本的应用程序涉及数据库表结构的变化,如灰度版本的应用程序需要在数据库表中增加字段,那么新增字段对应的SQL语句只能支持灰度版本的应用程序与数据库表的配套使用,不能支持老版本的应用程序与数据库表的配套使用,导致老版本的应用程序无法正常使用。也就是说,现有技术中的灰度发布的方法只适用于数据库表结构不变的场景,无法适用于数据库表结构发生变化的场景,存在适用场景范围较小的问题。
发明内容
本发明实施例提供了一种灰度发布的方法和***,不仅能够适用于数据库表结构不变的场景,也能适用于数据库表结构发生变化的场景,从而可以扩大适用场景的范围。
第一方面,本发明实施例提供了一种灰度发布的方法,包括:
将灰度版本的应用程序部署到申请的灰度资源中,并对灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配;
根据匹配结果,生成数据库的灰度SQL语句;
基于应用程序和数据库的灰度SQL语句,构建灰度***;
根据制定的灰度策略,测试用户访问灰度***并进行测试;
如果测试结果正常,则将灰度版本的应用程序发布到生产***。
在第一方面的一些实施例中,对灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配,包括:
在预留关系对应表中增加灰度版本的应用程序的新增字段与核心表的预留字段的对应关系;在业务在用字段表中增加新增字段。
在第一方面的一些实施例中,根据匹配结果,生成数据库的灰度SQL语句,包括:
判断是否为首次访问;如果是首次访问,则根据预留关系对应表、核心表和业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成数据库的灰度SQL语句;如果不是首次访问,则直接对首次访问得到的灰度SQL语句重新进行变量赋值,生成数据库的灰度SQL语句。
在第一方面的一些实施例中,根据预留关系对应表、核心表和业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成数据库的灰度SQL语句,包括:
对业务在用字段表进行一次检索,生成用于匹配核心表的在用字段的一次检索后的SQL语句;根据一次检索后的SQL语句中涉及的在用字段,对预留字段关联表进行二次检索,生成用于判断是否启用核心表的预留字段的二次检索后的SQL语句;对二次检索后的SQL语句进行变量赋值,生成数据库的灰度SQL语句。
在第一方面的一些实施例中,根据制定的灰度策略,测试用户访问灰度***并进行测试,包括:
接收携带有关键路由参数的业务请求;根据关键路由参数和灰度策略制定的路由规则,得到路由信息;按照路由信息,测试用户访问灰度***并进行测试。
在第一方面的一些实施例中,将灰度版本的应用程序发布到生产***,包括:
将灰度版本的应用程序打包为云资源池的PASS层虚拟机模板;将PASS虚拟机模板发布到生产***,并将数据库的灰度SQL语句更新为生产SQL语句。
第二方面,本发明实施例提供了一种灰度发布的***,包括;
预留字段匹配模块,用于对灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配;
SQL语句生成模块,用于根据匹配结果,生成数据库的灰度SQL语句;
灰度***构建模块,用于基于应用程序和数据库的灰度SQL语句,构建灰度***;
路由管理模块,用于根据制定的灰度策略,使测试用户访问灰度***并进行测试;
灰度管理模块,用于如果测试结果正常,则将灰度版本的应用程序发布到生产***。
在第二方面的一些实施例中,预留字段匹配模块包括:预留关系匹配单元,用于在预留关系对应表中增加灰度版本的应用程序的新增字段与核心表的预留字段的对应关系;业务在用字段匹配单元,用于在业务在用字段表中增加新增字段。
在第二方面的一些实施例中,SQL语句生成模块包括:判断单元,用于判断是否为首次访问;SQL语句生成单元,用于如果为首次访问,则根据预留关系对应表、核心表和业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成数据库的灰度SQL语句;如果不为首次访问,则直接对首次访问得到的灰度SQL语句重新进行变量赋值,生成重新变量赋值后的灰度SQL语句。
在第二方面的一些实施例中,SQL语句生成单元包括:一次检索子单元,用于对业务在用字段表进行一次检索,生成用于匹配核心表的在用字段的一次检索后的SQL语句;二次检索子单元,用于根据一次检索后的SQL语句中涉及的在用字段,对预留字段关联表进行二次检索,生成用于判断是否启用核心表的预留字段的二次检索后的SQL语句;变量赋值子单元,用于对二次检索后的SQL语句进行变量赋值,生成数据库的灰度SQL语句。
在第二方面的一些实施例中,路由管理模块包括:接收单元,用于接收携带有关键路由参数的业务请求;获取单元,用于根据关键路由参数和灰度策略制定的路由规则,得到路由信息;访问单元,用于按照路由信息,测试用户访问灰度***并进行测试。
在第二方面的一些实施例中,资源调度模块,还用于将灰度版本的应用程序打包为云资源池的PASS层虚拟机模板;灰度管理模块,还用于将PASS虚拟机模板发布到生产***;SQL语句生成模块,还用于将数据库的灰度SQL语句更新为生产SQL语句。
在本发明实施例中,在进行灰度发布时,可以将灰度版本的应用程序部署到申请的灰度资源中,同时对灰度版本的应用程序的新增字段与核心表的预留字段进行匹配,然后根据匹配结果生成访问数据库的灰度SQL语句,接着基于部署的灰度版本的应用程序和灰度的SQL语句构建灰度***,然后根据制定的灰度策略,使测试用户访问灰度***并进行测试,如果测试结果正常,则将灰度版本的应用程序发布到生产***。由此可知,当灰度版本的应用程序涉及新增字段时,只需要将新增字段与数据库的核心表的预留字段进行匹配,然后根据匹配结果生成与新增字段对应的数据库的灰度SQL语句,就可以在不改变核心表结构的条件下,实现新增字段的灰度版本的应用程序与数据库的配套使用,从而能够同时支持新、老版本的应用程序,不会出现老版本的应用程序无法正常使用的情况,相比于现有技术,明显地扩大了适用范围。
附图说明
从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明,其中,相同或相似的附图标记表示相同或相似的特征。
图1为本发明一个实施例提供的灰度发布的方法的流程示意图;
图2为本发明另一实施例提供的灰度发布的方法的流程示意图;
图3为本发明一个实施例提供的灰度发布的路由流程示意图;
图4为本发明一个实施例提供的灰度发布的***的结构示意图;
图5为本发明另一实施例中的灰度发布的***的结构示意图。
具体实施方式
下面将详细描述本发明实施例的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明实施例的全面理解。但是,对于本领域技术人员来说很明显的是,本发明实施例可以在不需要这些具体细节中的一些细节的情况下实施。下面对本发明实施例的描述仅仅是为了通过示出本发明实施例的示例来提供对本发明的更好的理解。本发明实施例决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明实施例的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明实施例造成不必要的模糊。
本发明实施例中的用户设备的灰度发布的***和方法,应用于互联网公司、电信运营商、银行等的大型IT支撑***中。
灰度发布,是指通过IT技术手段,将***即将新上线的功能先给一部分用户试用,如果发现问题及时修正,如果没有问题再扩大范围发布到生产***并开放给所有用户使用。
图1为本发明一个实施例提供的灰度发布的方法的流程示意图。如图1所示,灰度发布的方法包括步骤101-步骤105。
在步骤101中,将灰度版本的应用程序部署到申请的灰度资源中,并对灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配。
其中,灰度资源是指灰度发布需要的软硬件资源。比如,虚拟机资源。具体地,在灰度版本的应用程序准备好后,首先申请创建虚拟机,然后将灰度版本的应用程序部署到虚拟机中。预留字段是指在数据库的经常变更的核心表中预留部分空字段。平时这些空字段无任何访问,等新的应用程序版本的发布需要新增字段时,这些空字段将被启用。
需要说明的是,由于将灰度版本的应用程序部署到申请的灰度资源中的步骤和对灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配的步骤分别为实现灰度发布的两个先决条件,因此,两个步骤可以并行,也可以分先后顺序执行,此处不进行限制。
在步骤102中,根据匹配结果,生成数据库的灰度SQL语句。
其中,SQL语句是一种结构化查询语言,可以对数据库进行操作,比如,对数据库进行数据存取、查询、更新和管理操作。灰度SQL语句是指灰度版本的应用程序对应的SQL语句,由于灰度版本的应用程序中涉及了新增字段,因此,根据匹配结果生成的数据的灰度SQL语句可以支持新增字段对应的灰度版本的应用程序对数据库的访问。
在步骤103中,基于应用程序和数据库的灰度SQL语句,构建灰度***。
在步骤104中,根据制定的灰度策略,测试用户访问灰度***并进行测试。
其中,灰度策略是指对灰度用户进行定义,可以根据地区、营业厅、操作员、特定用户等进行定义灰度用户。比如,可以定义某次上线的4G新营销活动只向一千名友好用户开放新版本的应用程序的试用权限,或者,只向某一个营业厅开放新版本的应用程序的试用权限。
在步骤105中,如果测试结果正常,则将灰度版本的应用程序发布到生产***。
需要说明的是,如果测试结果不正常,比如新版本的应用程序存在不稳定或者闪退等问题,可以随时关闭灰度发布。待解决了上述问题之后,继续进行灰度发布,直到新版本的应用程序能够稳定运行,再发布到生产***。
由于本发明实施例提供的灰度发布的方法具有以上步骤,因此,在进行灰度发布时,可以将灰度版本的应用程序部署到申请的灰度资源中,同时对灰度版本的应用程序的新增字段与核心表的预留字段进行匹配,然后根据匹配结果生成访问数据库的灰度SQL语句,接着基于部署的灰度版本的应用程序和灰度的SQL语句构建灰度***,然后根据制定的灰度策略,使测试用户访问灰度***并进行测试,如果测试结果正常,则将灰度版本的应用程序发布到生产***。
由此可知,当灰度版本的应用程序涉及新增字段时,只需要将新增字段与数据库的核心表的预留字段进行匹配,然后根据匹配结果生成与新增字段对应的数据库的灰度SQL语句,就可以在不改变核心表结构的条件下,实现新增字段的灰度版本的应用程序与数据库的配套使用,从而能够同时支持新、老版本的应用程序,不会出现老版本的应用程序无法正常使用的情况,相比于现有技术,明显地扩大了灰度发布的适用范围。
图2为本发明另一实施例提供的灰度发布的方法的流程示意图。图2与图1的不同之处在于,图1中的步骤101可细化为图2中的步骤1011-步骤1012;图1中的步骤102可细化为图2中的步骤1021-1024;图1中的步骤104可细化为图2中的步骤1041,图1中的步骤105可细化为图2中的步骤1051-1052。
在步骤1012中,在预留关系对应表中增加灰度版本的应用程序的新增字段与核心表的预留字段的对应关系,在业务在用字段表中增加新增字段。
在一个示例中,核心表为移动支撑***中的“Customer”客户资料表,即下表1,表1中存储了移动支撑***中的客户信息数据,经常会根据业务需求增加新的字段。优化前的方案需要业务停机后在“Customer”表中增加新字段,并与新版本的应用程序配套,无法做到不停机和灰度发布。
表1
CustID | CustName | Custtype | Status | Standby1 | Standby2 |
客户ID | 客户名称 | 客户类型 | 状态 | 预留字段1 | 预留字段2 |
2300002200 | 张三 | VIP | 正常 | 2016-12-21 |
而本发明实施例的优化方案是在“Customer”建表的时候就已经建立多个预留字段来“待命”,比如表1中的Stadnby1和Standby2,这些预留字段平时无数据。当新版本的应用程序需要在“Customer”表中增加字段StatusDate(状态变更时间)时,可以在“Standby_relation”预留字段关联表(参见下表2)中建立“Customer”表的预留字段Stadnby1和真实字段StatusDate的对应关系,即标明“Customer”表的Standby1字段实际存储的是StatusDate信息。
同时在“Colum_Inuse”业务在用字段表(参见下表3)中增加StatusDate字段,表明“Customer”表目前在用的是五个字段。通过这个方案“Customer”表不需要修改表定义,即可以完成字段扩容,而不需要业务停机后在“Customer”表中增加新字段,就可以与新版本的应用程序配套,做到不停机和灰度发布。
表2
TableName | StandbyName | ColumnName | Type |
表名 | 预留字段名称 | 真实字段名称 | 字段类型 |
Customer | Standby1 | StatusDate | Date |
表3
Customer | Subscriber | Account |
CustID | SubsID | SubsID |
CustName | SubsName | SubsName |
Custtype | ||
Status | ||
StatusDate |
需要说明的是,本发明实施例的方案的应用场景可以是新增字段,也可以是新增表等其他使表数据结构发生变化的客体,对此不进行限定。
在步骤1021中,判断是否为首次访问。
其中,首次访问是指对灰度版本的应用程序进行的首次访问。
如果是首次访问,在步骤1022中,对“Colum_Inuse”表(参见下表3)进行一次检索,生成用于匹配核心表的在用字段的一次检索后的SQL语句。
通常,数据表的SQL语句采用拼装的方式生成。比如,对于“Customer”表的***操作,SQL基础语句为:
Insert into A(A1,A2,A3,A4......,An)values(&1,&2,&3......,&n) (1)
其中,A为表名,A1-An为字段名称,n为字段的数目,&1-&n为对字段的赋值,n为正整数。
其中,一次检索是指从“Colum_Inuse”表中查询“Customer”表的当前在用字段。比如,接着上文中的例子,参看表3中第一列:
如果“Customer”表当前有4个在用字段,分别为:Custid,Custname,Custtype和Status,则生成的一次检索后的SQL语句为:
Insert into Customer(custid,custname,custtype,status)values(&1,&2,&3,&4) (2)
与基础语句相比可知,生成的一次检索后的SQL语句中的A被替换为Customer,A1,A2,A3,A4......,An被替换custid,custname,custtype,status和&1,&2,&3......,&n被替换为&1,&2,&3,&4。
而如果某次新版的应用程序在“Customer”表中增加使用了新的业务字段Statusdate(参看表1),则需要修改一次检索后的SQL语句为:
Insert into Customer(custid,custname,custtype,status,statusDate)values(&1,&2,&3,&4,&5) (3)
在步骤1023中,根据一次检索后的SQL语句中涉及的在用字段,对预留字段关联表进行二次检索,生成用于判断是否启用核心表的预留字段的二次检索后的SQL语句。
其中,二次检索是指将一次检索后的SQL语句中涉及的字段到“Standby_relation”表(参看表2)中进行匹配,如果未匹配成功,说明未启用预留字段,如果匹配成功,说明已经启用预留字段,则通过查询“Standby_relation”表得到预留字段名称,再次修改SQL语句。
比如,接着上文中的例子,对于SQL语句(1),通过查询“Standby_relation”表未找到相关记录,则无需修改SQL语句,对于SQL语句(2),通过查询发现StatusDate字段其实是预留字段Standby1,则再次修改SQL语句,修改后的SQL语句为:
Insert into Customer(custid,custname,custtype,status,standby1)values(&1,&2,&3,&4,&5) (4)
在步骤1024中,对二次检索后的SQL语句进行变量赋值,生成数据库的灰度SQL语句。
其中,变量赋值是指通过业务绑定变量的方式,将变量&1-&5替换为真实值。比如,接着上文中的例子,也参看表1,生成数据库的灰度SQL语句为:
Insert into Customer(custid,custname,custtype,status,standby1)values(230001,’张三’,’VIP’,’正常’,’2016-12-22’)
(5)
如果不是首次访问,则转到步骤1024,直接对首次访问得到的灰度SQL语句重新进行变量赋值,生成数据库的灰度SQL语句。
此处,由于通过以上首次访问涉及的一次检索、二次检索和变量赋值,核心表的预留被启用成功,且构建出与数据库表配套使用的真实SQL语句。因此,一旦完成三个阶段构建后,对于后续的访问,其SQL语句只需要进行变量赋值,无需实施一次检索和二次检索过程。
本发明实施例通过以上的SQL语句动态生成的方法实现了SQL语句自动适配新增字段,从而解决了由于数据库表结构变化造成的无法同时支持两套应用版本的问题。例如灰度版本对应的SQL语句按照SQL语句(3)来执行,而生产版本对应的SQL语句按照SQL语句(1)来执行。
在步骤1041中,接收携带有关键路由参数的业务请求;根据关键路由参数和灰度策略制定的路由规则,得到路由信息;按照路由信息,测试用户访问灰度***并进行测试。
其中,关键路由参数是指地区、营业厅、操作员和/或用户信息。灰度策略制定的路由规则是指关键路由参数和灰度发布范围的对应关系。比如,A地区在灰度发布范围内,或者B营业厅在灰度发布范围外。如果灰度发布范围仅包含A地区,则按照路由信息指示,A地区的用户或者应用将被路由到灰度环境,使用新版本的应用程序并测试;而其他地区的用户将被路由到生产环境,仍然使用旧版本的应用程序。
为便于本领域技术人员理解,下面对步骤1041进行详细说明。图3为本发明一个实施例提供的灰度发布的路由流程示意图。图3展示出灰度管理、路由管理和应用之间的交互流程,具体涉及开启灰度发布和关闭灰度发布两种应用场景。
其中,开启灰度发布的路由步骤包括:
(1)灰度管理开启灰度管理策略;
(2)通过路由管理,将灰度管理策略开启的信息通知应用;
(3)响应于灰度管理策略开启,应用开启灰度管理开关;
(4)应用向路由管理发出路由申请;
(5)响应于接收到路由申请,路由管理根据路由申请中的业务请求参数生成路由信息;
(6)路由管理将生成的路由信息返回给应用;
(7)响应于接受到路由信息,应用将业务请求发送到对应的服务器,比如将灰度用户的业务请求发送到灰度***的服务器,或者,将正常用户的业务请求发送到生产***的服务器。
其中,关闭灰度发布的路由步骤包括:
(8)灰度管理关闭灰度管理策略;
(9)通过路由管理,将灰度管理策略关闭的信息通知应用;
(10)响应于灰度管理策略关闭,应用关闭灰度管理开关;
(11)应用将业务请求发送到生产***的服务器。
通过上述灰度管理和路由管理方案,本发明实施例可以实现按照地区、营业员、操作员和用户访问的路由分发,并在用户无感知情况下实现灰度开启和关闭。
在步骤1051中,判断测试结果是否正常。
如果测试结果正常,在步骤1052中,将灰度版本的应用程序打包为云资源池的PASS层虚拟机模板;
在步骤1052中,将虚拟机模板发布到生产***,并将数据库的灰度SQL语句更新为生产SQL语句。
其中,虚拟机模板被通过最小连接优先的算法逐台发布到生产***。在数据库的灰度SQL更新为生产SQL后,就可以对新版本的应用程序进行灰度发布,整个发布期间业务不中断。
如果测试结果不正常,则转到步骤1054中,关闭灰度发布,从而实现了灰度环境灵活部署和动态发布。
图4为本发明一个实施例中的灰度发布的***的结构示意图。如图4,灰度发布的***包括:资源调度模块41、预留字段匹配模块42、SQL语句生成模块43、灰度***构建模块44、路由管理模块45和灰度管理模块46。
其中,资源调度模块41,用于将灰度版本的应用程序部署到申请的灰度资源中。
预留字段匹配模块42,用于对灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配。
SQL语句生成模块43,用于根据匹配结果,生成数据库的灰度SQL语句。
灰度***构建模块44,用于基于应用程序和数据库的灰度SQL语句,构建灰度***。
路由管理模块45,用于根据制定的灰度策略,使测试用户访问灰度***并进行测试。
灰度管理模块46,用于如果测试结果正常,则将灰度版本的应用程序发布到生产***。
在进行灰度发布时,资源调度模块41可以将灰度版本的应用程序部署到申请的灰度资源中,同时预留字段匹配模块42对灰度版本的应用程序的新增字段与核心表的预留字段进行匹配,然后SQL语句生成模块43根据匹配结果生成访问数据库的灰度SQL语句,接着灰度***构建模块44基于部署的灰度版本的应用程序和灰度的SQL语句构建灰度***,然后路由模块根据制定的灰度策略,使测试用户访问灰度***并进行测试,如果测试结果正常,则灰度管理模块46将灰度版本的应用程序发布到生产***。
由此可知,当灰度版本的应用程序涉及新增字段时,只需要将新增字段与数据库的核心表的预留字段进行匹配,然后根据匹配结果生成与新增字段对应的数据库的灰度SQL语句,就可以在不改变核心表结构的条件下,实现新增字段的灰度版本的应用程序与数据库的配套使用,从而能够同时支持新、老版本的应用程序,不会出现老版本的应用程序无法正常使用的情况,相比于现有技术,明显地扩大了适用范围。
图5为本发明另一实施例中的灰度发布的***的结构示意图。图5与图4的不同之处在于,图4中的预留字段匹配模块42可包括图5中的预留关系匹配单元421、业务在用字段匹配单元422;图4中的SQL语句生成模块43可包括图5中的判断单元和SQL语句生成单元432,其中SQL语句生成单元432包括图5中的一次检索子单元4321、一次检索子单元4321和变量赋值子单元4323;图4中的路由管理模块45包括图5中的接收单元451、获取单元452和访问单元453。
其中,预留关系匹配单元421,用于在预留关系对应表中增加灰度版本的应用程序的新增字段与核心表的预留字段的对应关系;
业务在用字段匹配单元422,用于在业务在用字段表中增加新增字段。
判断单元431,用于判断是否为首次访问;
SQL语句生成单元432,用于如果为首次访问,则根据预留关系对应表、核心表和业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成数据库的灰度SQL语句;如果不为首次访问,则直接对首次访问得到的灰度SQL语句重新进行变量赋值,生成重新变量赋值后的灰度SQL语句。
其中,一次检索子单元4321,用于对业务在用字段表进行一次检索,生成用于匹配核心表的在用字段的一次检索后的SQL语句;
二次检索子单元4322,用于根据一次检索后的SQL语句中涉及的在用字段,对预留字段关联表进行二次检索,生成用于判断是否启用核心表的预留字段的二次检索后的SQL语句;
变量赋值子单元4323,用于对二次检索后的SQL语句进行变量赋值,生成数据库的灰度SQL语句。
接收单元451,用于接收携带有关键路由参数的业务请求;
获取单元452,用于根据关键路由参数和灰度策略制定的路由规则,得到路由信息;
访问单元453,用于按照路由信息,测试用户访问灰度***并进行测试。
在一个示例中,如果测试结果为正常,资源调度模块41,还用于将灰度版本的应用程序打包为云资源池的PASS层虚拟机模板;灰度管理模块46,还用于将PASS虚拟机模板发布到生产***;SQL语句生成模块43,还用于将数据库的灰度SQL语句更新为生产SQL语句。
如果测试结果不正常,灰度管理模块46,还用于关闭灰度发布。
需要明确的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。对于装置实施例而言,相关之处可以参见方法实施例的说明部分。本发明实施例并不局限于上文所描述并在图中示出的特定步骤和结构。本领域的技术人员可以在领会本发明实施例的精神之后,作出各种改变、修改和添加,或者改变步骤之间的顺序。并且,为了简明起见,这里省略对已知方法技术的详细描述。
以上的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明实时例的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
Claims (12)
1.一种灰度发布的方法,其特征在于,包括:
将灰度版本的应用程序部署到申请的灰度资源中,并对所述灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配;
根据所述匹配结果,生成所述数据库的灰度结构化查询语言SQL语句;
基于所述应用程序和所述数据库的灰度SQL语句,构建灰度***;
根据制定的灰度策略,测试用户访问所述灰度***并进行测试;
如果测试结果正常,则将所述灰度版本的应用程序发布到生产***。
2.根据权利要求1所述的方法,其特征在于,所述对所述灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配,包括:
在预留关系对应表中增加所述灰度版本的应用程序的新增字段与所述核心表的预留字段的对应关系;
在业务在用字段表中增加所述新增字段。
3.根据权利要求2所述的方法,其特征在于,所述根据所述匹配结果,生成所述数据库的灰度SQL语句,包括:
判断是否为首次访问;
如果是首次访问,则根据所述预留关系对应表、所述核心表和所述业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成所述数据库的灰度SQL语句;
如果不是首次访问,则直接对首次访问得到的灰度SQL语句重新进行变量赋值,生成所述数据库的灰度SQL语句。
4.根据权利要求3所述的方法,其特征在于,所述根据所述预留关系对应表、所述核心表和所述业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成所述数据库的灰度SQL语句,包括:
对所述业务在用字段表进行一次检索,生成用于匹配所述核心表的在用字段的一次检索后的SQL语句;
根据所述一次检索后的SQL语句中涉及的在用字段,对所述预留字段关联表进行二次检索,生成用于判断是否启用所述核心表的预留字段的二次检索后的SQL语句;
对所述二次检索后的SQL语句进行变量赋值,生成所述数据库的灰度SQL语句。
5.根据权利要求1所述的方法,其特征在于,所述根据制定的灰度策略,测试用户访问所述灰度***并进行测试,包括:
接收携带有关键路由参数的业务请求;
根据所述关键路由参数和灰度策略制定的路由规则,得到路由信息;
按照所述路由信息,测试用户访问所述灰度***并进行测试。
6.根据权利要求1所述的方法,其特征在于,所述将所述灰度版本的应用程序发布到生产***,包括:
将所述灰度版本的应用程序打包为云资源池的PASS层虚拟机模板;
将所述PASS虚拟机模板发布到所述生产***,并将所述数据库的灰度SQL语句更新为生产SQL语句。
7.一种灰度发布的***,其特征在于,包括;
资源调度模块,用于将灰度版本的应用程序部署到申请的灰度资源中;
预留字段匹配模块,用于对所述灰度版本的应用程序的新增字段与数据库的核心表的预留字段进行匹配;
结构化查询语言SQL语句生成模块,用于根据所述匹配结果,生成所述数据库的灰度SQL语句;
灰度***构建模块,用于基于所述应用程序和所述数据库的灰度SQL语句,构建灰度***;
路由管理模块,用于根据制定的灰度策略,使测试用户访问所述灰度***并进行测试;
灰度管理模块,用于如果测试结果正常,则将所述灰度版本的应用程序发布到生产***。
8.根据权利要求7所述的灰度发布的***,其特征在于,所述预留字段匹配模块包括:
预留关系匹配单元,用于在预留关系对应表中增加所述灰度版本的应用程序的新增字段与所述核心表的预留字段的对应关系;
业务在用字段匹配单元,用于在业务在用字段表中增加所述新增字段。
9.根据权利要求8所述的灰度发布的***,其特征在于,所述SQL语句生成模块包括:
判断单元,用于判断是否为首次访问;
SQL语句生成单元,用于如果为首次访问,则根据所述预留关系对应表、所述核心表和所述业务字段在用表,依次进行一次检索、二次检索和变量赋值,生成所述数据库的灰度SQL语句;如果不为首次访问,则直接对首次访问得到的所述灰度SQL语句重新进行变量赋值,生成重新变量赋值后的灰度SQL语句。
10.根据权利要求9所述的灰度发布的***,其特征在于,所述SQL语句生成单元包括:
一次检索子单元,用于对所述业务在用字段表进行一次检索,生成用于匹配所述核心表的在用字段的一次检索后的SQL语句;
二次检索子单元,用于根据所述一次检索后的SQL语句中涉及的在用字段,对所述预留字段关联表进行二次检索,生成用于判断是否启用所述核心表的预留字段的二次检索后的SQL语句;
变量赋值子单元,用于对所述二次检索后的SQL语句进行变量赋值,生成所述数据库的灰度SQL语句。
11.根据权利要求7所述的灰度发布的***,其特征在于,所述路由管理模块包括:
接收单元,用于接收携带有关键路由参数的业务请求;
获取单元,用于根据所述关键路由参数和灰度策略制定的路由规则,得到路由信息;
访问单元,用于按照所述路由信息,测试用户访问所述灰度***并进行测试。
12.根据权利要求7所述的灰度发布的***,其特征在于,
所述资源调度模块,还用于将所述灰度版本的应用程序打包为云资源池的PASS层虚拟机模板;
所述灰度管理模块,还用于将所述PASS虚拟机模板发布到所述生产***;
所述SQL语句生成模块,还用于将所述数据库的灰度SQL语句更新为生产SQL语句。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710449634.9A CN109101265B (zh) | 2017-06-14 | 2017-06-14 | 灰度发布的方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710449634.9A CN109101265B (zh) | 2017-06-14 | 2017-06-14 | 灰度发布的方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109101265A true CN109101265A (zh) | 2018-12-28 |
CN109101265B CN109101265B (zh) | 2021-11-23 |
Family
ID=64795333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710449634.9A Active CN109101265B (zh) | 2017-06-14 | 2017-06-14 | 灰度发布的方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109101265B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857428A (zh) * | 2018-12-29 | 2019-06-07 | 大唐软件技术股份有限公司 | 用于iom***的灰度发布方法 |
CN111930420A (zh) * | 2020-07-30 | 2020-11-13 | 中国工商银行股份有限公司 | 无侵入式通用代码级灰度路由***及方法 |
CN112948278A (zh) * | 2021-05-14 | 2021-06-11 | 太平金融科技服务(上海)有限公司深圳分公司 | 基于灰度数据库的产品灰度发布方法、装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412947A (zh) * | 2013-08-26 | 2013-11-27 | 浙江大学 | 针对空间大数据的多边形搜索方法 |
US8904050B1 (en) * | 2013-03-13 | 2014-12-02 | Emc Corporation | Techniques for automated data storage system port initialization |
CN104346466A (zh) * | 2014-11-12 | 2015-02-11 | 中国建设银行股份有限公司 | 数据库中添加新属性数据的方法和装置 |
CN105701112A (zh) * | 2014-11-26 | 2016-06-22 | 华为软件技术有限公司 | 一种数据处理方法、装置及*** |
CN105824745A (zh) * | 2015-01-04 | 2016-08-03 | ***通信集团湖南有限公司 | 一种灰度发布方法及装置 |
CN106649083A (zh) * | 2016-09-05 | 2017-05-10 | 中国农业银行股份有限公司 | 应用灰度发布方法及设备、应用访问方法及设备 |
-
2017
- 2017-06-14 CN CN201710449634.9A patent/CN109101265B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904050B1 (en) * | 2013-03-13 | 2014-12-02 | Emc Corporation | Techniques for automated data storage system port initialization |
CN103412947A (zh) * | 2013-08-26 | 2013-11-27 | 浙江大学 | 针对空间大数据的多边形搜索方法 |
CN104346466A (zh) * | 2014-11-12 | 2015-02-11 | 中国建设银行股份有限公司 | 数据库中添加新属性数据的方法和装置 |
CN105701112A (zh) * | 2014-11-26 | 2016-06-22 | 华为软件技术有限公司 | 一种数据处理方法、装置及*** |
CN105824745A (zh) * | 2015-01-04 | 2016-08-03 | ***通信集团湖南有限公司 | 一种灰度发布方法及装置 |
CN106649083A (zh) * | 2016-09-05 | 2017-05-10 | 中国农业银行股份有限公司 | 应用灰度发布方法及设备、应用访问方法及设备 |
Non-Patent Citations (2)
Title |
---|
QUAN TAO: "Research on scalability of database design", 《RESEARCH ON SCALABILITY OF DATABASE DESIGN》 * |
周智: "移动互联网程序的灰度发布", 《电脑知识与技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857428A (zh) * | 2018-12-29 | 2019-06-07 | 大唐软件技术股份有限公司 | 用于iom***的灰度发布方法 |
CN111930420A (zh) * | 2020-07-30 | 2020-11-13 | 中国工商银行股份有限公司 | 无侵入式通用代码级灰度路由***及方法 |
CN111930420B (zh) * | 2020-07-30 | 2023-07-07 | 中国工商银行股份有限公司 | 无侵入式通用代码级灰度路由***及方法 |
CN112948278A (zh) * | 2021-05-14 | 2021-06-11 | 太平金融科技服务(上海)有限公司深圳分公司 | 基于灰度数据库的产品灰度发布方法、装置、设备和介质 |
CN112948278B (zh) * | 2021-05-14 | 2021-07-13 | 太平金融科技服务(上海)有限公司深圳分公司 | 基于灰度数据库的产品灰度发布方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109101265B (zh) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7617174B2 (en) | Method and system for automatic service composition | |
CN109087004B (zh) | 一种基于领域模型的公共工作流引擎*** | |
EP1826703B1 (en) | An access control system, a rule engine adaptor, a rule-based enforcement platform and a method for performing access control | |
CN108153520A (zh) | 软件开发方法及装置 | |
CN109753356A (zh) | 一种容器资源调度方法、装置及计算机可读存储介质 | |
CN108156236A (zh) | 业务请求处理方法、装置、计算机设备和存储介质 | |
CN109492053B (zh) | 用于访问数据的方法和装置 | |
CN107908543A (zh) | 应用程序测试方法、装置、计算机设备及存储介质 | |
CN106656650A (zh) | 业务测试环境的生成方法和***、业务测试的方法、装置和*** | |
CN109101265A (zh) | 灰度发布的方法和*** | |
CN110019080A (zh) | 数据访问方法和装置 | |
CN102760096A (zh) | 测试用数据的生成方法、单元测试方法以及单元测试*** | |
US10616068B2 (en) | Identification of networking component application programming interfaces | |
CN109614312A (zh) | 测试用例生成方法、装置、电子设备及存储介质 | |
CN106856438A (zh) | 一种网络业务实例化的方法、装置及nfv*** | |
US10332569B2 (en) | System and method for dynamic caching | |
CN114064062B (zh) | 基于Kubernetes平台和负载均衡组件的缺省灰度发布方法和装置 | |
CN105511914B (zh) | 应用更新方法、装置和*** | |
CN115061910A (zh) | 一种基于pdca循环的半自动化安全性测试方法 | |
CN114258035B (zh) | 通信方法及装置、*** | |
Boutigny et al. | Solving security constraints for 5G slice embedding: A proof-of-concept | |
CN115550373B (zh) | 基于云平台管控的联合试验任务环境负载均衡建模方法 | |
CN112068812A (zh) | 一种微服务生成方法、装置、计算机设备和存储介质 | |
CN104796465B (zh) | 云平台业务处理方法和*** | |
CN113342699B (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 |