CN110045964A - 软件灰度发布方法、代理服务器、配置中心和系统 - Google Patents

软件灰度发布方法、代理服务器、配置中心和系统 Download PDF

Info

Publication number
CN110045964A
CN110045964A CN201910282247.XA CN201910282247A CN110045964A CN 110045964 A CN110045964 A CN 110045964A CN 201910282247 A CN201910282247 A CN 201910282247A CN 110045964 A CN110045964 A CN 110045964A
Authority
CN
China
Prior art keywords
rule
grey
grey rule
gray scale
user
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
Application number
CN201910282247.XA
Other languages
English (en)
Other versions
CN110045964B (zh
Inventor
林维镇
陈影旺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xiamen Wangsu Co Ltd
Original Assignee
Xiamen Wangsu Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xiamen Wangsu Co Ltd filed Critical Xiamen Wangsu Co Ltd
Priority to CN201910282247.XA priority Critical patent/CN110045964B/zh
Publication of CN110045964A publication Critical patent/CN110045964A/zh
Application granted granted Critical
Publication of CN110045964B publication Critical patent/CN110045964B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于OpenResty的软件灰度发布方法、代理服务器、配置中心和系统,属于软件发布技术领域。所述方法包括:代理服务器接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;如果在所述灰度规则表中存在目标灰度规则,则所述代理服务器根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;如果在所述灰度规则表中没有目标灰度规则,则所述代理服务器将所述用户请求发送给常规服务器。本发明可以通过参数等更细粒度进行软件灰度发布。

Description

软件灰度发布方法、代理服务器、配置中心和系统
技术领域
本发明涉及软件发布技术领域,尤其涉及一种基于OpenResty的软件灰度发布方法、代理服务器、配置中心和系统。
背景技术
在软件新版本发布的过程中,为了使用户能够从旧版本平滑过渡到新版本,通常可以采用灰度发布(又名金丝雀发布)。灰度发布可以在新版本刚发布的时候就发现及时问题并进行调整,从而保证系统的稳定。
采用灰度发布软件时,代理服务器在接收到用户请求之后,将用户请求引流到新版本的灰度服务器或者旧版本的常规服务器。通常,代理服务器可以先将少量的用户请求导入灰度服务器,然后观察新版本的运行状态,收集相关数据,对新旧版本进行各种数据对比,当确认新版本运行良好后,再逐步将更多的用户请求导入灰度服务器,在此期间,还可以不断地调整灰度服务器与常规服务器的运行数量,以使得灰度服务器能够承受越来越大的流量压力,直到将所有的用户请求都切换到灰度服务器上,最后关闭剩下的常规服务器,完成灰度发布。如果在灰度发布过程中发现新版本有问题,可以立即将用户请求切回旧版本的常规服务器上,这样,就会将负面影响控制在最小范围内。
在实现本发明的过程中,发明人发现现有技术中至少存在以下问题:灰度发布时通常基于用户请求中的请求URL确定将用户请求引流到灰度服务器还是常规服务器,无法对针对同一个URL进行不同的灰度发布。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于OpenResty的软件灰度发布方法、代理服务器和系统。所述技术方案如下:
第一方面,提供了一种基于OpenResty的软件灰度发布方法,所述方法包括:
代理服务器接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;
所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;
如果在所述灰度规则表中存在目标灰度规则,则所述代理服务器根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;
如果在所述灰度规则表中没有目标灰度规则,则所述代理服务器将所述用户请求发送给常规服务器。
进一步的,所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则,包括:
代理服务器根据所述用户请求包含的请求URL,在本地预存的灰度规则表中确定所述用户请求对应的灰度规则表;
代理服务器根据所述用户请求包含的请求方法,在所述用户请求对应的灰度规则表中确定目标灰度规则。
进一步的,所述代理服务器根据所述用户请求包含的请求方法,在所述用户请求对应的灰度规则表中确定目标灰度规则,包括:
代理服务器逐一选取所述用户请求对应的灰度规则表中的灰度规则,确定所述灰度规则的灰度生效时间范围是否包含当前时刻;
如果所述灰度生效时间范围包含当前时刻,则所述代理服务器确定所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法是否相同;
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则所述代理服务器将所述灰度规则作为所述目标灰度规则。
进一步的,所述请求信息还包括接口名称和请求参数,在所述代理服务器确定所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法是否相同之后,所述方法还包括:
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则所述代理服务器确定所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称是否相同;
如果所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称相同,则所述代理服务器比较所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数是否相同;
如果所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数相同,则所述代理服务器将所述灰度规则作为所述目标灰度规则。
进一步的,在所述代理服务器接收用户请求之前,所述方法还包括:
代理服务器周期性从配置中心获取灰度规则,并根据所述灰度规则更新本地存储的灰度规则表,所述配置中心用于配置并存储灰度规则。
第二方面,提供了一种基于OpenResty的软件灰度发布方法,所述方法包括:
配置中心预先配置灰度规则,并将所述灰度规则存储在配置中心本地;
当接收到代理服务器发来的灰度规则更新请求后,所述配置中心从本地存储的所有灰度规则中确定灰度状态为生效的灰度规则;
所述配置中心从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;
所述配置中心从灰度生效时间范围包含当前时刻的灰度规则中,确定处于灰度作用范围内的灰度规则作为灰度规则更新信息;
所述配置中心将所述灰度规则更新信息发送给所述代理服务器。
第三方面,提供了一种基于OpenResty的软件灰度发布代理服务器,所述代理服务器包括:
消息模块,用于接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;
筛选模块,用于根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;
发布模块,用于如果在所述灰度规则表中存在目标灰度规则,则根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;如果在所述灰度规则表中没有目标灰度规则,则将所述用户请求发送给常规服务器。
进一步的,所述筛选模块,具体用于:
根据所述用户请求包含的请求URL,在本地预存的灰度规则表中确定所述用户请求对应的灰度规则表;
根据所述用户请求包含的请求方法,在所述用户请求对应的灰度规则表中确定目标灰度规则。
进一步的,所述筛选模块,具体用于:
逐一选取所述用户请求对应的灰度规则表中的灰度规则,确定所述灰度规则的灰度生效时间范围是否包含当前时刻;
如果所述灰度生效时间范围包含当前时刻,则确定所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法是否相同;
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则将所述灰度规则作为所述目标灰度规则。
进一步的,所述请求信息还包括接口名称和请求参数,所述筛选模块,还用于:
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则确定所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称是否相同;
如果所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称相同,则比较所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数是否相同;
如果所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数相同,则将所述灰度规则作为所述目标灰度规则。
进一步的,所述代理服务器,还包括:
存储模块,用于周期性从配置中心获取灰度规则,并根据所述灰度规则更新本地存储的灰度规则表,所述配置中心用于配置并存储灰度规则。
第四方面,提供了一种基于OpenResty的软件灰度发布配置中心,所述配置中心包括:
配置模块,用于预先配置灰度规则,并将所述灰度规则存储在配置中心本地;
选择模块,用于当接收到代理服务器发来的灰度规则更新请求后,从本地存储的所有灰度规则中确定灰度状态为生效的灰度规则;从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;从灰度生效时间范围包含当前时刻的灰度规则中,确定处于灰度作用范围内的灰度规则作为灰度规则更新信息;
发送模块,用于将所述作为灰度规则更新信息发送给所述代理服务器。
第五方面,提供了一种基于OpenResty的软件灰度发布系统,所述系统包括:上述第三方面的代理服务器和第四方面的配置中心。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,代理服务器接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;如果在所述灰度规则表中存在目标灰度规则,则所述代理服务器根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;如果在所述灰度规则表中没有目标灰度规则,则所述代理服务器将所述用户请求发送给常规服务器。这样,不论不同用户请求中的请求URL是否相同,代理服务器都可以根据用户请求包含的请求URL和请求方法,使用不同的灰度规则,将用户请求引流到相应的灰度服务器上,从而实现针对相同请求URL的不同灰度发布。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于OpenResty的软件灰度发布方法的流程图;
图2是本发明实施例提供的一种基于OpenResty的软件灰度发布代理服务器的结构示意图;
图3是本发明实施例提供的一种基于OpenResty的软件灰度发布代理服务器的结构示意图;
图4是本发明实施例提供的一种基于OpenResty的软件灰度发布配置中心的结构示意图;
图5是本发明实施例提供的一种基于OpenResty的软件灰度发布系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种基于OpenResty的软件灰度发布方法,该方法可由代理服务器和配置中心共同完成。配置中心上可以配置不同的灰度规则,并根据代理服务器的请求,将灰度规则发送给代理服务器。代理服务器可以根据用户请求选择不同的灰度规则,将用户请求发送给对应的灰度服务器上。代理服务器上安装有OpenResty组件,OpenResty组件可以用于完成存储配置中心发来的灰度规则表、接收用户请求并获取请求信息以及确定目标灰度规则等操作。本实施例的应用场景可以是:代理服务在接收到的用户请求之后,获取用户请求中包含的URL、请求方法、请求参数等请求信息,然后根据上述请求信息,在本地预存的灰度规则表中确定目标灰度规则,最后根据目标灰度规则,将用户请求发送给对应的灰度服务器。这样,通过设置不同的灰度规则,就可以根据用户请求中包含的请求参数,对不同的用户请求进行相应的灰度处理。
下面将结合具体实施方式,对图1所示的一种基于OpenResty的软件灰度发布流程进行详细的说明,内容可以如下:
步骤101:代理服务器接收用户请求,获取用户请求中包含的请求信息,其中,请求信息包括请求URL和请求方法。
在实施中,用户在开始使用应用时,通过客户端向代理服务器发送用户请求。代理服务器接收到用户请求,然后获取用户请求中包含的请求信息,通常,用户请求中可以包含有请求URL,请求方法等信息,请求URL一般是用户请求的目标URL,请求方法包括post、get、head等。可以选择tomcat服务器作为代理服务器,代理服务器上安装有nginx+lua程序以及OpenResty组件以作为web反向代理服务器。如果web应用需要登录权限才能访问的,可以通过共享session进行处理,例如可以采用tomcat提供的session共享方式配置,也可以引入redis等第三方缓存共享session。
步骤102:代理服务器根据请求信息,在本地预存的灰度规则表中确定目标灰度规则。
在实施中,代理服务器本地预先存储有灰度规则表,灰度规则表中记录有至少一条灰度规则,每条灰度规则都包含有灰度信息和处理信息。灰度信息可以包括:灰度状态、灰度生效时间范围、灰度作用范围、对应的灰度请求URL、对应的灰度请求方法、对应的适配接口名称、对应的灰度请求参数等信息;处理信息可以包括目标灰度服务器IP等用于将用户请求发送给目标灰度服务器的相关信息。在获取用户请求中包含的请求信息之后,代理服务器根据请求信息,通过灰度规则表中每条灰度规则的灰度信息进行查找筛选,将请求信息与灰度信息相匹配的灰度规则确定为目标灰度规则。
代理服务器本地可以预存有多个灰度规则表,并且可以针对每个灰度请求URL单独设置一个灰度规则表,故而,步骤102的处理,相应可以如下:代理服务器根据用户请求包含的请求URL,在本地预存的灰度规则表中确定用户请求对应的灰度规则表;代理服务器根据用户请求包含的请求方法,在用户请求对应的灰度规则表中确定目标灰度规则。
在实施中,代理服务器在获取用户请求中包含的请求URL和请求方法之后,首先根据请求URL,在本地预存的灰度规则表中查找对应的灰度规则表。然后在对应的灰度规则表中,代理服务器逐一选取该灰度规则表中的每条灰度规则,进一步根据请求方法,筛选灰度请求方法与该请求方法相同的灰度规则,将该灰度规则作为目标灰度规则。需要说明的是,代理服务器通过上述方法确定的目标灰度规则可能有一条或者多条,由于灰度规则表中的灰度规则通常以更新的先后顺序进行排序,即最近更新的灰度规则排序靠前,因此,当确定的目标灰度规则有多条时,代理服务器确定的第一条目标灰度规则(即最新更新的灰度规则)具有较高的优先级,该目标灰度规则生效,而其余的目标灰度规则不生效。
当确定目标灰度规则时,还应当考虑灰度规则的灰度生效时间范围,如果当前时刻不在该灰度规则的灰度生效时间范围内,即使确定该灰度规则为目标灰度规则,也无法进行相应的灰度处理,所以不应该将该灰度规则确定为目标灰度规则,故而,相应的处理可以如下:代理服务器逐一选取用户请求对应的灰度规则表中的灰度规则,确定灰度规则的灰度生效时间范围是否包含当前时刻;如果灰度生效时间范围包含当前时刻,则代理服务器确定灰度规则对应的灰度请求方法与用户请求包含的请求方法是否相同;如果灰度规则对应的灰度请求方法与用户请求包含的请求方法相同,则代理服务器将灰度规则作为目标灰度规则。
在实施中,在确定了用户请求对应的灰度规则表之后,由于灰度规则表中可能含有一条或多条灰度规则,因此,代理服务器需要逐一选取用户请求对应的灰度规则表中的每条灰度规则,确定该灰度规则是否为目标灰度规则。代理服务器从用户请求对应的灰度规则表中选取一条灰度规则,确定该灰度规则的灰度生效时间范围,再进一步确定当前时刻是否在灰度生效时间范围内,如果当前时刻不在灰度生效时间范围内,说明该灰度规则现在没有生效,即使该灰度规则能够满足其他条件,但如果将其作为目标灰度规则,由于没有生效,也不能根据该灰度规则对用户请求进行相应的灰度处理。因此,不能将此灰度规则作为目标灰度规则,可以直接跳过该灰度规则,继续筛选下一条灰度规则。如果当前时刻在灰度生效时间范围内,说明该灰度规则正在生效中,可以对用户请求进行处理,因此,代理服务器可以进一步确定该灰度规则对应的灰度请求方法与用户请求包含的请求方法是否相同,如果相同,代理服务器将该用户请求作为目标用户请求,如果不相同,代理服务器就跳过该灰度规则,继续筛选下一条灰度规则。
用户请求包含的请求信息还包括接口名称和请求参数,可以根据这些请求信息对灰度规则进行更细粒度的筛选,相应的处理可以如下:如果灰度规则对应的灰度请求方法与用户请求包含的请求方法相同,则代理服务器确定灰度规则对应的适配接口名称与用户请求包含的接口名称是否相同;如果灰度规则对应的适配接口名称与用户请求包含的接口名称相同,则代理服务器比较灰度规则对应的灰度请求参数与用户请求包含的请求参数是否相同;如果灰度规则对应的灰度请求参数与用户请求包含的请求参数相同,则代理服务器将灰度规则作为目标灰度规则。
在实施中,代理服务器获取的用户请求中包含的请求信息还可以包括接口名称和请求参数。当确定灰度规则对应的灰度请求方法和用户请求包含的请求方法相同时,代理服务器可以进一步确定灰度规则对应的适配接口名称和用户请求中包含的接口名称是否相同,如果相同,代理服务器可以继续比较灰度规则对应的灰度请求参数与用户请求包含的请求参数是否相同,否则,代理服务器跳过该灰度规则,继续筛选下一条灰度规则。如果灰度规则对应的灰度请求参数与用户请求包含的请求参数相同,代理服务器将该用户请求作为目标用户请求,如果灰度规则对应的灰度请求参数与用户请求包含的请求参数不相同,则代理服务器跳过该灰度规则,继续筛选下一条灰度规则。
需要说明的是,灰度规则对应的灰度请求参数是参数名值对的形式,即一个参数名以及其对应的参数值,故而,代理服务器在获取用户请求包含的请求信息中的请求参数时,也是参数名值对的形式。例如可以是post请求中body参数的参数名值对,或者是get请求中url参数的参数名值对,具体可以是userid,name等。在比较灰度规则对应的灰度请求参数与用户请求包含的请求参数是否相同时,也是同时比较参数名和对应的参数值,只有参数名和参数值都相同时,灰度规则对应的灰度请求参数与用户请求包含的请求参数才相同;参数名相同,参数值不同,或者参数名不同,参数值相同,灰度规则对应的灰度请求参数与用户请求包含的请求参数均判断为不相同。
还需要说明的是,灰度规则中可以包含有一组、两组或更多组对应的灰度请求参数,用户请求包含的请求参数可以是一组或多组。以灰度规则中包含两组对应的灰度请求参数为例,在比较灰度规则对应的灰度请求参数与用户请求包含的请求参数是否相同时,先将用户请求包含的所有的请求参数,逐一与第一灰度请求参数进行比较;然后再将用户请求包含的所有的请求参数,逐一与第二灰度请求参数进行比较。通过在灰度规则中设置多组灰度请求参数,可以为具有相同请求URL、相同请求方法且相同接口名称的同一用户,提供不同类型、更具针对性、更加个性化的灰度发布。
步骤103:如果在灰度规则表中存在目标灰度规则,则代理服务器根据目标灰度规则,将用户请求发送给对应的灰度服务器。
在实施中,如果代理服务器本地预存的灰度规则表中存在目标灰度规则,在确定目标灰度规则之后,代理服务器就可以根据目标灰度规则包含的处理信息,将用户请求发送给相应的灰度服务器,完成软件的灰度发布。
步骤104:如果在灰度规则表中没有目标灰度规则,则代理服务器将用户请求发送给常规服务器。
在实施中,灰度规则表中可也能不存在目标灰度规则,因此,如果在步骤102中,代理服务器在本地预存的灰度规则表中,没有找到目标灰度规则,说明该用户请求不符合本地预存的任何一条灰度规则,不需要按照任何一条灰度规则执行灰度处理,因此,可以根据该用户请求包含的五元组信息,直接将该用户请求发送给对应的常规服务器即可。
代理服务器还可以连接配置中心,通过配置中心获取灰度规则,相应的处理可以如下:代理服务器周期性从配置中心获取灰度规则,并根据灰度规则更新本地存储的灰度规则表,配置中心用于配置并存储灰度规则。
在实施中,代理服务器还连接有配置中心,管理人员可以在配置中心上配置灰度规则,并将配置好的灰度规则存储在配置中心上。代理服务器本地设置有灰度规则表,灰度规则表中存储有一条或多条灰度规则。代理服务器每隔固定时间间隔,周期性向配置中心发送灰度规则更新请求,以从配置中心获取灰度规则,并将获取的灰度规则存储的灰度规则表中,从而完成灰度规则表的更新。
例如:代理服务器可以启动OpenResty组件的定时器功能,通过ngx.timer.at设置每隔5min获取一次配置中心的灰度规则,并缓存到代理服务器上的nginx中。当到达预设的时间时,定时器调用lua,使用http方式从配置中心获取到灰度规则,这样可以解耦数据库,使得OpenResty无需另外数据库。
在将配置中心上存储的灰度规则发送给代理服务器之前,可以根据一定条件,对灰度规则进行相应的筛选,从而避免将没有用的灰度规则发送给代理服务器,减少无效数据的传输量,故而,相应的处理可以如下:配置中心预先配置灰度规则,并将灰度规则存储在配置中心本地;当接收到代理服务器发来的灰度规则更新请求后,配置中心从本地存储的所有灰度规则中确定灰度状态为生效的灰度规则;配置中心从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;配置中心从灰度生效时间范围包含当前时刻的灰度规则中,确定处于灰度作用范围内的灰度规则作为灰度规则更新信息;配置中心将灰度规则更新信息发送给代理服务器。
在实施中,还可以设置有配置中心,管理人员可以在配置中心上配置灰度规则,并将配置好的灰度规则存储在配置中心上。管理人员在配置灰度规则时,可以配置灰度状态、灰度生效时间范围、灰度作用范围、对应的灰度请求参数、对应的灰度请求URL、对应的灰度请求方法、对应的适配接口名称和目标灰度服务器IP等。其中,灰度状态、灰度生效时间范围、灰度作用范围、对应的灰度请求参数、对应的灰度请求URL、对应的灰度请求方法、对应的适配接口名称可以用于筛选用户请求是否适用于该灰度规则,并可以通过目标灰度服务器IP将适用于该灰度规则的用户请求发送给相应的目标灰度服务器。配置中心与代理服务器相连接,当接收到代理服务器发来的灰度规则更新请求之后,配置中心首先在本地存储的所有灰度规则中,确定灰度状态为生效的灰度规则;然后,配置服务器继续从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;最后,配置服务器从灰度生效时间范围包含当前时刻的灰度规则中确定处于灰度作用范围内的灰度规则,并将最终确定的一条或者多条灰度规则作为灰度规则更新信息发送给代理服务器。
本发明实施例中,代理服务器接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;如果在所述灰度规则表中存在目标灰度规则,则所述代理服务器根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;如果在所述灰度规则表中没有目标灰度规则,则所述代理服务器将所述用户请求发送给常规服务器。这样,不论不同用户请求中的请求URL是否相同,代理服务器都可以根据用户请求包含的请求URL和请求方法,使用不同的灰度规则,将用户请求引流到相应的灰度服务器上,从而实现针对相同请求URL的不同灰度发布。
基于相同的技术构思,本发明实施例还提供了一种基于OpenResty的软件灰度发布代理服务器,如图2所示,所述代理服务器包括:
消息模块201,用于接收用户请求,获取用户请求中包含的请求信息,其中,请求信息包括请求URL和请求方法。
筛选模块202,用于根据请求信息,在本地预存的灰度规则表中确定目标灰度规则。
发布模块203,用于如果在灰度规则表中存在目标灰度规则,则根据目标灰度规则,将用户请求发送给对应的灰度服务器;如果在灰度规则表中没有目标灰度规则,则将用户请求发送给常规服务器。
可选的,筛选模块202,具体用于:
根据用户请求包含的请求URL,在本地预存的灰度规则表中确定用户请求对应的灰度规则表;
根据用户请求包含的请求方法,在用户请求对应的灰度规则表中确定目标灰度规则。
可选的,筛选模块202,具体用于:
逐一选取用户请求对应的灰度规则表中的灰度规则,确定灰度规则的灰度生效时间范围是否包含当前时刻;
如果灰度生效时间范围包含当前时刻,则确定灰度规则对应的灰度请求方法与用户请求包含的请求方法是否相同;
如果灰度规则对应的灰度请求方法与用户请求包含的请求方法相同,则将灰度规则作为目标灰度规则。
可选的,请求信息还包括接口名称和请求参数,筛选模块202,还用于:
如果灰度规则对应的灰度请求方法与用户请求包含的请求方法相同,则确定灰度规则对应的适配接口名称与用户请求包含的接口名称是否相同;
如果灰度规则对应的适配接口名称与用户请求包含的接口名称相同,则比较灰度规则对应的灰度请求参数与用户请求包含的请求参数是否相同;
如果灰度规则对应的灰度请求参数与用户请求包含的请求参数相同,则将灰度规则作为目标灰度规则。
可选的,如图3所示,代理服务器,还包括:
存储模块204,用于周期性从配置中心获取灰度规则,并根据灰度规则更新本地存储的灰度规则表,配置中心用于配置并存储灰度规则。
基于相同的技术构思,本发明实施例还提供了一种基于OpenResty的软件灰度发布配置中心,如图4所示,所述配置中心包括:
配置模块301,用于预先配置灰度规则,并将灰度规则存储在配置中心本地。
选择模块302,用于当接收到代理服务器发来的灰度规则更新请求后,从本地存储的所有灰度规则中确定灰度状态为生效的灰度规则;从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;从灰度生效时间范围包含当前时刻的灰度规则中,确定处于灰度作用范围内的灰度规则作为灰度规则更新信息。
发送模块303,用于将作为灰度规则更新信息发送给代理服务器。
基于相同的技术构思,本发明实施例还提供了一种基于OpenResty的软件灰度发布系统,如图5所示,所述系统包括:上述代理服务器和上述配置中心。
需要说明的是:上述实施例提供的基于OpenResty的软件灰度发布方法和基于OpenResty的软件灰度发布代理服务器、基于OpenResty的软件灰度发布配置中心实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务端,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.基于OpenResty的软件灰度发布方法,其特征在于,所述方法包括:
代理服务器接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;
所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;
如果在所述灰度规则表中存在目标灰度规则,则所述代理服务器根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;
如果在所述灰度规则表中没有目标灰度规则,则所述代理服务器将所述用户请求发送给常规服务器。
2.根据权利要求1所述的方法,其特征在于,所述代理服务器根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则,包括:
代理服务器根据所述用户请求包含的请求URL,在本地预存的灰度规则表中确定所述用户请求对应的灰度规则表;
代理服务器根据所述用户请求包含的请求方法,在所述用户请求对应的灰度规则表中确定目标灰度规则。
3.根据权利要求2所述的方法,其特征在于,所述代理服务器根据所述用户请求包含的请求方法,在所述用户请求对应的灰度规则表中确定目标灰度规则,包括:
代理服务器逐一选取所述用户请求对应的灰度规则表中的灰度规则,确定所述灰度规则的灰度生效时间范围是否包含当前时刻;
如果所述灰度生效时间范围包含当前时刻,则所述代理服务器确定所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法是否相同;
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则所述代理服务器将所述灰度规则作为所述目标灰度规则。
4.根据权利要求3所述的方法,其特征在于,所述请求信息还包括接口名称和请求参数,在所述代理服务器确定所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法是否相同之后,所述方法还包括:
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则所述代理服务器确定所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称是否相同;
如果所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称相同,则所述代理服务器比较所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数是否相同;
如果所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数相同,则所述代理服务器将所述灰度规则作为所述目标灰度规则。
5.根据权利要求1所述的方法,其特征在于,在所述代理服务器接收用户请求之前,所述方法还包括:
代理服务器周期性从配置中心获取灰度规则,并根据所述灰度规则更新本地存储的灰度规则表,所述配置中心用于配置并存储灰度规则。
6.基于OpenResty的软件灰度发布方法,其特征在于,所述方法包括:
配置中心预先配置灰度规则,并将所述灰度规则存储在配置中心本地;
当接收到代理服务器发来的灰度规则更新请求后,所述配置中心从本地存储的所有灰度规则中确定灰度状态为生效的灰度规则;
所述配置中心从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;
所述配置中心从灰度生效时间范围包含当前时刻的灰度规则中,确定处于灰度作用范围内的灰度规则作为灰度规则更新信息;
所述配置中心将所述灰度规则更新信息发送给所述代理服务器。
7.基于OpenResty的软件灰度发布代理服务器,其特征在于,所述代理服务器包括:
消息模块,用于接收用户请求,获取所述用户请求中包含的请求信息,其中,所述请求信息包括请求URL和请求方法;
筛选模块,用于根据所述请求信息,在本地预存的灰度规则表中确定目标灰度规则;
发布模块,用于如果在所述灰度规则表中存在目标灰度规则,则根据所述目标灰度规则,将所述用户请求发送给对应的灰度服务器;如果在所述灰度规则表中没有目标灰度规则,则将所述用户请求发送给常规服务器。
8.根据权利要求7所述的代理服务器,其特征在于,所述筛选模块,具体用于:
根据所述用户请求包含的请求URL,在本地预存的灰度规则表中确定所述用户请求对应的灰度规则表;
根据所述用户请求包含的请求方法,在所述用户请求对应的灰度规则表中确定目标灰度规则。
9.根据权利要求8所述的代理服务器,其特征在于,所述筛选模块,具体用于:
逐一选取所述用户请求对应的灰度规则表中的灰度规则,确定所述灰度规则的灰度生效时间范围是否包含当前时刻;
如果所述灰度生效时间范围包含当前时刻,则确定所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法是否相同;
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则将所述灰度规则作为所述目标灰度规则。
10.根据权利要求9所述的代理服务器,其特征在于,所述请求信息还包括接口名称和请求参数,所述筛选模块,还用于:
如果所述灰度规则对应的灰度请求方法与所述用户请求包含的请求方法相同,则确定所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称是否相同;
如果所述灰度规则对应的适配接口名称与所述用户请求包含的接口名称相同,则比较所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数是否相同;
如果所述灰度规则对应的灰度请求参数与所述用户请求包含的请求参数相同,则将所述灰度规则作为所述目标灰度规则。
11.根据权利要求7所述的代理服务器,其特征在于,所述代理服务器,还包括:
存储模块,用于周期性从配置中心获取灰度规则,并根据所述灰度规则更新本地存储的灰度规则表,所述配置中心用于配置并存储灰度规则。
12.基于OpenResty的软件灰度发布配置中心,其特征在于,所述配置中心包括:
配置模块,用于预先配置灰度规则,并将所述灰度规则存储在配置中心本地;
选择模块,用于当接收到代理服务器发来的灰度规则更新请求后,从本地存储的所有灰度规则中确定灰度状态为生效的灰度规则;从灰度状态为生效的灰度规则中确定灰度生效时间范围包含当前时刻的灰度规则;从灰度生效时间范围包含当前时刻的灰度规则中,确定处于灰度作用范围内的灰度规则作为灰度规则更新信息;
发送模块,用于将所述作为灰度规则更新信息发送给所述代理服务器。
13.基于OpenResty的软件灰度发布系统,其特征在于,所述系统包括:权利要求7-11所述的代理服务器和权利要求12所述的配置中心。
CN201910282247.XA 2019-04-09 2019-04-09 软件灰度发布方法、代理服务器、配置中心和系统 Expired - Fee Related CN110045964B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910282247.XA CN110045964B (zh) 2019-04-09 2019-04-09 软件灰度发布方法、代理服务器、配置中心和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910282247.XA CN110045964B (zh) 2019-04-09 2019-04-09 软件灰度发布方法、代理服务器、配置中心和系统

Publications (2)

Publication Number Publication Date
CN110045964A true CN110045964A (zh) 2019-07-23
CN110045964B CN110045964B (zh) 2022-10-28

Family

ID=67276491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910282247.XA Expired - Fee Related CN110045964B (zh) 2019-04-09 2019-04-09 软件灰度发布方法、代理服务器、配置中心和系统

Country Status (1)

Country Link
CN (1) CN110045964B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673893A (zh) * 2019-09-24 2020-01-10 携程计算机技术(上海)有限公司 应用程序的配置方法、系统、电子设备和存储介质
CN111209032A (zh) * 2020-01-06 2020-05-29 中国银联股份有限公司 灰度发布方法、配置中心服务器、用户终端、系统及介质
CN111737128A (zh) * 2020-06-19 2020-10-02 北京百度网讯科技有限公司 线上测试方法及灰度分流设备、存储介质
WO2021243666A1 (zh) * 2020-06-04 2021-12-09 深圳市欢太科技有限公司 一种信息处理方法、设备、系统、介质、芯片及程序
CN114500662A (zh) * 2021-12-23 2022-05-13 中国电信股份有限公司 微服务灰度发布方法及装置、电子设备、可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176790A (zh) * 2011-12-26 2013-06-26 阿里巴巴集团控股有限公司 应用发布方法和系统
CN106998369A (zh) * 2017-05-26 2017-08-01 努比亚技术有限公司 灰度发布方法、网关拦截器及计算机可读存储介质
CN107864175A (zh) * 2017-08-24 2018-03-30 平安普惠企业管理有限公司 灰度发布控制方法、装置、设备及存储介质
CN108319468A (zh) * 2017-01-16 2018-07-24 北京京东尚科信息技术有限公司 灰度发布方法、装置、系统及电子设备
CN108595207A (zh) * 2018-03-23 2018-09-28 深圳乐信软件技术有限公司 一种灰度发布方法、规则引擎、系统、终端和存储介质
CN108768875A (zh) * 2018-05-31 2018-11-06 康键信息技术(深圳)有限公司 应用的灰度发布方法、装置及计算机可读存储介质
CN108874403A (zh) * 2018-05-30 2018-11-23 深圳市分期乐网络科技有限公司 规则文件的发布方法、装置、设备及存储介质
US20180349179A1 (en) * 2017-05-31 2018-12-06 Linkedin Corporation Centralized flexible deployment system

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176790A (zh) * 2011-12-26 2013-06-26 阿里巴巴集团控股有限公司 应用发布方法和系统
CN108319468A (zh) * 2017-01-16 2018-07-24 北京京东尚科信息技术有限公司 灰度发布方法、装置、系统及电子设备
CN106998369A (zh) * 2017-05-26 2017-08-01 努比亚技术有限公司 灰度发布方法、网关拦截器及计算机可读存储介质
US20180349179A1 (en) * 2017-05-31 2018-12-06 Linkedin Corporation Centralized flexible deployment system
CN107864175A (zh) * 2017-08-24 2018-03-30 平安普惠企业管理有限公司 灰度发布控制方法、装置、设备及存储介质
CN108595207A (zh) * 2018-03-23 2018-09-28 深圳乐信软件技术有限公司 一种灰度发布方法、规则引擎、系统、终端和存储介质
CN108874403A (zh) * 2018-05-30 2018-11-23 深圳市分期乐网络科技有限公司 规则文件的发布方法、装置、设备及存储介质
CN108768875A (zh) * 2018-05-31 2018-11-06 康键信息技术(深圳)有限公司 应用的灰度发布方法、装置及计算机可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
颜振东: ""移动应用灰度发布系统的设计与实现"", 《中国硕士学位论文全文数据库》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673893A (zh) * 2019-09-24 2020-01-10 携程计算机技术(上海)有限公司 应用程序的配置方法、系统、电子设备和存储介质
CN110673893B (zh) * 2019-09-24 2023-06-09 携程计算机技术(上海)有限公司 应用程序的配置方法、系统、电子设备和存储介质
CN111209032A (zh) * 2020-01-06 2020-05-29 中国银联股份有限公司 灰度发布方法、配置中心服务器、用户终端、系统及介质
CN111209032B (zh) * 2020-01-06 2023-06-16 中国银联股份有限公司 灰度发布方法、配置中心服务器、用户终端、系统及介质
WO2021243666A1 (zh) * 2020-06-04 2021-12-09 深圳市欢太科技有限公司 一种信息处理方法、设备、系统、介质、芯片及程序
CN111737128A (zh) * 2020-06-19 2020-10-02 北京百度网讯科技有限公司 线上测试方法及灰度分流设备、存储介质
CN114500662A (zh) * 2021-12-23 2022-05-13 中国电信股份有限公司 微服务灰度发布方法及装置、电子设备、可读存储介质
CN114500662B (zh) * 2021-12-23 2024-04-30 中国电信股份有限公司 微服务灰度发布方法及装置、电子设备、可读存储介质

Also Published As

Publication number Publication date
CN110045964B (zh) 2022-10-28

Similar Documents

Publication Publication Date Title
CN110045964A (zh) 软件灰度发布方法、代理服务器、配置中心和系统
US11374885B2 (en) Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes
US7366787B2 (en) Dynamic configuration of a content publisher
CN103841134B (zh) 基于api发送、接收信息的方法、装置及系统
US10038720B2 (en) Master security policy server
JP5023596B2 (ja) プログラム配布装置
CN108306971A (zh) 一种发送数据资源的获取请求的方法和系统
CN109660400A (zh) 流控配置方法及系统
AU2005200345A1 (en) Update distribution system architecture and method for distributing software
AU2005222887A1 (en) Application programming interface for administering the distribution of software updates in an update distribution system
JP2008538428A5 (zh)
US20090254900A1 (en) Network system, computers, and method and program for providing and executing applications in network system
CN104243405A (zh) 一种请求处理方法、装置及系统
CN105897850A (zh) 用于cdn平台的响应处理方法、调度代理服务器及系统
CN101326493A (zh) 用于多处理器服务器中的负载分配的方法和装置
JP2009244945A (ja) 負荷分散プログラム、負荷分散方法、負荷分散装置およびそれを含むシステム
CN108366020A (zh) 一种发送数据资源的获取请求的方法和系统
CN109361622A (zh) 对cdn系统的业务连接进行带宽控制的方法及cdn系统
US20040255287A1 (en) Method and apparatus for updating inter-server communication software
WO2000047003A1 (en) Method, system and computer program product for adaptive logging
CN107979644A (zh) 防止高并发的信息包下载方法、电子设备、存储介质
CN106657259A (zh) 一种用于服务器集群的路由服务器及路由服务方法
CN111935025A (zh) 一种tcp传输性能的控制方法、装置、设备和介质
WO2008000840A1 (en) Distributed p2p network system
CN113986276A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20221028