CN116226905A - 分布式数据库限流方法、限流装置、***及电子设备 - Google Patents
分布式数据库限流方法、限流装置、***及电子设备 Download PDFInfo
- Publication number
- CN116226905A CN116226905A CN202211658927.5A CN202211658927A CN116226905A CN 116226905 A CN116226905 A CN 116226905A CN 202211658927 A CN202211658927 A CN 202211658927A CN 116226905 A CN116226905 A CN 116226905A
- Authority
- CN
- China
- Prior art keywords
- sql
- flow control
- database
- current limiting
- sql statement
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供了一种分布式数据库限流方法、限流装置、***及电子设备,该方法用于数据库中间件中,包括:获取SQL流量管控配置信息;确定SQL流量管控配置信息中的原始SQL语句的限流模式;基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句;将对照SQL语句作为流量管控条件更新至数据库中间件的内存;基于流量管控条件,对客户端的SQL请求进行流量管控,可以直接在分布式数据库的数据库中间件中添加SQL流量管控功能,即可以直接通过内网数据库实现SQL的流量管控,无需采用外网数据库管理服务,不存在安全隐患。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种分布式数据库限流方法、限流装置、***及电子设备。
背景技术
随着分布式数据库的广泛应用,用户对分布式数据库也提出了更高的性能要求。为应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化等问题,需要对分布式数据库增加限流功能来限制造成上述问题的SQL执行,从而保证实例的持续稳定运行。
目前的开源产品中没有提供独立的SQL限流工具,若采用公有云产品,由于公有云产品为外网数据库管理服务,若要使用其对内网数据库进行SQL流量管控,则需要使得外网数据库管理服务能够获取内网数据库实例的SQL,但是,该流量管控方法存在有安全隐患。
发明内容
本申请实施例提供一种分布式数据库限流方法、限流装置、***及电子设备,以降低分布式数据库限流功能的安全隐患。
本申请实施例的一方面提供一种分布式数据库限流方法,用于数据库中间件中,数据库中间件经由代理服务器连接至数据库服务端,代理服务器用于对数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;方法包括:获取SQL流量管控配置信息;基于SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句;将对照SQL语句作为流量管控条件更新至数据库中间件的内存;基于流量管控条件,对客户端的SQL请求进行流量管控。
在一些实施例中,基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句,包括:若限流模式为SQL模版限流模式,对原始SQL语句进行指纹化处理,以生成对照SQL语句;若限流模式为SQL文本限流模式,将原始SQL语句作为对照SQL语句。
在一些实施例中,在将对照SQL语句作为流量管控条件更新至数据库中间件的内存之前,方法还包括:对对照SQL语句进行格式化处理,以更新对照SQL语句。
在一些实施例中,SQL流量管控配置信息包括QPS限制信息,将对照SQL语句作为流量管控条件更新至数据库中间件的内存,包括:将对照SQL语句以及QPS限制信息作为流量管控条件更新至数据库中间件的内存。
在一些实施例中,基于流量管控条件,对客户端的SQL请求进行流量管控,包括:获取客户端的SQL请求;解析SQL请求,以生成解析SQL语句;基于解析SQL语句和限流模式,确定与限流模式相对应的目标SQL语句;若目标SQL语句与对照SQL语句不匹配,则对SQL请求进行放行;若目标SQL语句与对照SQL语句相匹配且当前目标SQL语句的执行量小于QPS限制信息,则对SQL请求进行放行;若目标SQL与对照SQL语句相匹配且当前目标SQL语句的执行量大于或等于QPS限制信息,则向客户端发送错误信息。
在一些实施例中,基于解析SQL请求和限流模式,确定与限流模式相对应的目标SQL语句,包括:若限流模式为SQL模版限流模式,对解析SQL语句进行指纹化处理,以生成目标SQL语句;若限流模式为SQL文本限流模式,将解析SQL语句作为目标SQL语句。
在一些实施例中,在基于解析SQL语句和限流模式,确定与限流模式相对应的目标SQL语句之后,方法还包括:对目标SQL语句进行格式化处理,以更新目标SQL语句。
本申请实施例的另一方面提供一种分布式数据库限流装置,用于数据库中间件中,数据库中间件经由代理服务器连接至数据库服务端,代理服务器用于对数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;装置包括:获取单元,用于获取SQL流量管控配置信息;确定单元,用于基于SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句;更新单元,用于将对照SQL语句作为流量管控条件更新至数据库中间件的内存;处理单元,用于基于流量管控条件,对客户端的SQL请求进行流量管控。
本申请实施例的另一方面提供一种分布式数据库***,包括:数据库中间件、代理服务器、数据库服务端以及多个数据库分片;数据库服务端用于获取由数据库管理员下发的SQL流量控制请求;代理服务器用于接受SQL流量控制请求,并对SQL流量控制请求进行转码,以生成SQL流量管控配置信息;数据库中间件用于执行如上任一项所述的方法,且数据库中间件还用于将客户端的SQL请求发送至多个数据库分片进行执行,并将多个数据库分片返回的结果转发至客户端。
本申请实施例的另一方面提供一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行如上任一项所述的方法。
本申请实施例的另一方面提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上任一项所述的方法。
本申请实施例的另一方面提供一种计算机程序产品,包括计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一实施例的方法。
本申请实施例提供的分布式数据库限流方法、限流装置、***及电子设备,通过在数据库中间件中应用分布式数据库限流方法,数据库中间件经由代理服务器连接至数据库服务端,代理服务器用于对数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;方法包括:获取SQL流量管控配置信息;确定SQL流量管控配置信息中的原始SQL语句的限流模式;基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句;将对照SQL语句作为流量管控条件更新至数据库中间件的内存;基于流量管控条件,对客户端的SQL请求进行流量管控,可以直接在分布式数据库的数据库中间件中添加SQL流量管控功能,即可以直接通过内网数据库实现SQL的流量管控,无需采用外网数据库管理服务,不存在安全隐患。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为应用本申请实施例的分布式数据库***的结构示意图;
图2为本申请实施例提供的分布式数据库限流方法的流程图;
图3为本申请实施例提供的分布式数据库限流方法的流程框图;
图4为图3中步骤S140的流程框图;
图5为本申请实施例提供的分布式数据库限流装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请中的专业名词进行解释。
结构化查询语言(Structured Query Language,SQL):是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。
数据库管理员(Database Administrator,DBA):是从事管理和维护数据库管理***的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
逻辑子表:分布式数据库集群存在于单个分片上的物理子表,子表表名由三段构成,第一段为对应的逻辑总表表名,第二段为分片id,第三段为子表id。
逻辑总表:分布式数据库集群对于存在于多个分片上表结构相同的逻辑子表会为用户构造一个统一的数据视图,用户可以像使用普通物理表一样对逻辑总表进行操作。
随着分布式数据库的广泛应用,用户对分布式数据库也提出了更高的性能要求。为应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化等问题,需要对分布式数据库增加限流功能来限制造成上述问题的SQL执行,从而保证实例的持续稳定运行。
然而,目前的开源产品中没有提供独立的SQL限流工具可供使用。而对于应用公有云产品而言,可能存在以下几个问题:
一、需要购买的包含限流功能的外网数据库管理服务能够获取内网的数据库实例的SQL,存在一定的安全隐患。
二、限流功能是与数据库其他管理服务打包在一起售卖,并且按照数据库实例数收费,购买及替换数据库服务的成本较高。
三、会在客户端与数据库之间引入了新的网络交互,降低了数据库单位时间内的吞吐量。
四、对于自研的分布式数据库架构,例如通过数据库中间件实现逻辑SQL的路由转发及分片查询结果汇总能力,对于该类分布式数据库,如果使用公有云产品将需要起进行定制化开发,成本高。
为了解决上述问题中的至少一个,本申请实施例提供一种分布式数据库限流方法、限流装置、***及电子设备,通过在数据库中间件中应用分布式数据库限流方法,数据库中间件经由代理服务器连接至数据库服务端,代理服务器用于对数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;方法包括:获取SQL流量管控配置信息;确定SQL流量管控配置信息中的原始SQL语句的限流模式;基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句;将对照SQL语句作为流量管控条件更新至数据库中间件的内存;基于流量管控条件,对客户端的SQL请求进行流量管控,可以直接在分布式数据库的数据库中间件中添加SQL流量管控功能,即可以直接通过内网数据库实现SQL的流量管控,无需采用外网数据库管理服务,不存在安全隐患。
以下结合附图对本申请实施例进行详细说明。
图1为应用本申请实施例的分布式数据库***的结构示意图;请参照图1,分布式数据库***包括:数据库中间件15、代理服务器13、数据库服务端12以及多个数据库分片16。
客户端14可以设置有业务相关应用,该应用可以用于运行业务逻辑,当其连接分布式数据库时,可以通过MySQL协议连接数据库中间件15来发送用户的SQL请求,例如逻辑总表SQL请求。客户端可以是应用客户端、浏览器客户端、即时通信客户端或小程序等。
数据库中间件15可以解析收到的逻辑总表SQL请求,根据SQL触发的路由逻辑,将逻辑总表SQL改写为1条或多条数据库分片16可执行的逻辑子表查询SQL,并发往数据库分片16执行。另外,数据库中间件15还用于对数据库分片16返回的结果进行汇总排序并返回给客户端14。
数据库分片16是由一个读写数据库实例和只读数据库实例组成的数据库集群,用于执行接收到的逻辑子表查询SQL,并将数据读取后的结果返回给数据库中间件15进行汇总。
数据库服务端12(DAS Server)用于获取由数据库管理员11下发的SQL流量控制请求,并转发给代理服务器13。
代理服务器13(Proxy Agent)用于接受SQL流量控制请求,并对SQL流量控制请求进行转码,以生成SQL流量管控配置信息,并将流量管控配置信息更新至数据库中间件15的配置文件中。
数据库中间件15还可以根据流量管控配置信息添加流量管控条件,并基于流量管控条件对客户端14的SQL请求进行流量管控,具体可以参考下述各个实施例。
可以理解,本实施例中,一个数据库服务端12可以对应至少个代理服务器13,且每个代理服务器13可以对应至少一个数据库中间件15。
其中,数据库服务端12、数据库服务端12以及代理服务器13均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
以下进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优先顺序的限定。
图2为本申请实施例提供的分布式数据库限流方法的流程图;图3为本申请实施例提供的分布式数据库限流方法的流程框图;请参照图2和图3,本申请实施例提供一种分布式数据库限流方法100,用于数据库中间件15中,数据库中间件15经由代理服务器13连接至数据库服务端12,代理服务器13用于对数据库服务端12下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;方法100包括以下步骤S110至S140。
步骤S110,获取SQL流量管控配置信息。
步骤S120,基于SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句。
步骤S130,将对照SQL语句作为流量管控条件更新至数据库中间件15的内存。
步骤S140,基于流量管控条件,对客户端14的SQL请求进行流量管控。
可以理解,数据库中间件15中的方法执行逻辑大致可以包括两部分,如图3中的SQL流量管控配置解析逻辑21以及客户端SQL流量管控逻辑22。SQL流量管控配置解析逻辑21用于基于接收到的SQL流量管控配置信息将流量管控条件更新至数据库中间件15的内存中。客户端SQL流量管控逻辑22用于根据数据库中间件15中的流量管控条件,对客户端的SQL请求进行流量管控。
其中,步骤S110中,SQL流量管控配置信息可以是由代理服务器13对SQL流量控制请求进行转码后生成的,代理服务器13将SQL流程管控配置信息写入数据库中间件15中。SQL流量管控配置信息中可以指定有限流模式,并包含原始SQL语句。
步骤S120中,数据库中间件15在获取到SQL流量管控配置信息后,需要判断该配置信息中指定的SQL的限流模式,并根据相应的限流模式和原始SQL语句,确定对照SQL语句,对照SQL可以为最终存在于数据库中间件15的内存中的用来进行流量管控的流量管控条件。
在一些实施例中,步骤S120中,基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句,可以包括:若限流模式为SQL模版限流模式,对原始SQL语句进行指纹化处理,以生成对照SQL语句;若限流模式为SQL文本限流模式,将原始SQL语句作为对照SQL语句。
可以理解,限流模式可以包括SQL模板限流模式和SQL文本限流模式,比如,原始SQL语句为:select id,name from db01_tab02 where id=3and address=“XX”。
若是指定的限流模式为SQL文本限流模式,可以直接将上述原始SQL语句作为对照SQL语句,即对照SQL语句为:select id,name from db01_tab02 where id=3and address=“XX”。
若是指定的限流模式为SQL模板限流模式,可以对原始SQL语句进行指纹化处理,指纹化处理是指将一条SQL语句中的字面值替换成其他固定符号,即隐藏常量等;例如,原始SQL中的“3”和“XX”可以替换为“?”,那么指纹化处理后的SQL指纹,即对照SQL语句为:select id,name from db01_tab02 where id=?and address=?。
通过本实施例,可以提供SQL模板限流模式和SQL指纹限流模式供选择,提高了方法的通用性。
步骤S130中,可以将对照SQL语句作为流量管控条件,并将其更新至数据库中间件的内存中,从而实现SQL流量管控配置解析逻辑。
在一些实施例中,在步骤S130将对照SQL语句作为流量管控条件更新至数据库中间件的内存之前,方法100还可以包括:对对照SQL语句进行格式化处理,以更新对照SQL语句。
可以理解,在步骤S120和步骤S130之间,方法100还可以包括:对对照SQL语句进行格式化处理,格式化处理可以去除SQL语句中的空格、换行等无意义的字符,使得SQL语句更为规整,以便于识别和处理。
在一些实施例中,SQL流量管控配置信息可以包括QPS限制信息,步骤S130中将对照SQL语句作为流量管控条件更新至数据库中间件的内存,包括:将对照SQL语句以及QPS限制信息作为流量管控条件更新至数据库中间件的内存。
其中,QPS限制信息可以为单用户调用频率,其限定了在预设时间内,可以放行的SQL请求的数量。通过将SQL语句和QPS限制信息作为流量管控条件,可以更好地进行限流处理。
可以理解,以上步骤S110至S130属于是SQL流量管控配置解析逻辑21的说明,步骤S140属于客户端SQL流量管控逻辑22,通过步骤S140可以对客户端14的SQL请求进行流量管控处理。
本实施例中,可以通过修改数据库中间件15源码实现了数据库中间件15自身的流量控制能力,无需连接外网数据管理服务,消除了安全隐患。且无需购买额外的限流工具和数据库管理服务以及针对分布式数据库的定制化开发服务,降低了***成本。同时,也无需引入新的网络交互,有利于提升数据库单位时间内的吞吐量。
以下实施例对客户端SQL流量管控逻辑22进行说明,在一些实施例中,图4为图3中步骤S140的流程框图;请参照图4,步骤S140中基于流量管控条件,对客户端的SQL请求进行流量管控,可以包括以下子步骤S141至S146。
步骤S141,获取客户端的SQL请求。
步骤S142,解析SQL请求,以生成解析SQL语句。
步骤S143,基于解析SQL语句和限流模式,确定与限流模式相对应的目标SQL语句。
步骤S144,若目标SQL语句与对照SQL语句不匹配,则对SQL请求进行放行。
步骤S145,若目标SQL语句与对照SQL语句相匹配且当前目标SQL语句的执行量小于QPS限制信息,则对SQL请求进行放行。
步骤S146,若目标SQL与对照SQL语句相匹配且当前目标SQL语句的执行量大于或等于QPS限制信息,则向客户端发送错误信息。
步骤S141中,可以通过客户端14中的应用获取用户的SQL请求。获取到SQL请求后,在步骤S142中可以对SQL请求进行文本解析,从而可以得到解析SQL请求。
步骤S143中可以根据SQL流量管控配置信息中指定的限流模式和解析SQL语句,确定目标SQL语句。
在一些实施例中,步骤S143中基于解析SQL请求和限流模式,确定与限流模式相对应的目标SQL语句,可以包括:若限流模式为SQL模版限流模式,对解析SQL语句进行指纹化处理,以生成目标SQL语句;若限流模式为SQL文本限流模式,将解析SQL语句作为目标SQL语句。
限流模式可以包括SQL模板限流模式和SQL文本限流模式,比如,解析SQL语句为:select id,name from db01_tab02 where id=5and address=“YY”。
若是指定的限流模式为SQL文本限流模式,可以直接将上述解析SQL语句作为目标SQL语句,即目标SQL语句为:select id,name from db01_tab02 where id=5and address=“YY”。
若是指定的限流模式为SQL模板限流模式,可以对解析SQL语句进行指纹化处理,指纹化处理是指将一条SQL语句中的字面值替换成其他固定符号,即隐藏常量;例如,解析SQL中的“5”和“YY”可以替换为“?”,那么指纹化处理后的SQL指纹,即目标SQL语句为:select id,name from db01_tab02 where id=?and address=?。
通过本实施例,可以提供SQL模板限流模式和SQL指纹限流模式供限流选择,提高了方法的通用性。
在一些实施例中,在步骤S142中基于解析SQL语句和限流模式,确定与限流模式相对应的目标SQL语句之后,方法还包括:对目标SQL语句进行格式化处理,以更新目标SQL语句。
可以理解,在步骤S143和步骤S144至步骤S146之间,方法100还可以包括:对目标SQL语句进行格式化处理,格式化处理可以去除SQL语句中的空格、换行等无意义的字符,使得SQL语句更为规整,以便于识别和处理。接着可以基于步骤S144至步骤S146,将目标SQL语句与对照SQL语句进行比对,并根据结果结合QPS限制信息进行流量管控处理。
步骤S144中,若目标SQL语句与对照SQL语句不匹配,则可对该SQL进行放行,即允许SQL请求,并将该SQL请求改写为1条或多条供数据库分片执行的子SQL,并下发至数据库分片执行;在接收到数据库分片返回的结果后可以进行汇总排序,并将汇总结果发送客户端供用户查看。
步骤S145中,若目标SQL语句与对照SQL语句相匹配,并且当前该目标SQL语句的执行量小于QPS限制信息,那么也可以对该SQL进行放行,即允许SQL请求,并将该SQL请求改写为1条或多条供数据库分片执行的子SQL,并下发至数据库分片执行;在接收到数据库分片返回的结果后可以进行汇总排序,并将汇总结果发送客户端供用户查看。
步骤S146中,若目标SQL与对照SQL语句相匹配,且当前该目标SQL语句的执行量大于或等于QPS限制信息,则报错且向客户端发送错误信息。
通过本实施例可以对SQL请求进行限流,从而保证数据库的稳定性。
继续参照图3,在一个可能的实施例中,当数据库中间件15接收到DBA下发的热加载请求后,其可以根据热加载请求的SQL流量管控配置信息进入SQL黑名单解析加载流程,若限流模式为SQL模板限流模式,可以对原始SQL语句进行SQL指纹化生成SQL指纹,然后对SQL指纹进行格式化,并利用格式化后的SQL指纹(对照SQL语句)更新SQL黑名单。若限流模式为SQL文本限流模式,可以直接对原始SQL语句进行格式化,并利用格式化后的原始SQL语句(对照SQL语句)更新SQL黑名单。
当数据库中间件15接收到用户的SQL请求后,可以执行SQL过滤流程,若限流模式为SQL模板限流模式,可以对解析SQL语句进行SQL指纹化生成SQL指纹,然后对SQL指纹进行格式化,并利用格式化后的SQL指纹(目标SQL语句)查询SQL黑名单。若限流模式为SQL文本限流模式,可以直接对解析SQL语句进行格式化,并利用格式化后的解析SQL语句(目标SQL语句)查询SQL黑名单。
该SQL黑名单可以由更新SQL黑名单的步骤生成,同时,若目标SQL语句未命中SQL黑名单,则可以对该SQL请求进行放行,执行SQL类型解析,并由数据库(Datebase,DB)执行查询,然后更新SQL黑名单,并累计并发量。
同时,数据库中间件15还可以获取SQL Token-并发度,该并发度包括最大并发量以及当前并发量,最大并发量对应于QPS限制信息。若目标SQL语句命中SQL黑名单,可以判断当前并发量是否超过最大并发量的限制,若是,则报错返回,若否,则可以对该SQL请求进行放行,执行SQL类型解析,并由数据库执行查询,然后更新SQL黑名单,并累计并发量。
图5为本申请实施例提供的分布式数据库限流装置的结构示意图;请参照图5,本申请实施例提供一种分布式数据库限流装置30,用于数据库中间件中,数据库中间件经由代理服务器连接至数据库服务端,代理服务器用于对数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;装置30包括:
获取单元31,用于获取SQL流量管控配置信息。
确定单元32,用于基于SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句。
更新单元33,用于将对照SQL语句作为流量管控条件更新至数据库中间件的内存。
处理单元34,用于基于流量管控条件,对客户端的SQL请求进行流量管控。
在一些实施例中,确定单元32在执行基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句时,还进一步用于:若限流模式为SQL模版限流模式,对原始SQL语句进行指纹化处理,以生成对照SQL语句;若限流模式为SQL文本限流模式,将原始SQL语句作为对照SQL语句。
在一些实施例中,在更新单元33执行将对照SQL语句作为流量管控条件更新至数据库中间件的内存之前,更新单元33还用于对对照SQL语句进行格式化处理,以更新对照SQL语句。
在一些实施例中,SQL流量管控配置信息包括QPS限制信息,处理单元34在执行将对照SQL语句作为流量管控条件更新至数据库中间件的内存时,还进一步用于:将对照SQL语句以及QPS限制信息作为流量管控条件更新至数据库中间件的内存。
在一些实施例中,处理单元34在执行基于流量管控条件,对客户端的SQL请求进行流量管控时,还进一步用于:获取客户端的SQL请求;解析SQL请求,以生成解析SQL语句;基于解析SQL语句和限流模式,确定与限流模式相对应的目标SQL语句;若目标SQL语句与对照SQL语句不匹配,则对SQL请求进行放行;若目标SQL语句与对照SQL语句相匹配且当前目标SQL语句的执行量小于QPS限制信息,则对SQL请求进行放行;若目标SQL与对照SQL语句相匹配且当前目标SQL语句的执行量大于或等于QPS限制信息,则向客户端发送错误信息。
在一些实施例中,处理单元34在执行基于解析SQL请求和限流模式,确定与限流模式相对应的目标SQL语句时,还进一步用于:若限流模式为SQL模版限流模式,对解析SQL语句进行指纹化处理,以生成目标SQL语句;若限流模式为SQL文本限流模式,将解析SQL语句作为目标SQL语句。
在一些实施例中,处理单元34在执行在基于解析SQL语句和限流模式,确定与限流模式相对应的目标SQL语句之后,还进一步用于:对目标SQL语句进行格式化处理,以更新目标SQL语句。
如图1所示,本申请实施例提供一种分布式数据库***,包括:数据库中间件15、代理服务器13、数据库服务端12以及多个数据库分片16;数据库服务端12用于获取由数据库管理员11下发的SQL流量控制请求;代理服务器13用于接受SQL流量控制请求,并对SQL流量控制请求进行转码,以生成SQL流量管控配置信息;数据库中间件15用于执行如上任一项实施例的方法,且数据库中间件15还用于将客户端14的SQL请求发送至多个数据库分片16进行执行,并将多个数据库分片16返回的结果转发至客户端14。
其中,数据库中间件15、代理服务器13、数据库服务端12以及多个数据库分片16的结构和功能与上述各实施例相同,请参考上述各个实施例。数据库中间件15以及其对应的多个数据库分片16可以构成分布式数据库。
本实施例通过设置数据库服务端和代理服务器可以实现DBA同时对多套分布式数据库进行限流管理。
在一些实施例中,本申请实施例还提供了一种电子设备,包括:处理器;以及存储器,存储器用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行实现上述任一实施例中的方法。
图6为本申请实施例提供的电子设备的结构示意图,该电子设备40可以是图1所示的终端或服务器。如图6所示,该电子设备40可以包括:通信接口401,存储器402,处理器403和通信总线404。通信接口401,存储器402,处理器403通过通信总线404实现相互间的通信。通信接口401用于电子设备40与外部设备进行数据通信。存储器402可用于存储软件程序以及模块,处理器403通过运行存储在存储器402的软件程序以及模块,例如上述方法实施例中的相应操作的软件程序。
在一些实施例中,该处理器403可以调用存储在存储器402的软件程序以及模块执行如下操作:获取SQL流量管控配置信息;确定SQL流量管控配置信息中的原始SQL语句的限流模式;基于限流模式以及原始SQL语句,确定与限流模式相对应的对照SQL语句;将对照SQL语句作为流量管控条件更新至数据库中间件的内存;基于流量管控条件,对客户端的SQL请求进行流量管控。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例的方法。为了简洁,在此不再赘述。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述任一实施例中的方法。为了简洁,在此不再赘述。
本申请实施例还提供了一种计算机程序,该计算机程序包括计算机指令,计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得电子设备执行本申请实施例中的各方法中的相应流程,为了简洁,在此不再赘述。
应理解,本申请实施例的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的***和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考上述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器)执行本申请各个实施例所述方法的全部或部分步骤。而上述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (11)
1.一种分布式数据库限流方法,其特征在于,用于数据库中间件中,所述数据库中间件经由代理服务器连接至数据库服务端,所述代理服务器用于对所述数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;所述方法包括:
获取所述SQL流量管控配置信息;
基于所述SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与所述限流模式相对应的对照SQL语句;
将所述对照SQL语句作为流量管控条件更新至所述数据库中间件的内存;
基于所述流量管控条件,对客户端的SQL请求进行流量管控。
2.根据权利要求1所述的方法,其特征在于,所述基于所述SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与所述限流模式相对应的对照SQL语句,包括:
若所述限流模式为SQL模版限流模式,对所述原始SQL语句进行指纹化处理,以生成所述对照SQL语句;
若所述限流模式为SQL文本限流模式,将所述原始SQL语句作为所述对照SQL语句。
3.根据权利要求1所述的方法,其特征在于,在所述将所述对照SQL语句作为流量管控条件更新至所述数据库中间件的内存之前,所述方法还包括:
对所述对照SQL语句进行格式化处理,以更新所述对照SQL语句。
4.根据权利要求1所述的方法,其特征在于,所述SQL流量管控配置信息包括QPS限制信息,所述将所述对照SQL语句作为流量管控条件更新至所述数据库中间件的内存,包括:
将所述对照SQL语句以及所述QPS限制信息作为流量管控条件更新至所述数据库中间件的内存。
5.根据权利要求4所述的方法,其特征在于,所述基于所述流量管控条件,对客户端的SQL请求进行流量管控,包括:
获取所述客户端的SQL请求;
解析所述SQL请求,以生成解析SQL语句;
基于所述解析SQL语句和所述限流模式,确定与所述限流模式相对应的目标SQL语句;
若所述目标SQL语句与所述对照SQL语句不匹配,则对所述SQL请求进行放行;
若所述目标SQL语句与所述对照SQL语句相匹配且当前所述目标SQL语句的执行量小于所述QPS限制信息,则对所述SQL请求进行放行;
若所述目标SQL与所述对照SQL语句相匹配且当前所述目标SQL语句的执行量大于或等于所述QPS限制信息,则向所述客户端发送错误信息。
6.根据权利要求5所述的方法,其特征在于,
所述基于所述解析SQL请求和所述限流模式,确定与所述限流模式相对应的目标SQL语句,包括:
若所述限流模式为SQL模版限流模式,对所述解析SQL语句进行指纹化处理,以生成所述目标SQL语句;
若所述限流模式为SQL文本限流模式,将所述解析SQL语句作为所述目标SQL语句。
7.根据权利要求5所述的方法,其特征在于,在所述基于所述解析SQL语句和所述限流模式,确定与所述限流模式相对应的目标SQL语句之后,所述方法还包括:
对所述目标SQL语句进行格式化处理,以更新所述目标SQL语句。
8.一种分布式数据库限流装置,其特征在于,用于数据库中间件中,所述数据库中间件经由代理服务器连接至数据库服务端,所述代理服务器用于对所述数据库服务端下发的SQL流量控制请求进行处理,以得到SQL流量管控配置信息;所述装置包括:
获取单元,用于获取所述SQL流量管控配置信息;
确定单元,用于基于所述SQL流量管控配置信息中指定的限流模式以及原始SQL语句,确定与所述限流模式相对应的对照SQL语句;
更新单元,用于将所述对照SQL语句作为流量管控条件更新至所述数据库中间件的内存;
处理单元,用于基于所述流量管控条件,对客户端的SQL请求进行流量管控。
9.一种分布式数据库***,其特征在于,包括:数据库中间件、代理服务器、数据库服务端以及多个数据库分片;
所述数据库服务端用于获取由数据库管理员下发的SQL流量控制请求;
所述代理服务器用于接受所述SQL流量控制请求,并对所述SQL流量控制请求进行转码,以生成SQL流量管控配置信息;
所述数据库中间件用于执行如权利要求1-7中任一项所述的方法,且所述数据库中间件还用于将客户端的SQL请求发送至所述多个数据库分片进行执行,并将所述多个数据库分片返回的结果转发至所述客户端。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211658927.5A CN116226905A (zh) | 2022-12-22 | 2022-12-22 | 分布式数据库限流方法、限流装置、***及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211658927.5A CN116226905A (zh) | 2022-12-22 | 2022-12-22 | 分布式数据库限流方法、限流装置、***及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116226905A true CN116226905A (zh) | 2023-06-06 |
Family
ID=86568769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211658927.5A Pending CN116226905A (zh) | 2022-12-22 | 2022-12-22 | 分布式数据库限流方法、限流装置、***及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116226905A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556452A (zh) * | 2024-01-10 | 2024-02-13 | 支付宝(杭州)信息技术有限公司 | 一种针对数据库的访问控制方法及相关设备 |
-
2022
- 2022-12-22 CN CN202211658927.5A patent/CN116226905A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117556452A (zh) * | 2024-01-10 | 2024-02-13 | 支付宝(杭州)信息技术有限公司 | 一种针对数据库的访问控制方法及相关设备 |
CN117556452B (zh) * | 2024-01-10 | 2024-06-18 | 支付宝(杭州)信息技术有限公司 | 一种针对数据库的访问控制方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111190928A (zh) | 缓存处理方法、装置、计算机设备以及存储介质 | |
US8572108B2 (en) | Method and system for specifying, preparing and using parameterized database queries | |
CN106021445B (zh) | 一种加载缓存数据的方法及装置 | |
WO2021068488A1 (zh) | 基于区块链的日志处理方法、装置、计算机设备及存储介质 | |
US9141664B2 (en) | System and method for optimizing queries | |
US20050033779A1 (en) | Database management program, a database managing method and an apparatus therefor | |
US11734229B2 (en) | Reducing database fragmentation | |
CN109040300B (zh) | 推送消息的方法、装置和存储介质 | |
WO2012155643A1 (zh) | 基于数据库的配置台实现方法、配置台及*** | |
US7562098B2 (en) | Opportunistic directory cache | |
CN113254470B (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
CN111858588B (zh) | 一种分布式应用索引服务平台及数据处理方法 | |
US8352442B2 (en) | Determination of an updated data source from disparate data sources | |
CN116226905A (zh) | 分布式数据库限流方法、限流装置、***及电子设备 | |
CN110502581B (zh) | 分布式数据库***监测方法及装置 | |
CN112969198A (zh) | 数据传输方法、终端及存储介质 | |
US10448124B2 (en) | Method and system for issuing media information | |
CN110087201B (zh) | 一种信息处理的方法、装置和存储介质 | |
KR100921255B1 (ko) | Sql 마스킹 장치 및 방법 | |
US20210173729A1 (en) | Systems and methods of application program interface (api) parameter monitoring | |
CN111309724A (zh) | 一种用于对大数据进行处理的方法及*** | |
JP3487732B2 (ja) | 複製データベースデータ不整合回避装置及び回避方法 | |
JP2006003996A (ja) | 利用履歴管理装置、利用履歴管理方法および利用履歴管理プログラム | |
CN114143187B (zh) | 智能平台接口网络地址管理方法、***、终端及存储介质 | |
CN113420245B (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 |