数据库的流量染色方法、装置、电子装置和存储介质与流程

未命名 10-08 阅读:66 评论:0
1.本技术涉及数据处理
技术领域
:,特别是涉及数据库的流量染色方法、装置、电子装置和存储介质。
背景技术
::2.流量染色是指根据流量协议设置对应的流量染色规则,对指定的流量进行染色标记,并在整个调用链中携带该标记。通过染色流量可以对特定的流量进行跟踪和路由。流量染色在微服务中有广泛的应用,可用于灰度发布、链路隔离、单元化、数据迁移等涉及数据库的场景中。3.因为数据库的日志不记录请求来源,那么在数据库变更作为触发源的情况下,存在异步数据传输方式会造成请求来源中的流量标记丢失。因此,目前数据库的流量染色方案为是通过新增用于记录流量标的标记表;数据库中所有涉及的数据修改,均需要开启事务以同步标记表,并在事务中插入一条语句记录到新增表中用于记录流量标。这种方式的缺陷在于,需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重。4.针对相关技术中存在需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重,目前还没有提出有效的解决方案。技术实现要素:5.在本实施例中提供了一种数据库的流量染色方法、装置、电子装置和存储介质,以解决相关技术中需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重的问题。6.第一个方面,在本实施例中提供了一种数据库的流量染色方法,包括:7.确认目标数据库的日志处于日志开启;并确认数据传输服务处于对所述目标数据库的变更事件的订阅;8.基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;9.根据所述流量标识和所述第一操作请求生成第二操作请求,将所述第二操作请求传输至所述目标数据库;10.在所述数据传输服务订阅到所述目标数据库基于所述第二操作请求生成的变更后,以从所述目标数据库的日志中获取所述变更事件中的第二操作请求;并基于所述第二操作请求,确定对应的所述流量标识。11.在其中的一些实施例中,所述方法还包括:12.在所述目标数据库中,接收所述第二操作请求,基于所述第二操作请求对所述目标数据库中的目标数据进行变更,得到目标变更数据;13.且基于所述日志的开启状态,所述目标数据库中的日志自动记录变更事件;所述变更事件包括所述目标变更数据和所述第二操作请求。14.在其中的一些实施例中,所述预定义的流量协议包括标识格式信息、类型信息、承载信息以及处理策略。15.在其中的一些实施例中,所述根据所述流量标识和所述第一操作请求生成第二操作请求,包括:16.将所述流量标识拼接到所述第一操作请求的注释中,生成第二操作请求。17.在其中的一些实施例中,所述基于所述预定义的流量协议,确定与发起的第一操作请求对应的流量标识,包括:18.发起第一操作请求;19.获取当前的业务需求;20.基于所述预定义的流量协议,根据所述业务需求生成与所述第一操作请求对应的流量标识。21.在其中的一些实施例中,所述基于所述第二操作请求,确定对应的所述流量标识,包括:22.对所述第二操作请求的注释进行解析,以从所述第二操作请求的注释中解析出所述流量标识。23.在其中的一些实施例中,所述方法,所述方法还包括:24.在所述数据传输服务中,获取所述预定义的流量协议;25.在确定对应的所述流量标识之后,根据所述预定义的流量协议和所述流量标识进行分类处理。26.在其中的一些实施例中,所述根据所述预定义的流量协议和所述流量标识进行分类处理,包括:27.根据所述预定义的流量协议和所述流量标识中的环境来源信息,将所述目标数据库中变更事件路由返回至原环境,以实现环境隔离。28.在其中的一些实施例中,所述根据所述预定义的流量协议和所述流量标识进行分类处理,包括:29.根据所述预定义的流量协议和所述流量标识中的屏蔽修改信息,对所述目标数据库中变更事件进行屏蔽,以实现屏蔽特定修改。30.第二个方面,在本实施例中提供了一种数据库的流量染色装置,包括:状态确认模块、确定模块、生成模块以及处理模块;31.所述状态确认模块,用于确认目标数据库处于变更发布状态和日志开启状态;并确认数据传输服务处于对所述目标数据库的变更订阅状态;32.所述确定模块,用于基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;33.所述生成模块,用于根据所述流量标识和所述第一操作请求生成第二操作请求,将所述第二操作请求传输至所述目标数据库;34.所述处理模块,用于在所述数据传输服务订阅到所述目标数据库基于所述第二操作请求生成的变更后,以从所述目标数据库的日志中获取所述变更事件中的第二操作请求;并基于所述第二操作请求,确定对应的所述流量标识。35.第三个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的数据库的流量染色方法。36.第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的数据库的流量染色方法。37.与相关技术相比,在本实施例中提供的数据库的流量染色方法、装置、电子装置和存储介质,通过确认目标数据库的日志处于日志开启;并确认数据传输服务处于对目标数据库的变更事件的订阅;基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;根据流量标识和第一操作请求生成第二操作请求,将第二操作请求传输至目标数据库;在数据传输服务订阅到目标数据库基于第二操作请求生成的变更后,以从目标数据库的日志中获取变更事件中的第二操作请求;并基于第二操作请求,确定对应的流量标识,解决了相关技术中需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重的问题,在支持数据库作为变更源的场景下,利用第二操作请求对应的日志来透传第二操作请求中的流量标识,从而能够保留流量标识。38.本技术的一个或多个实施例的细节在以下附图和描述中提出,以使本技术的其他特征、目的和优点更加简明易懂。附图说明39.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:40.图1是本技术一实施例提供的数据库的流量染色系统的结构框图;41.图2是本技术一实施例提供的数据库的流量染色方法的流程图;42.图3是图2中步骤s220的流程图;43.图4是本技术一实施例提供的数据库的流量染色方法应用在环境隔离中的流程示意图;44.图5是本技术一实施例提供的数据库的流量染色方法应用在屏蔽特定修改中的流程示意图;45.图6是本技术一实施例提供的数据库的流量染色装置的结构框图。46.图中:10、客户端;20、数据库;30、数据传输服务;210、状态确认模块;220、确定模块;230、生成模块;240、处理模块。具体实施方式47.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。48.除另作定义外,本技术所涉及的技术术语或者科学术语应具有本技术所属
技术领域
:具备一般技能的人所理解的一般含义。在本技术中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本技术中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本技术中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本技术中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本技术中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。49.在本实施例中提供的方法实施例可以适用于数据库的流量染色系统。具体的如图1所示:该系统包括客户端10、数据库20以及数据传输服务30;客户端10,分别与数据库20和数据传输服务30连接,数据传输服务30将自己模拟成从库,以订阅数据库的方式与数据库20连接。50.其中,在客户端10中可以执行确认目标数据库20的日志处于日志开启;并确认数据传输服务30处于对目标数据库的变更事件的订阅;基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;根据流量标识和第一操作请求生成第二操作请求,将第二操作请求传输至目标数据库,等步骤。具体的,客户端10:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(pcs)设备、个人导航设备、个人数字助理(pda)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。51.其中,目标数据库指的是当前目标的数据库20。在目标数据库中可以执行接收第二操作请求,基于第二操作请求对目标数据库中的目标数据进行变更,得到目标变更数据;且基于日志的开启状态,目标数据库中的日志自动记录变更事件;变更事件包括目标变更数据和第二操作请求,等步骤。具体的,数据库20是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库20按类型分为关系数据库和非关系数据库。其中,关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。常见的关系型数据库有mysql,sqlserver等。非关系数据库指的是分布式的、非关系型的、不保证遵循acid原则的数据存储系统。如mongodb、redis、memcache等。52.其中,数据传输服务30(datatransmissionservice,dts):可以执行在数据传输服务30订阅到目标数据库基于第二操作请求生成的变更后,以从目标数据库的日志中获取变更事件中的第二操作请求;并基于第二操作请求,确定对应的流量标识,等步骤。具体的,数据传输服务30是提供数据迁移、数据同步、数据订阅于一体的数据库数据传输服务30。数据传输服务30包括两个核心组件:数据库订阅组件和消息队列(messagequeue,mq)。其中,数据库订阅组件一般将自己模拟成从库,订阅目标数据库发生的变更事件,然后内部处理后发送到消息队列供业务间接的订阅数据库的变更。其中,消息队列提供了异步的通信能力,具备保证消息不丢失,失败重传的能力。53.本实施例中提供的方法可以在客户端10、数据传输服务30;或,客户端10、数据传输服务30以及数据库20的终端、计算机或者类似的运算装置中执行。比如在终端上运行,终端可以包括一个或多个处理器和用于存储数据的存储器,其中,处理器可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置。上述终端还可以包括用于通信功能的传输设备以及输入输出设备。终端还可以有不同配置,比如具有多个处理器等。54.存储器可用于存储计算机程序,例如,应用软件的软件程序以及模块,如在本实施例中的数据库的流量染色方法对应的计算机程序,处理器通过运行存储在存储器内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。55.传输设备用于经由一个网络接收或者发送数据。上述的网络包括终端的通信供应商提供的无线网络。在一个实例中,传输设备包括一个网络适配器(networkinterfacecontroller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备可以为射频(radiofrequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。56.目前,在数据库变更作为触发源的一般流程为:在数据库中,基于业务的请求变更目标数据;执行请求以修改目标数据,日志记录对应的变更事件(事务和每个事务对数据库所做的修改);数据传输服务30(dts)的数据库订阅组件主动监听该数据库对应的日志变更(对应到mysql数据库是监听日志binlog),并将该变更事件处理后投递到消息队列(mq);下游业务通过消费mq的消息完成业务场景。数据库变更作为触发源的优势包括:保证变更事件事务性、业务异步化、业务解耦等,但由于数据库的日志,只是记录事务(包括请求)和每个事务对数据库所做的修改,而不记录请求来源;因此这种异步方式会造成流量标丢失。57.那么通过新增用于记录流量标的标记表的流量标的方式来实现流量染色,就要求数据库中所有涉及的数据修改,均需要开启事务以同步标记表;并在事务中插入一条语句记录到新增表中用于记录流量标。这种方式的缺陷在于,需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重。58.基于上述原因,本技术的目的在于,在支持数据库作为变更源的场景下,利用第二操作请求对应的日志来透传第二操作请求中的流量标识,从而能够保留流量标识;以达到在不需要业务入侵的前提下,利用第二操作请求实现流量染色,防止性能严重损耗发生的目的。59.下面对本技术的整体方案进行说明:60.在本实施例中提供了一种数据库的流量染色方法,图2是本实施例的数据库的流量染色方法的流程图,如图2所示,该流程包括如下步骤:61.步骤s210,确认目标数据库的日志处于日志开启;并确认数据传输服务处于对目标数据库的变更事件的订阅;62.具体的,数据库本身都具有日志,在日志开启后,会记录变更事件。变更事件指所有事务(包括请求)以及每个事务对数据库所做的修改。比如,可以将日志的模式设置为row模式,以使日志开启;对于不同的数据库,日志开启的设置方式存在差别,在此不一一举例。63.数据传输服务处于对目标数据库的变更事件的订阅,指的是数据传输服务中的数据库订阅组件将自己模拟成从库,因此会主动监听目标数据库发生的变更事件;即订阅目标数据库发生的变更事件。如果上述步骤在客户端中执行,那么可以在客户端中发起业务请求,根据该业务请求的返回消息以确认数据传输服务处于对目标数据库的变更事件的订阅。当然,对于不同的数据库也可以通过其他方式来确认数据传输服务处于对目标数据库的变更事件的订阅。64.步骤s220,基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;65.具体的,流量协议可以是在客户端中预先定义。流量协议包括但不限于标识格式信息、类型信息、承载信息以及处理策略。标识格式信息为按类型信息、承载信息、处理策略的顺序排列,以/*开始,字符*/结束。比如:标识格式信息为/*类型信息:承载信息:处理策略*/。其中,类型信息可以为aa_tag;可以定义多种类型,比如定义aa_ctl为控制类型;定义aa_tag为来源环境。其中,aa也可以用其他字符来替代。其中,承载信息可以为context、pre等,具有csv/json/base64等格式。其中,处理策略为类型信息对应的处理规范,比如:例如aa_tag类型用于定义流量来源环境,用于流量隔离场景;aa_ctl用于定义控制类型,用于控制是否忽略数据库变更等。在其他实施例中,预定义的流量协议可以不包含处理策略,也就是说处理策略可以单出出来生成文件来使用。比如:在客户端中,通过传输协议将流量协议和处理策略一起传输至数据传输服务。66.下面举例说明不同格式的具体流量协议(除处理策略)。67.json格式:/*aa_tag:{“env”:”pre”,”user”:”xxx”,”app”:”yyy”}*/;68.csv格式:/*aa_tag:pre,xxx,yyy*/;格式头为env,user,app,等价于上述json格式。69.base64格式:/*aa_tag:chjllhh4ecx5exk=*/;base64格式一般用于定义复杂的结构,或二进制数据。70.那么基于上述预先定义的流量协议,结合当前的业务需求,即可确定与发起的第一操作请求对应的流量标识。比如:当前第一操作请求的业务需求是测试环境的流量染色;流量标识为:/*aa_tag:pre*/。其中,aa_tag用于标识流量环境,pre表示当前流量来源为测试环境。71.步骤s230,根据流量标识和第一操作请求生成第二操作请求,将第二操作请求传输至目标数据库;72.具体的,第一操作请求指的是客户端主动发起的针对目标数据库中目标数据具体的操作请求。比如:变更、删除、隔离等。在第一操作请求的基础上,拼接或组装上流量标识,以生成第二操作请求;从而使第二操作请求中包含了流量标识。而本技术是将第二操作请求传输至目标数据库,以使目标服务器基于第二操作请求进行后续处理。73.步骤s240,在数据传输服务订阅到目标数据库基于第二操作请求生成的变更后,以从目标数据库的日志中获取变更事件中的第二操作请求;并基于第二操作请求,确定对应的流量标识。74.具体的,由于数据传输服务是作为目标数据库的从库,其能监听目标数据库的日志的变更。因此,能够订阅到目标数据库基于第二操作请求生成的变更,得到目标数据库的日志的变更事件;再对变更事件进行解析以获取到变更事件中的第二操作请求;最后从第二操作请求中解析出对应的流量标识;从而实现在不需要业务入侵的前提下,利用第二操作请求实现流量染色。也可以说是,在支持数据库作为变更源的场景下,利用第二操作请求对应的日志来透传第二操作请求中的流量标识,从而能够保留流量标识。75.通过上述步骤,将包括流量标识的第二操作请求作为目标数据库中变更的请求对象;利用日志开启后会自动记录变更事件,结合数据传输服务的订阅服务;在支持数据库作为变更源的场景下,利用第二操作请求对应的日志来透传第二操作请求中的流量标识,从而能够保留流量标识;解决了相关技术中需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重的问题。76.在其中的一些实施例中,上述数据库的流量染色方法还包括以下步骤:77.在目标数据库中,接收第二操作请求,基于第二操作请求对目标数据库中的目标数据进行变更,得到目标变更数据;78.且基于日志的开启状态,目标数据库中的日志自动记录变更事件;变更事件包括目标变更数据和第二操作请求。79.具体的,目标数据库接收第二操作请求,基于第二操作请求对目标数据库中的目标数据进行变更,比如:第二操作请求是将目标数据1变更为2;那么目标变更数据即为2。此时,基于日志的开启状态,日志自动记录该变更事件,包括记录第二操作请求和目标变更数据。那么对于数据库来说,是基于第二操作请求,按正常流程执行,不需要增加额外的事务,保障数据库的正常运行。80.在其中的一些实施例中,步骤s230中的根据流量标识和第一操作请求生成第二操作请求,包括以下步骤:81.将流量标识拼接到第一操作请求的注释中,生成第二操作请求。82.具体的,注释就是对代码的解释和说明,其一般跟随在代码后。每个操作请求均具有对应的注释。比如:对第一操作请求deletefromtbwhereid=1;流量标识为/*aa_tag:pre*/;拼接流量标识后的第二操作请求为/*aa_tag:pre*/deletefromtbwhereid=1。在本实施例中,将流量标识拼接到第一操作请求的注释中,以使生成的第二操作请求在包含流量标识的前提下,也能够不影响后续的处理;而且第二操作请求的注释会随着第二操作请求一起传递。只要服务器具备注释功能,均可以采用上述步骤,能够提高传输过程中的稳定性和传输效率。83.当然,如果流量标识是拼接在注释,那么在数据传输服务中确定第二操作请求中对应的流量标识时,可以直接对第二操作请求的注释进行解析,以从第二操作请求的注释中解析出流量标识,从而提高处理效率;而且能够保障解析结果的准确性。84.在其中的一些实施例中,如图3所示,步骤s220,包括以下步骤:85.步骤s221,发起第一操作请求;86.步骤s222,获取当前的业务需求;87.步骤s223,基于预定义的流量协议,根据业务需求生成与第一操作请求对应的流量标识。88.具体的,在客户端中会正常发起第一操作请求;当前的业务需求指的是与第一操作请求匹配的业务需求,该业务需求包括但不限于流量隔离、屏蔽特定修改、流量来源标识等。业务需求,可以是有用户来定义,也可以由事先设定的业务策略来定义。那么基于预定义的流量协议,再结合当前的业务需求,即可生产该第一操作请求对应的流量标识。一般来说,在流量染色的前提下,每个第一操作请求均会有对应的一个流量标识。89.在其中的一些实施例中,上述数据库的流量染色方法,还包括以下步骤:90.在数据传输服务中,获取预定义的流量协议;91.在确定对应的流量标识之后,根据预定义的流量协议和流量标识进行分类处理。92.具体的,数据传输服务可以通过传输协议或者软件开发工具包(softwaredevelopmentkit,sdk)等手段来获取客户端中的预定义的流量协议。那么在确定对应的流量标识之后,即可根据预定义的流量协议和流量表示来进行具体的分类处理,从而可以是本技术适用灰度发布、链路隔离、单元化、数据迁移等应用场景中。93.下面举例说明针对不同的分类处理,可以达到将数据库的流量染色方法应用在不同场景的目的。94.针对数据库的流量染色在环境隔离中的应用:如图4所示,包括测试环境test-env和标准环境std-env;测试环境test-env包括第一客户端server’和第一听众listener’;标准环境std-env包括第二客户端server、数据库mysql、数据传输服务dts以及第二听众listener。95.流量染色方法的步骤为:96.使用命令showvariableslike'binlog_rows_query_log_events'查看,返回on表示日志已开启,否则可通过setglobalbinlog_rows_query_log_events=1命令开启;从而确认数据库mysql的日志处于日志开启。并确认数据传输服务dts处于对数据库mysql的变更事件的订阅;97.预定义的流量协议,并定义aa_tag用于标识流量环境,pre表示当前流量来源为测试环境。98.基于该预定义的流量协议,确定与发起的第一操作请求(sql语句)对应的流量标识(/*aa_tag:pre*/);确定的流量协议为/*aa_tag:pre*/;99.通过mybatisplugin的interceptor功能拦截第一操作请求(sql语句),在intercept方法中对第一操作请求(sql语句)的注释中拼接流量标识;将第二操作请求传输至目标数据库;100.第一操作请求(sql语句):updatetable_namesetval='yyy'whereid=1;101.第二操作请求:/*aa_tag:pre*/updatetable_namesetval='yyy'whereid=1;102.数据传输服务dts订阅数据库mysql的变更事件binlog,从变更事件binlog中解析出第二操作请求,再从第二操作请求中确定对应的流量标识/*aa_tag:pre*/。比如:从第二操作请求解析到第一操作请求(sql语句)/*aa_tag:pre*/updatetable_namesetval='yyy'whereid=1,再提取流量标识/*aa_tag:pre*/,其中类型为aa_tag,内容为pre表示流量来自测试环境。103.基于上述应用,根据预定义的流量协议和流量标识进行分类处理,包括以下步骤:104.根据预定义的流量协议和流量标识中的环境来源信息,将目标数据库中变更事件路由返回至原环境,以实现环境隔离。105.具体的,由于pre表示流量来自测试环境,也就是说流量标识中具有环境来源信息,能够判断出目标数据的变更操作来自测试环境;比如第一操作请求来源测试环境test-env;由于流量标识中具有环境来源信息,数据传输服务dts根据预定义的流量协议和流量标识中的环境来源信息将变更事件路由回原环境(第一听众listener’),以此实现了环境隔离功能。在未实现数据库的流量染色时,通过数据传输服务dts订阅的变更事件无法区分触发源是测试环境还是标准环境。而且订阅能保证事务性,能订阅到变更的数据本身,达成流量的连续性。106.针对数据库的流量染色在屏蔽特定修改中的应用:如图5所示,包括第三客户端server、第四客户端client、数据库mysql、数据传输服务dts以及第三听众listener。107.流量染色方法的步骤为与针对数据库的流量染色在环境隔离中的应用的流程类似,区别在于:在该应用中,流量标识为:(/*aa_ctl:ignore*/);流量协议为aa_ctl用于标识控制类型,ignore表示忽视变更。108.第一操作请求(sql语句):updatetable_namesetval='yyy'whereid=1;109.第二操作请求:(/*aa_ctl:ignore*/updatetable_namesetval='yyy'whereid=1;110.数据传输服务dts订阅数据库mysql的变更事件binlog,从变更事件binlog中解析出第二操作请求,再从第二操作请求中确定对应的流量标识/*aa_ctl:ignore*/。比如:从第二操作请求解析到第一操作请求(sql语句)/*aa_ctl:ignore*/updatetable_namesetval='yyy'whereid=1,再提取流量标识/*aa_ctl:ignore*/,其中,类型为aa_ctl表示控制,内容为ignore表示忽视变更。111.基于上述应用,根据预定义的流量协议和流量标识进行分类处理,包括以下步骤:112.根据预定义的流量协议和流量标识中的屏蔽修改信息,对目标数据库中变更事件进行屏蔽,以实现屏蔽特定修改。113.具体的,数据库订阅组件订阅目标数据库发生的变更事件,由于流量标识为/*aa_ctl:ignore*/,其中,类型为aa_ctl表示控制,内容为ignore表示忽视变更。因此不将该变更事件发送给消息队列,从而对该变更事件进行屏蔽,以不被第三听众listener感知到变更。比如:人工修复数据的过程,能够避免用于修复造成的副作用。114.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。115.在本实施例中还提供了一种数据库的流量染色装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。116.图6是本实施例的数据库的流量染色装置的结构框图,如图6所示,该装置包括:状态确认模块210、确定模块220、生成模块230以及处理模块240;117.状态确认模块210,用于确认目标数据库处于变更发布状态和日志开启状态;并确认数据传输服务处于对目标数据库的变更订阅状态;118.确定模块220,用于基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;119.生成模块230,用于根据流量标识和第一操作请求生成第二操作请求,将第二操作请求传输至目标数据库;120.处理模块240,用于在数据传输服务订阅到目标数据库基于第二操作请求生成的变更后,以从目标数据库的日志中获取变更事件中的第二操作请求;并基于第二操作请求,确定对应的流量标识。121.通过上述装置,将包括流量标识的第二操作请求作为目标数据库中变更的请求对象;利用日志开启后会自动记录变更事件,结合数据传输服务的订阅服务;在支持数据库作为变更源的场景下,利用第二操作请求对应的日志来透传第二操作请求中的流量标识,从而能够保留流量标识;解决了相关技术中需要增加显示事务,实现复杂程度高,而且需要业务入侵,导致性能损耗严重的问题。122.在其中的一些实施例中,在图6的基础上,还包括变更处理模块;123.变更处理模块,用于在目标数据库中,接收第二操作请求,基于第二操作请求对目标数据库中的目标数据进行变更,得到目标变更数据;124.且基于日志的开启状态,目标数据库中的日志自动记录变更事件;变更事件包括目标变更数据和第二操作请求。125.在其中的一些实施例中,预定义的流量协议包括标识格式信息、类型信息、承载信息以及处理策略。126.在其中的一些实施例中,生成模块230,还用于将流量标识拼接到第一操作请求的注释中,生成第二操作请求。127.在其中的一些实施例中,确定模块220,还用于发起第一操作请求;128.获取当前的业务需求;129.基于预定义的流量协议,根据业务需求生成与第一操作请求对应的流量标识。130.在其中的一些实施例中,处理模块240,还用于对第二操作请求的注释进行解析,以从第二操作请求的注释中解析出流量标识。131.在其中的一些实施例中,在图6的基础上,还包括分类处理模块;132.分类处理模块,用于在数据传输服务中,获取预定义的流量协议;133.在确定对应的流量标识之后,根据预定义的流量协议和流量标识进行分类处理。134.在其中的一些实施例中,分类处理模块,还用于根据预定义的流量协议和流量标识中的环境来源信息,将目标数据库中变更事件路由返回至原环境,以实现环境隔离。135.在其中的一些实施例中,分类处理模块,还用于根据预定义的流量协议和流量标识中的屏蔽修改信息,对目标数据库中变更事件进行屏蔽,以实现屏蔽特定修改。136.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。137.在本实施例中还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。138.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。139.可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:140.s1,确认目标数据库的日志处于日志开启;并确认数据传输服务处于对目标数据库的变更事件的订阅;141.s2,基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;142.s3,根据流量标识和第一操作请求生成第二操作请求,将第二操作请求传输至目标数据库;143.s4,在数据传输服务订阅到目标数据库基于第二操作请求生成的变更后,以从目标数据库的日志中获取变更事件中的第二操作请求;并基于第二操作请求,确定对应的流量标识。144.需要说明的是,在本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,在本实施例中不再赘述。145.此外,结合上述实施例中提供的数据库的流量染色方法,在本实施例中还可以提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种数据库的流量染色方法。146.应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本技术提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本技术保护范围。147.显然,附图只是本技术的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本技术适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本技术披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本技术公开的内容不足。[0148]“实施例”一词在本技术中指的是结合实施例描述的具体特征、结构或特性可以包括在本技术的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本技术中描述的实施例在没有冲突的情况下,可以与其它实施例结合。[0149]以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。当前第1页12当前第1页12
技术特征:
1.一种数据库的流量染色方法,其特征在于,包括:确认目标数据库的日志处于日志开启;并确认数据传输服务处于对所述目标数据库的变更事件的订阅;基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;根据所述流量标识和所述第一操作请求生成第二操作请求,将所述第二操作请求传输至所述目标数据库;在所述数据传输服务订阅到所述目标数据库基于所述第二操作请求生成的变更后,以从所述目标数据库的日志中获取所述变更事件中的第二操作请求;并基于所述第二操作请求,确定对应的所述流量标识。2.根据权利要求1所述的数据库的流量染色方法,其特征在于,所述方法还包括:在所述目标数据库中,接收所述第二操作请求,基于所述第二操作请求对所述目标数据库中的目标数据进行变更,得到目标变更数据;且基于所述日志的开启状态,所述目标数据库中的日志自动记录变更事件;所述变更事件包括所述目标变更数据和所述第二操作请求。3.根据权利要求1所述的数据库的流量染色方法,其特征在于,所述预定义的流量协议包括标识格式信息、类型信息、承载信息以及处理策略。4.根据权利要求1至3任一项所述的数据库的流量染色方法,其特征在于,所述根据所述流量标识和所述第一操作请求生成第二操作请求,包括:将所述流量标识拼接到所述第一操作请求的注释中,生成第二操作请求。5.根据权利要求4所述的数据库的流量染色方法,其特征在于,所述基于所述预定义的流量协议,确定与发起的第一操作请求对应的流量标识,包括:发起第一操作请求;获取当前的业务需求;基于所述预定义的流量协议,根据所述业务需求生成与所述第一操作请求对应的流量标识。6.根据权利要求4所述的数据库的流量染色方法,其特征在于,所述基于所述第二操作请求,确定对应的所述流量标识,包括:对所述第二操作请求的注释进行解析,以从所述第二操作请求的注释中解析出所述流量标识。7.根据权利要求1至3任一项所述的数据库的流量染色方法,其特征在于,所述方法,所述方法还包括:在所述数据传输服务中,获取所述预定义的流量协议;在确定对应的所述流量标识之后,根据所述预定义的流量协议和所述流量标识进行分类处理。8.根据权利要求7所述的数据库的流量染色方法,其特征在于,所述根据所述预定义的流量协议和所述流量标识进行分类处理,包括:根据所述预定义的流量协议和所述流量标识中的环境来源信息,将所述目标数据库中变更事件路由返回至原环境,以实现环境隔离。9.根据权利要求7所述的数据库的流量染色方法,其特征在于,所述根据所述预定义的
流量协议和所述流量标识进行分类处理,包括:根据所述预定义的流量协议和所述流量标识中的屏蔽修改信息,对所述目标数据库中变更事件进行屏蔽,以实现屏蔽特定修改。10.一种数据库的流量染色装置,其特征在于,包括:状态确认模块、确定模块、生成模块以及处理模块;所述状态确认模块,用于确认目标数据库处于变更发布状态和日志开启状态;并确认数据传输服务处于对所述目标数据库的变更订阅状态;所述确定模块,用于基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;所述生成模块,用于根据所述流量标识和所述第一操作请求生成第二操作请求,将所述第二操作请求传输至所述目标数据库;所述处理模块,用于在所述数据传输服务订阅到所述目标数据库基于所述第二操作请求生成的变更后,以从所述目标数据库的日志中获取所述变更事件中的第二操作请求;并基于所述第二操作请求,确定对应的所述流量标识。11.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至9中任一项所述的数据库的流量染色方法的步骤。12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的数据库的流量染色方法的步骤。

技术总结
本申请涉及一种数据库的流量染色方法、装置、电子装置和存储介质,其中,该方法包括:确认目标数据库的日志处于日志开启;并确认数据传输服务处于对目标数据库的变更事件的订阅;基于预定义的流量协议,确定与发起的第一操作请求对应的流量标识;将生成的第二操作请求传输至目标数据库;在数据传输服务订阅到目标数据库基于第二操作请求生成的变更后,以从目标数据库的日志中获取变更事件中的第二操作请求;并确定对应的流量标识。通过本申请,解决了需要增加显示事务,实现复杂程度高,性能损耗严重的问题;在支持数据库作为变更源的场景下,利用第二操作请求对应的日志来透传第二操作请求中的流量标识,从而能够保留流量标识。从而能够保留流量标识。从而能够保留流量标识。


技术研发人员:项鹏远
受保护的技术使用者:杭州有赞科技有限公司
技术研发日:2022.03.25
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐