CN111464520B - 一种数据处理方法、装置、存储介质及电子设备 - Google Patents
一种数据处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111464520B CN111464520B CN202010223611.8A CN202010223611A CN111464520B CN 111464520 B CN111464520 B CN 111464520B CN 202010223611 A CN202010223611 A CN 202010223611A CN 111464520 B CN111464520 B CN 111464520B
- Authority
- CN
- China
- Prior art keywords
- gray level
- shunting
- distribution
- determining
- gray
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例提供了一种数据处理方法、装置、存储介质及电子设备,该方法基于灰度发布系统,首先获取待处理的灰度分流请求报文,然后基于所述灰度分流请求报文,确定出灰度分流特征,之后基于所述灰度分流特征,确定出目标集群。本发明中的灰度发布系统支持HTTP(S)协议和TCP协议,能够根据不同协议提供不同的解码器扩展,然后通过对解码后的报文进行提取,实现支持多种协议的灰度分流且通用性较强。
Description
技术领域
本发明涉及数据处理技术领域,具体涉及一种数据处理方法、装置、存储介质及电子设备。
背景技术
灰度发布系统是一种在黑与白之间,能够平滑过度的发布方式,例如在该系统中,可以实现将产品特征A向产品特征B的过渡。具体的,该系统同时进行产品特征A以及产品特征B的测试,使该系统中一部分用户继续使用产品特征A,一部分用户使用产品特征B,如果用户对产品特征B的不良反馈少于阈值,则可以将全部的用户都迁移到产品特征B上,实现产品特征A向产品特征B的过渡,如果用户对产品特征B的不良反馈高于阈值,则对该产品特征进行调整,以更好的适应用户的需求。
可见,灰度发布系统可以便于在执行灰度的任意阶段发现和调整过渡中出现的问题。目前,常用的灰度发布系统包括以下实现方式:
①在NGINX网关层,基于NGX_LUA,使用LUA实现动态灰度分流逻辑;
②将灰度分流逻辑实现在业务网关逻辑中;
③将灰度分流逻辑实现在RPC负载均衡逻辑中。
然而,发明人发现,NGX_LUA实现的灰度分流网关层,能够较好地支持分流扩展,但仅支持HTTP协议,且对于分流特征信息需要定制化开发,有一定的侵入性。将灰度分流逻辑实现在业务网关逻辑或者RPC负载均衡逻辑中,代码侵入性较高,扩展性不佳,无法做到通用化。
因此,如何提供一种数据处理方法以及灰度发布系统,能够支持多种协议的灰度分流且提高通用性,是本领域技术人员亟待解决的一大技术难题。
发明内容
有鉴于此,本发明实施例提供了一种数据处理方法以及灰度发布系统,能够支持多种协议的灰度分流且通用性较强。
为实现上述目的,本发明实施例提供如下技术方案:
一种数据处理方法,包括:
获取待处理的灰度分流请求报文;
基于所述灰度分流请求报文,确定出灰度分流特征;
基于所述灰度分流特征,确定出目标集群。
可选的,所述基于所述灰度分流请求报文,确定出灰度分流特征,包括:
确定所述灰度分流请求报文的待解码类型;
基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
基于所述解码后数据,确定出目标灰度分流特征。
可选的,所述基于所述灰度分流特征,确定出目标集群,包括:
获取全部灰度分流规则分组列表,判断所述灰度分流规则分组列表中是否包含所述灰度分流特征,如果是,确定与所述灰度分流特征对应的集群为所述目标集群,如果否,获取全局配置的默认转发机器列表,基于所述默认转发机器列表中包含的有效的通讯长连接,对所述灰度分流请求报文进行转发,或,发送异常报文。
可选的,还包括:
确定同一个交易流程中的多个页面请求的请求报文的分流特征为相同的分流特征。
一种数据处理装置,包括:
获取模块,用于获取待处理的灰度分流请求报文;
第一确定模块,用于基于所述灰度分流请求报文,确定出灰度分流特征;
第二确定模块,用于基于所述灰度分流特征,确定出目标集群。
可选的,所述第一确定模块包括:
第一确定单元,用于确定所述灰度分流请求报文的待解码类型;
第二确定单元,用于基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
第三确定单元,用于基于所述解码后数据,确定出目标灰度分流特征。
可选的,所述第二确定模块包括:
第四确定单元,用于获取全部灰度分流规则分组列表,判断所述灰度分流规则分组列表中是否包含所述灰度分流特征,如果是,确定与所述灰度分流特征对应的集群为所述目标集群,如果否,获取全局配置的默认转发机器列表,基于所述默认转发机器列表中包含的有效的通讯长连接,对所述灰度分流请求报文进行转发,或,发送异常报文。
可选的,还包括:
第三确定模块,用于确定同一个交易流程中的多个页面请求的请求报文的分流特征为相同的分流特征。
一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行任意一项上述的数据处理方法。
一种电子设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如任意一项上述的数据处理方法。
基于上述技术方案,本发明实施例提供了一种数据处理方法、装置、存储介质及电子设备,该方法基于灰度发布系统,首先获取待处理的灰度分流请求报文,然后基于所述灰度分流请求报文,确定出灰度分流特征,之后基于所述灰度分流特征,确定出目标集群。本发明中的灰度发布系统支持HTTP(S)协议和TCP协议,能够根据不同协议提供不同的解码器扩展,然后通过对解码后的报文进行提取,实现支持多种协议的灰度分流且通用性较强。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中灰度发布系统的架构图;
图2为本发明实施例提供的一种灰度发布系统的应用场景示意图;
图3为本发明实施例一种灰度发布系统中各模块的功能分布示意图;
图4为本发明实施例提供的一种灰度分流服务器的模块示意图;
图5为本发明实施例提供的一种基于灰度分流服务器的数据处理方法的流程示意图;
图6为本发明实施例提供的一种基于灰度分流服务器的数据处理方法的又一流程示意图;
图7为本发明实施例提供的一种基于灰度分流服务器的数据处理方法的又一流程示意图;
图8为本发明实施例提供的一种下游服务节点的地址列表状态图;
图9为本发明实施例提供的一种使请求能够包含同样的分流特征的具体实现方法的流程示意图;
图10为本发明实施例提供的一种数据处理装置的结构示意图;
图11为本发明实施例提供的一种电子设备的硬件的架构图。
具体实施方式
正如背景技术所述,现有的灰度发布系统的通用性较低,如图1所示,以NGX_LUA实现的灰度发布系统ABTestingGateway为例,其基于NGINX和LUA开发,工作在应用层,使用REDIS作为分流策略数据库,可以动态配置分流规则,实现灰度发布。
发明人在研发本方案的过程中发现,基于NGX_LUA实现的灰度发布系统至少具有如下缺点:
1、仅支持HTTP(S)协议,不支持协议扩展,不能对TCP协议进行灰度分流。
2、灰度分流规则扩展性差,不能动态扩展,仅支持已经实现的灰度分流特征提取和分流逻辑判断,若需要满足多样化分流业务场景,需要使用LUA做二次开发,有一定的侵入性。
3、灰度分流逻辑执行后,将请求转发到某集群,集群的机器列表不能动态变更。若集群机器列表变更后,需要更改NGINX集群配置,然后重启灰度分流服务器,不能做到平滑增添服务节点,且配置工作繁琐。
4、对于在一个流程中,涉及多个页面跳转,该方案不能实现这些页面请求的定向投递,没有办法保证该流程的所有页面路由到同一个服务集群,无法保证该业务的正确性。
5、灰度分流配置规则容易出错,每次下发新的灰度分流配置前,需要根据分流业务场景配置相应的灰度分流规则,然后分发,配置工作较重,容易出现人为配置错误导致的路由异常。
因此,本发明实施例提供了一种数据处理方法以及灰度发布系统,可以通过插件扩展请求报文解码器、分流特征提取方式和灰度分流计算规则,能够支持HTTP(S)协议的灰度分流以及支持TCP协议的灰度分流,除此,还可以通过配置实现适配各种系统的灰度分流业务场景,实现系统的平滑灰度发布。
具体的,如图2以及图3所示,其中,图2为本发明实施例提供的一种灰度发布系统的应用场景示意图,图3为本发明实施例一种灰度发布系统中各模块的功能分布示意图。该灰度发布系统包括灰度分流配置与发布平台子系统以及灰度分流服务器。
其中,灰度分流配置与发布平台子系统用于完成灰度分流配置的管理,包括灰度策略管理、灰度集群管理、灰度规则管理和灰度分流服务器节点管理。灰度分流服务器用于完成灰度分流逻辑,实现请求的分流转发。
具体的,灰度策略管理包括a灰度分流网关配置、b灰度分流策略以及c应用名和协议名。其中,a灰度分流网关配置是指:为了保证灰度分流配置与发布平台子系统将灰度分流配置下发,需要灰度分流服务器提供相关的管理类服务RestfulAPI,其可以包括:a1灰度分流配置发布接受服务入口;a2获取当前灰度分流服务器分流配置;a3灰度分流服务器安全性检测服务入口。
在本实施例中,将灰度分流服务器相关信息登记在灰度分流配置与发布平台子系统的灰度分流网关配置中。需要进行说明的是,在本实施例中,a1灰度分流配置发布接受服务入口必须提供,进而保证灰度分流配置能够下发到灰度分流服务器。a2获取当前灰度分流服务器分流配置可以提供,便于灰度分流配置与发布平台子系统能够展示灰度分流配置,方便跟踪和排查问题,也方便进行灰度分流配置一致性校验,防止部分灰度没有正确下发导致问题。a3灰度分流服务器安全性检测服务入口可以提供,方便灰度分流配置与发布平台子系统实时监控灰度分流服务器工作状态,在灰度分流服务器异常时能够通知报警给管理人员。
具体的,本实施例中,灰度网关配置属性包括:1)网关名称;2)网关描述;3)最后发布时间;4)最后操作管理员;5)发布地址;6)获取灰度分流配置地址;7)灰度分流服务器安全性检测地址,中的一个或多个。
除此,由于灰度分流配置下发是按照策略来下发的,即发布的时候是指定某一个灰度策略下的配置进行发布,包括集群、灰度分流规则等。因此,b灰度分流策略是用于为灰度分流配置进行了分组,可以提前根据业务要求把灰度分流配置提前配置好,防止临时设置灰度分流配置容易出问题,实现多套灰度分流配置之间的来回切换。
具体的,灰度分流策略属性包括:1)策略名称;2)描述;3)状态。
除此,c应用名和协议名用来对接入通用灰度发布平台的应用进行区分的。例如应用A接入通用灰度发布平台,A对外提供了3种服务,分别为:1)HTTP服务(通过8080端口发布);2)HTTP服务(通过8081端口发布);3)TCP服务(通过端口8082发布)。若A对外提供的3种服务都需要进行灰度分流,那么需要分别定义成不同的协议名,以便于单独为3种服务实现灵活的分流场景,且设置的灰度分流规则相互不干扰。
进一步的,灰度集群管理为了实现动态变更服务节点,灰度分流前使用虚拟的服务集群来对分流转发集群进行管理的。当请求经过灰度分流服务器后,判断需要转发到的虚拟集群,然后在该虚拟集群下选择某一个服务节点进行转发。
其中,灰度分流集群属性包括:1)集群名称(唯一标识),灰度分流规则计算后的结果;2)应用名;3)协议名;4)状态(允许将某集群进行下载处理);5)描述(方便管理员进行管理)。
除此,灰度规则管理包括灰度分流规则分组和灰度分流规则,具体的,灰度分流规则分组属性包括:1)所属策略;2)应用名;3)协议名;4)默认集群,若配置,当规则分组下所有规则都不命中情况下,会转发到默认集群;5)优先级,灰度分流判断按照优先级从高到底执行规则分组;6)状态;7)描述。
而灰度分流规则包括:1)所属分组;2)规则类型;3)规则详情;4)命中集群;5)优先级;6)状态;7)描述。规则类型包括:1)IP区间匹配规则;2)白名单前项匹配规则;3)白名单尾部匹配规则;4)白名单等值匹配规则;5)白名单正则匹配规则;6)白名单组合匹配规则;7)复合灰度规则匹配规则;8)自定义扩展规则。其中第(8)种类型的规则类型判断由规则插件扩展实现,规则类型格式由用户自定义实现,若灰度分流服务器未配置该规则扩展插件,灰度分流判断可以忽略该规则。
进一步的,灰度分流服务器节点管理包括灰度分流配置发布。其具体包括如下配置:
1)选择发布策略和待发布的灰度分流网关节点,若发布策略状态无效、灰度分流网关节点无效、或网关节点发布地址为空,发布失败。
2)获取所有有效的灰度分流集群配置信息,若集群配置信息为空,发布失败。
3)根据策略获取所有有效的灰度分流规则分组配置信息,若分组配置信息为空,发布失败。
4)按照优先级对规则分组信息进行排序,从高到低排列。
5)按照规则分组顺序遍历所有规则分组,根据规则分组标识获取其所有有效的灰度分流规则配置信息,然后按照灰度分流规则优先级对规则列表进行排序,过滤掉其中无效命中集群的分流规则记录,即集群不存在、集群状态无效或集群服务节点列表为空。
6)过滤掉无效的规则分组信息,无效的条件必须同时满足:
1’、规则分组不存在默认命中集群属性、默认集群不存在、或者默认集群对应状态为无效或者集群对应的服务节点列表为空。
2’、规则分组下无有效的规则列表。
7)将灰度配置信息进行简化,去掉与灰度分流服务器执行无关的额外信息。其中集群无效的属性包括:集群数据库主键(灰度分流计算是通过集群名称来唯一标识的,不需要用到主键)、集群描述;规则分组无效属性包括:规则分组数据库主键、策略名、优先级(灰度分流规则分组已经是按照优先级排序好的,灰度分流服务器计算时按照顺序执行即可)、分组描述;规则无效属性包括:规则数据库主键、所属规则分组(灰度分流配置发布时候,已经对灰度分流规则进行了分组处理,灰度分流服务器计算时不需要该信息)、优先级(灰度分流规则已经是按照优先级排序好的,灰度分流引擎计算时按照顺序执行即可)、描述。
8)灰度分流服务器发布整理后的灰度分流配置。
9)灰度分流服务器接受到灰度分流配置后,先替换运行时的灰度分流配置,然后将灰度分流配置持久化到本地容灾文件,当灰度分流服务器异常宕机重启时,能够继续加载上次发布的灰度分流配置。
进一步的,结合上述灰度分流配置与发布平台子系统的应用场景和功能描述,本实施例对灰度分流服务器的结构以及数据处理流程进行介绍。请参阅图4,图4为本发明实施例提供的一种灰度分流服务器的模块示意图,该灰度分流服务器包括解码器模块、灰度分流特征提取模块、灰度分流计算模块以及灰度分流地址获取模块。
其中,解码器模块至少包括HTTP(S)解码器以及TCP解码器。HTTP(S)解码器能够对灰度请求报文的IP、URI、HEADER、PARAMS、COOKIE以及BODY等参数进行解码,TCP解码器能够对IP、报文头、报文体等参数进行解码,并且,在本实施例中,TCP解码器还包括TCP解码扩展插件,如GROOVY或JAR,用于对解码类型进行扩展。
灰度分流特征提取模块包括等值提取子模块、映射提取子模块、XML提取子模块、JSON提取子模块以及特征提取扩展子模块,分别用于不同的灰度分流特征的提取。
灰度分流计算模块包括灰度分流配置管理子模块以及灰度分流规则子模块,其中,灰度分流配置管理子模块用于进行灰度配置的获取、本地容灾以及一致性校验。灰度分流规则子模块用于对灰度分流规则进行匹配,例如进行IP区间匹配、白名单前项匹配、白名单组合匹配、白名单等值匹配、白名单尾部匹配、白名单正则匹配、复合灰度规则匹配等。除此,本实施例提供的灰度分流规则子模块还包括灰度分流规则扩展子模块,用于对灰度分流规则进行扩展。
灰度分流地址获取模块包括灰度分流计算子模块、下游应用机器探活刷选子模块以及负载均衡子模块。
需要进行说明的是,在本实施例中,灰度分流服务器支持多个灰度代理服务,每个灰度代理服务针对不同协议,通过不同端口在应用启动时进行注册。
而,灰度分流引擎启动前需要先加载分流引擎配置,包括灰度代理服务的定义、自定义扩展灰度分流规则的定义、自定义扩展TCP解码器定义、自定义扩展分流特征提取插件定义、灰度分流引擎提供的管理类API定义。
其中,灰度代理服务定义包括:灰度代理服务名称、启动监听端口、描述、协议、分流特征提取列表、默认命中灰度分流机器列表。
自定义扩展分流规则定义包括:扩展规则类型标识、扩展插件Groovy文件路径、扩展插件JAR文件路径、扩展插件JAR中CLASS文件的全路径名。
自定义扩展TCP解码器定义包括:解码器对应协议类型标识、扩展插件Groovy文件路径、扩展插件JAR文件路径、扩展插件JAR中CLASS文件的全路径名。
自定义扩展特征提取方法插件包括:自定义提取方法标识、扩展插件Groovy文件路径、扩展插件JAR文件路径、扩展插件JAR中CLASS文件的全路径名。其中涉及插件扩展的,Groovy文件路径与JAR文件路径+CLASS全路径名有且只允许出现一个。
灰度分流引擎管理类API包括:发布灰度分流配置地址、获取当前灰度分流引擎有效分流配置地址、当前灰度分流引擎安全性检测地址。
结合图4示出的灰度分流服务器的模块结构,本发明实施例还提供了一种基于该灰度分流服务器的数据处理流程,如图5所示,包括步骤:
S51、获取待处理的灰度分流请求报文;
其中,灰度分流请求报文是由灰度分流配置与发布平台子系统发出。
S52、基于所述灰度分流请求报文,确定出灰度分流特征;
在本实施例中,灰度分流规则是使用灰度分流键来进行配置,并根据灰度分流特征值进行计算,进而判断是否满足灰度分流规则。因此,在本实施例中,灰度分流特征提取配置格式设置为“KEY:灰度分流特征提取方式”。
示意性的本发明实施例提供了一种基于所述灰度分流请求报文,确定出灰度分流特征的具体实现方式,如图6所示,包括步骤:
S61、确定所述灰度分流请求报文的待解码类型;
S62、基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
S63、基于所述解码后数据,确定出目标灰度分流特征。
发明人考虑到灰度代理服务代理的协议类型通常分为HTTP(S)和TCP协议,因此本实施例中,在获取了灰度分流请求报文后,对该报文进行解码,得到解码后数据。
具体的,HTTP(S)解码器是标准化的,解码后可以获取HTTP请求的相关信息。而针对TCP协议,允许通过插件化扩展解码器,解码后包括长度域、报文头、报文体,其中长度域和报文头可以没有,具体和业务报文有关。
其中,TCP解码器有2种扩展方式:1)GROOVY解码器扩展,实现解码器的扩展方法,然后在全局配置中指定该灰度代理服务的解码器GROOVY文件地址(优先放置在灰度代理引擎目录下的/groovy中);2)JAR解码器扩展,通过java实现解码器的扩展方法,然后在全局配置中指定灰度代理服务的解码器JAR的文件地址和解码器类全路径名(优先放置在灰度代理引擎目录下的/jar中)。
即,对上述灰度分流请求报文进行HTTP(S)协议解码后,得到解码后数据,该得到解码后数据包括请求IP(灰度分流特征提取配置时$IP表示请求IP)、请求URI($URI),请求HEADER($HEADER)、请求PARAMS($PARAMS)、请求COOKIE($COOKIE)、请求BODY($BODY)等。
对上述灰度分流请求报文进行TCP协议报文解码后,得到解码后数据,该得到解码后数据包括请求IP($IP)、报文头($HEADER)、报文体($BODY)等。
进一步的,解码后数据为后续灰度分流特征提取提供数据来源,具体的将解码后数据提取出灰度分流特征键以及灰度分流特征值。
具体的,灰度分流特征值提取方式可以通过如下方式实现:
1)等值提取,如请求IP灰度分流特征提取(IP:$IP),表示提取请求IP后,直接将其值作为灰度分流特征键IP的值;
2)映射提取,如提取HEADER中的ADDR(ADDR:$HEADER[ADDR]),表示提取HEADER映射中ADDR的值,作为灰度分流特征键ADDR的值;
3)XML提取,该提取方式通常针对于HTTP协议的BODY、TCP报文头、TCP报文体等,且报文是XML格式。首先将这部分报文进行XML解析,解析后按照映射提取(允许多级映射),例如提取HTTPBODY的XML第一级ADDR(ADDR:XML=>$BODY[ADDR]),若ADDR在HTTPBODY的XML第二级(ADDR:XML=>$BODY[USER][ADDR]);
4)JSON提取,该提取方式一般针对于HTTP协议的BODY、TCP报文头、TCP报文体等,且报文是JSON格式。首先将这部分报文进行JSON解析,解析后按照映射提取(允许多级映射),例如提取TCP报文头中的ADDR(ADDR:JSON=>$HEADER[ADDR]);
5)扩展提取,如果上述4种报文提取方式不能满足业务场景需求,例如灰度分流特征来源于HTTP请求报文中的BODY、TCP报文头或TCP报文体,且格式比较特殊,需要定制化业务开发,本实施例通过插件扩展进行特征提取。其中,插件定义在全局插件配置文件中,对于分流特征提取插件,需要配置全局唯一标识名,例如命名为OPT_FORMAT,插件解析报文后,同样转换为多级映射。例如需要提取HTTP报文体中的ADDRESS,可以配置灰度分流特征提取为“ADDRESS:OPT_FORMAT=>$BODY[ADDRESS]”。
值得一提的是,在本实施例中,上述各分流特征提取方式可以进行叠加。假设HTTP报文中的BODY为一个XML结构,其中XML第一级存在USER为JSON结构,为了提取USER的ADDRESS,配置分流特征提取规则为“ADDRESS:JSON=>(XML=>$BODY)[USER]”。
S53、基于所述灰度分流特征,确定出目标集群。
在灰度分流特征提取后,将所有分流特征值发送到分流计算模块中,计算要转发的目标集群。
其中,灰度分流计算得到的目标地址的情景包括如下几种:
1)命中某灰度分流规则后,最终目标地址来自该灰度分流规则配置的集群;
2)遍历到某规则分组,若其下面所有分流规则都没有命中,但是规则分组配置了默认命中集群,则命中该集群;
3)遍历完所有的规则分组,且所有规则分组默认命中集群无可用有效的通讯连接,则使用灰度代理服务配置的默认命中机器列表。
具体的,基于所述灰度分流特征,确定出目标集群的具体实现方式可以如图7所示,包括步骤:
1)获取所有的灰度分流规则分组列表,然后遍历规则分组列表,读取其所有的灰度分流规则,逐个判断灰度分流规则是否命中,若命中规则且规则对应集群存在有效的通讯连接,则将报文通过该连接进行转发;若遍历完该分组所有的规则,再确认该分组是否配置默认集群,若配置过默认集群且该集群存在有效的通讯连接,则将报文通过该通讯连接进行转发。
2)遍历完所有的灰度分流规则分组后,没有找到合适的通讯连接,那么读取全局配置的默认转发机器列表,若其中存在有效的通讯长连接,那么通过该连接对报文进行转发。
3)若执行完灰度分流计算后,依旧没有将报文转发出去,那么直接返回异常报文。
值得一提的是,在本实施例中,灰度代理引擎要将请求转发给下游服务节点,需要维护灰度代理引擎与服务节点的长连接列表,因此本实施例中,通信采用长连接进行通信的。
具体的,下游服务节点的地址列表状态图如图8所示,各状态之间转换关系如下:
1)应用启动后,加载上次发布灰度分流配置的本地容灾配置文件,所有可能命中规则对应的集群的服务节点机器列表的通信连接进入“待连接状态”。或者灰度分流规则发布后,新加入的服务节点机器列表通信连接也会进入“待连接状态”;
2)“待连接状态”的服务节点连接成功后,通信连接转变为“连接激活状态”;“待连接状态”的服务节点连接失败后,变为“连接重试状态”;
3)“连接重试状态”的节点周期性发起重连,重连成功,则转换为“连接激活状态”,连接失败则状态不变,当重连次数超过设置的最大重试次数时,节点状态变为“连接不主动重连状态”;
4)“连接不主动重连状态”的服务节点间隔15min后发起重连,连接成功,服务节点转为“连接激活状态”,连接失败,则转为“连接重连状态”;
5)“连接激活状态”的服务节点通讯连接失效,如连接被主动断链,心跳检测失败等,“连接激活状态”转为“连接重连状态”;
6)灰度分流配置与发布平台发布新的分流配置规则后,需要连接的机器列表有变化,其中新加入的服务节点进入“待连接状态”;原来存在的服务节点,但是新的分流配置中不存在的服务节点,需要进入“待移除状态”;对于“连接重连状态”和“连接不主动重连状态”的服务节点,进入“待移除状态”后,连接直接被删除即可;对于“连接激活状态”的节点,转为“待移除状态”后,该连接不会接受新的请求,当某节点在5分钟内没有接受到任何请求后,主动断开连接,然后删除该连接;“连接激活状态”节点转为“待移除状态”,不能直接断开连接的原因是由于当前可能正在进行转发服务,断链可能会影响当前正在进行的交易,5分钟后,连接还没有接受到请求,且时间远远大于灰度分流配置的服务超时时间,此时断链是安全的,因此在此时可以关闭连接并移除。
在上述实施例的基础上,发明人还考虑到对于页面类请求,可能一个业务流程涉及多个页面请求,为了让这些请求通过灰度代理引擎后落到同一个服务集群,保证业务的完整性。因此,在本实施例中,将一个交易流程中的多个页面请求的请求报文设置同一个分流特征,具体的,如图9所示,本发明实施例提供了一种使请求能够包含同样的分流特征的具体实现方式,包括步骤:
将入口页面请求携带固定的分流特征参数后,后续页面请求都会携带同样的分流特征进行请求。
综上,本发明实施例提供的数据处理方法,至少具有如下有益效果:
针对缺点1),本发明支持HTTP(S)协议和TCP协议,能够根据不同协议提供不同的解码器扩展,然后针对解码后的报文进行提取。其中HTTP(S)解码器是内置的,TCP解码器需要根据报文域字段编写特定的解码器插件。请求报文解码后,对解码后的报文字段进行提取,包括等值提取、映射提取、XML提取、JSON提取,若当前提取方式不满足业务要求,允许使用插件扩展报文提取方式。
针对缺点2),本发明提供灰度分流规则包括:IP区间段匹配、白名单等值匹配、白名单正则匹配、白名单尾匹配、白名单前项匹配、白名单组合匹配、复合灰度规则匹配等。若当前灰度分流规则不满足业务要求,允许使用插件扩展分流规则。
针对缺点3),灰度分流配置中包括虚拟服务集群配置和灰度代理服务节点配置,虚拟服务集群配置允许动态增添服务节点。发布规则时,会将虚拟服务集群配置信息发布到灰度代理节点,实现灰度集群服务节点的动态化管理。
针对缺点4),对于页面类请求,针对一个完整的业务流程,支持请求携带特殊的请求参数标记,初始请求完成后会携带关键的分流特征标记回来,然后存储在当前浏览器的COOKIE中,后续发送请求会携带COOKIE中的分流特征,灰度代理节点识别到分流特征后,后续请求会定向投递到指定服务集群,保证了业务的完整性。
针对缺点5),灰度分流配置包括灰度策略配置,发布灰度分流规则是指发布某个策略下的灰度分流规则,即灰度分流配置提供配置多个策略,针对每个策略配置不同的分流逻辑和分流场景,按照策略进行配置灰度分流规则后,可以验证分流策略的正确性再决定下发对应策略的灰度分流配置信息,或者提前把所有场景的分流策略准备好,根据当前状态,直接下发某灰度策略,减少了直接发布灰度分流规则出现的人为操作错误的情况。
在上述实施例的基础上,如图10所示,本实施例还提供了一种数据处理装置,包括:
获取模块101,用于获取待处理的灰度分流请求报文;
第一确定模块102,用于基于所述灰度分流请求报文,确定出灰度分流特征;
第二确定模块103,用于基于所述灰度分流特征,确定出目标集群。
可选的,所述第一确定模块包括:
第一确定单元,用于确定所述灰度分流请求报文的待解码类型;
第二确定单元,用于基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
第三确定单元,用于基于所述解码后数据,确定出目标灰度分流特征。
可选的,所述第二确定模块包括:
第四确定单元,用于获取全部灰度分流规则分组列表,判断所述灰度分流规则分组列表中是否包含所述灰度分流特征,如果是,确定与所述灰度分流特征对应的集群为所述目标集群,如果否,获取全局配置的默认转发机器列表,基于所述默认转发机器列表中包含的有效的通讯长连接,对所述灰度分流请求报文进行转发,或,发送异常报文。
可选的,还包括:
第三确定模块,用于确定同一个交易流程中的多个页面请求的请求报文的分流特征为相同的分流特征。
该装置的工作原理请参见上述方法和系统的实施例,在此不重复叙述。
所述数据处理装置包括处理器和存储器,上述获取模块、第一确定模块以及第二确定模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来能够支持多种协议的灰度分流且提高通用性。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据处理方法。
本发明实施例提供了一种设备,如图11所示,设备包括至少一个处理器121、以及与处理器连接的至少一个存储器122、总线123;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的屏幕显示装置方法。本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
获取待处理的灰度分流请求报文;
基于所述灰度分流请求报文,确定出灰度分流特征;
基于所述灰度分流特征,确定出目标集群。
可选的,所述基于所述灰度分流请求报文,确定出灰度分流特征,包括:
确定所述灰度分流请求报文的待解码类型;
基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
基于所述解码后数据,确定出目标灰度分流特征。
可选的,所述基于所述灰度分流特征,确定出目标集群,包括:
获取全部灰度分流规则分组列表,判断所述灰度分流规则分组列表中是否包含所述灰度分流特征,如果是,确定与所述灰度分流特征对应的集群为所述目标集群,如果否,获取全局配置的默认转发机器列表,基于所述默认转发机器列表中包含的有效的通讯长连接,对所述灰度分流请求报文进行转发,或,发送异常报文。
可选的,还包括:
确定同一个交易流程中的多个页面请求的请求报文的分流特征为相同的分流特征。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据处理方法,其特征在于,基于灰度发布系统,所述灰度发布系统包括灰度分流配置与发布平台子系统以及灰度分流服务器,其中,所述灰度分流服务器包括解码器模块、灰度分流特征提取模块、灰度分流计算模块以及灰度分流地址获取模块,所述灰度分流服务器支持多个灰度代理服务,每个所述灰度代理服务针对不同协议,通过不同端口在应用启动时进行注册,其中,在灰度分流引擎启动前加载分流引擎配置;所述分流引擎配置,包括灰度代理服务的定义、自定义扩展灰度分流规则的定义、自定义扩展TCP解码器定义、自定义扩展分流特征提取插件定义、灰度分流引擎提供的管理类API定义,所述数据处理方法包括:
获取待处理的灰度分流请求报文;
基于所述灰度分流请求报文,确定出灰度分流特征;
基于所述灰度分流特征,确定出目标集群。
2.根据权利要求1所述的数据处理方法,其特征在于,所述基于所述灰度分流请求报文,确定出灰度分流特征,包括:
确定所述灰度分流请求报文的待解码类型;
基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
基于所述解码后数据,确定出目标灰度分流特征。
3.根据权利要求2所述的数据处理方法,其特征在于,所述基于所述灰度分流特征,确定出目标集群,包括:
获取全部灰度分流规则分组列表,判断所述灰度分流规则分组列表中是否包含所述灰度分流特征,如果是,确定与所述灰度分流特征对应的集群为所述目标集群,如果否,获取全局配置的默认转发机器列表,基于所述默认转发机器列表中包含的有效的通讯长连接,对所述灰度分流请求报文进行转发,或,发送异常报文。
4.根据权利要求2所述的数据处理方法,其特征在于,还包括:
确定同一个交易流程中的多个页面请求的请求报文的分流特征为相同的分流特征。
5.一种数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取待处理的灰度分流请求报文;所述灰度分流请求报文由灰度发布系统中的灰度分流配置与发布平台子系统发出,其中,所述灰度发布系统包括灰度分流配置与发布平台子系统以及灰度分流服务器,所述灰度分流服务器包括解码器模块、灰度分流特征提取模块、灰度分流计算模块以及灰度分流地址获取模块,所述灰度分流服务器支持多个灰度代理服务,每个所述灰度代理服务针对不同协议,通过不同端口在应用启动时进行注册,其中,在灰度分流引擎启动前加载分流引擎配置;所述分流引擎配置,包括灰度代理服务的定义、自定义扩展灰度分流规则的定义、自定义扩展TCP解码器定义、自定义扩展分流特征提取插件定义、灰度分流引擎提供的管理类API定义;
第一确定模块,用于基于所述灰度分流请求报文,确定出灰度分流特征;
第二确定模块,用于基于所述灰度分流特征,确定出目标集群。
6.根据权利要求5所述的数据处理装置,其特征在于,所述第一确定模块包括:
第一确定单元,用于确定所述灰度分流请求报文的待解码类型;
第二确定单元,用于基于所述待解码类型,对所述灰度分流请求报文进行解码,得到解码后数据;
第三确定单元,用于基于所述解码后数据,确定出目标灰度分流特征。
7.根据权利要求5所述的数据处理装置,其特征在于,所述第二确定模块包括:
第四确定单元,用于获取全部灰度分流规则分组列表,判断所述灰度分流规则分组列表中是否包含所述灰度分流特征,如果是,确定与所述灰度分流特征对应的集群为所述目标集群,如果否,获取全局配置的默认转发机器列表,基于所述默认转发机器列表中包含的有效的通讯长连接,对所述灰度分流请求报文进行转发,或,发送异常报文。
8.根据权利要求5所述的数据处理装置,其特征在于,还包括:
第三确定模块,用于确定同一个交易流程中的多个页面请求的请求报文的分流特征为相同的分流特征。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至4中任意一项所述的数据处理方法。
10.一种电子设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至4中任意一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010223611.8A CN111464520B (zh) | 2020-03-26 | 2020-03-26 | 一种数据处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010223611.8A CN111464520B (zh) | 2020-03-26 | 2020-03-26 | 一种数据处理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111464520A CN111464520A (zh) | 2020-07-28 |
CN111464520B true CN111464520B (zh) | 2022-12-09 |
Family
ID=71680232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010223611.8A Active CN111464520B (zh) | 2020-03-26 | 2020-03-26 | 一种数据处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111464520B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071960A (zh) * | 2019-03-12 | 2019-07-30 | 平安科技(深圳)有限公司 | 管理灰度发布的方法、系统、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235205B2 (en) * | 2012-05-24 | 2019-03-19 | Citrix Systems, Inc. | Remote management of distributed datacenters |
CN109871224A (zh) * | 2019-02-13 | 2019-06-11 | 北京炎黄新星网络科技有限公司 | 一种基于用户标识的灰度发布方法、系统、介质及设备 |
CN110022354A (zh) * | 2019-03-03 | 2019-07-16 | 云南电网有限责任公司信息中心 | 基于http协议的移动应用集成方法、装置、计算机设备及存储介质 |
CN110798502B (zh) * | 2019-09-18 | 2022-06-17 | 平安科技(深圳)有限公司 | 基于微服务框架的灰度发布方法、装置和计算机设备 |
-
2020
- 2020-03-26 CN CN202010223611.8A patent/CN111464520B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110071960A (zh) * | 2019-03-12 | 2019-07-30 | 平安科技(深圳)有限公司 | 管理灰度发布的方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111464520A (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9185179B2 (en) | Re-establishing push notification channels via user identifiers | |
CN109635019B (zh) | 请求处理方法、装置、设备及存储介质 | |
CN101729491B (zh) | 一种增强基于脚本业务的应用可靠性的方法、装置和系统 | |
CN111064626B (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
JP4205323B2 (ja) | 配信システム、配信サーバとその配信方法、配信プログラム | |
CN112738184B (zh) | 一种插件式动态注册分布式微服务网关系统 | |
CN112003721B (zh) | 一种大数据平台管理节点高可用的实现方法及装置 | |
CN113452780B (zh) | 针对客户端的访问请求处理方法、装置、设备及介质 | |
CN113835836B (zh) | 动态发布容器服务的系统、方法、计算机设备及介质 | |
CN113220723A (zh) | 一种流量控制方法、装置、计算机设备及存储介质 | |
CN113315750B (zh) | 一种Kafka消息发布方法、装置及存储介质 | |
CN111600929B (zh) | 传输线路探测方法、路由策略生成方法及代理服务器 | |
CN111464520B (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
WO1999034557A1 (en) | Method and system for software version management in a network management system | |
CN111506641A (zh) | 数据管理方法、数据采集平台、数据管理系统及存储介质 | |
CN115098528B (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 | |
CN114650211B (zh) | 故障修复方法、装置、电子设备和计算机可读存储介质 | |
CN116414628A (zh) | 一种新旧系统切换过程中交易请求的处理方法和装置 | |
CN115250233A (zh) | 一种灰度路由控制方法、灰度路由组件及计算机设备 | |
CN115617417A (zh) | 一种微前端架构子应用管理方法、装置、设备、存储介质 | |
CN111130941B (zh) | 一种网络错误检测方法、装置以及计算机可读存储介质 | |
CN113285997B (zh) | 基于异构系统的数据处理方法、设备、介质及产品 | |
US10749747B1 (en) | Methods for managing network device configurations and devices thereof | |
CN114338525B (zh) | 路由自动聚合方法、装置、电子设备及存储介质 | |
US20230370959A1 (en) | Systems and methods for retrieving ran information |
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 |