CN112115202A - 集群环境下的任务分发方法和装置 - Google Patents
集群环境下的任务分发方法和装置 Download PDFInfo
- Publication number
- CN112115202A CN112115202A CN202010987114.5A CN202010987114A CN112115202A CN 112115202 A CN112115202 A CN 112115202A CN 202010987114 A CN202010987114 A CN 202010987114A CN 112115202 A CN112115202 A CN 112115202A
- Authority
- CN
- China
- Prior art keywords
- task
- node
- data
- cluster
- processing node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012545 processing Methods 0.000 claims abstract description 78
- 230000006870 function Effects 0.000 claims description 14
- 238000004891 communication Methods 0.000 abstract description 11
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种集群环境下的任务分发方法和装置,用于采用集群架构的数据库系统中的客户端,所述方法包括:获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口;接收用户输入的任务,根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点;将所述任务通过与所述任务处理节点对应的连接接口发送给所述任务处理节点。采用前述方法和装置,仅需要各个客户端与数据节点进行通信连接,而无需采用现有技术中使用中间件作为数据分发节点;客户端与数据节点直接通信,而省去了中间件节点换发造成的网络开销。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种集群环境下的任务分发方法和装置。
背景技术
随着数据吞吐量的增加,传统单一数据库架构性能无法满足客户端查询快速响应的需求;在这一形势下,主从集群的数据库架构是数据库系统发展的方向;主从集群的数据库架构的数据库集群包括多个数据节点;客户端提交的单一任务被划分为多个子任务后,多个子任务被分发给多个数据节点执行。
目前,为了实现客户端提交的单一任务能够被合理的划分为多个子任务并分发给多个数据节点,现有的防线是在客户端和数据库集群之间设置专门用于任务分发的中间件服务器;中间件服务器代理所有客户端的任务请求,在接收到客户端的任务请求后再根据分发策略将任务分别并分发给相应的数据节点。但是,因为需要采用中间件服务器进行转发操作,这一方法增加了网络性能开销;另外,如果中间件服务器出现故障,数据库集群的正常业务执行会受到影响。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种集群环境下的任务分发方法。
一方面,本申请提供一种集群环境下的任务分发方法,用于采用集群架构的数据库系统中的客户端,所述方法包括:
获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口;
接收用户输入的任务,根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点;
将所述任务通过与所述任务处理节点对应的连接接口发送给所述任务处理节点。
可选地,所述集群架构为主从集群架构,所述数据节点包括一主要节点;
根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点,包括:
在所述任务为写任务,或者所述任务处在事务并且所述事务已经执行写任务的情况下,将所述主要节点作为所述任务处理节点;
在所述任务为事务内的读任务并且所述事务未执行过写任务,或者所述任务为读任务并且所述任务处在事务外的情况下,采用轮询算法在所有所述数据节点中选定一数据节点作为所述任务处理节点以及,
在所述任务类型为其他任务的情况下,将所有所述数据节点作为所述任务处理节点。
可选地,所述集群配置信息包括各个所述数据节点的预设权重;
采用轮询算法在所述数据节点中选定所述任务处理节点,包括:
求取各个所述数据节点的历史选择权重之和,作为总权重;
求取执行上一次任务的所述数据节点的历史选择权重与总权重之差,作为执行上一次任务的所述数据节点新的历史选择权重;
求取各个数据节点的所述历史选择权重和预设权重之和,作为各个所述数据节点的当前选择权重;
将最大的所述当前选择权重对应的所述数据节点作为所述任务处理节点。
可选地,所述方法还包括:建立与客户端上层驱动连接的连接句柄;
接收用户输入的任务,包括:采用所述连接句柄接收所述上层驱动下传的所述任务。
可选地,获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口,包括:
采用连接函数获取所述集群配置信息,以及,根据所述集群配置信息建立与各个所述数据节点的连接接口。
另一方面,本申请提供一种集群环境下的任务分发装置,用于采用集群架构的数据库系统中的客户端,所述装置包括:
接口建立单元,用于获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口;
任务处理节点选择单元,用于接收用户输入的任务,根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点;
任务发送单元,用于将所述任务通过与所述任务处理节点对应的连接接口发送给所述任务处理节点。
可选地,所述集群架构为主从集群架构,所述数据节点包括一主要节点;
所述任务处理节点选择单元用于,在所述任务为写任务,或者所述任务处在事务并且所述事务已经执行写任务的情况下,将所述主要节点作为所述任务处理节点;
在所述任务为事务内的读任务并且所述事务未执行过写任务,或者所述任务为读任务并且所述任务处在事务外的情况下,采用轮询算法在所有所述数据节点中选定一数据节点作为所述任务处理节点;以及,
在所述任务类型为其他任务的情况下,将所有所述数据节点作为所述任务处理节点。
可选地,所述集群配置信息包括各个所述数据节点的预设权重;
所述任务处理节点选择单元采用轮询算法在所述数据节点中选定所述任务处理节点,包括:
求取各个所述数据节点的历史选择权重之和,作为总权重;
求取执行上一次任务的所述数据节点的历史选择权重与总权重之差,作为执行上一次任务的所述数据节点新的历史选择权重;
求取各个数据节点的所述历史选择权重和预设权重之和,作为各个所述数据节点的当前选择权重;
将最大的所述当前选择权重对应的所述数据节点作为所述任务处理节点。
采用本申请提供的任务分发方法应用于客户端,仅需要各个客户端与数据节点进行通信连接,而无需采用现有技术中使用中间件作为数据分发节点;客户端与数据节点直接通信,而省去了中间件节点换发造成的网络开销。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的集群环境下的任务分发方法流程图;
图2是本申请实施例选择任务处理节点的方法流程图;
图3是本申请实施例提供的轮询算法的流程图;
图4是本申请实施例提供的任务分发装置的结构示意图;
图5是本申请实施例提供的数据库客户端的结构示意图;
其中:11-接口建立单元,12任务处理节点选择单元,13-任务发送单元;21-处理器,22-存储器,23-通信接口,24-总线系统。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。
本申请实施例提供一种集群环境下的任务分发方法,应用在采用集群架构的数据库系统中的客户端中,以使得在客户端即可以完成向数据库系统中各个数据节点的任务分发,而无需再客户端和数据库的数据节点之间设置中间件服务器。
图1是本申请实施例提供的集群环境下的任务分发方法流程图。如图1所示,本申请实施例提供的任务分发方法包括步骤S101-S103。
S101:获取集群配置信息,根据集群配置信息建立与各个数据局节点的连接接口。
本申请实施例中,集群配置信息是存储在数据库系统中特定节点的配置信息,集群配置信息可以以系统环境变量或者系统配置文件的形式存储;当集群数据库中的某一数据节点加入数据库集群或者即将脱离数据库集群时,相应的数据节点向特定节点发送消息,以告知特定节点自身状态的变化,特定节点随即修改集群配置信息,以反应数据库集群的最新状态。
客户端在建立与数据库系统的连接后,可以向特定节点发送请求信息,以请求特定节点将集群配置信息返回给客户端。特定节点在收到请求信息后,将集群配置信息返回给客户端。
客户端在获取到集群配置信息后,根据集群配置信息建立与各个数据库的连接接口。本申请实施例中,集群配置信息中包括各个数据节点的IP地址,客户端根据集群配置信息中的IP地址,可以建立对应的套接字(Socket),以利用套接字告知底层通信协议相应数据节点地址。随后使用中,客户端通过调用底层通信协议与对应的数据节点进行通信,而将分配的任务发送给对应的节点。
因为客户端底层使用套接字建立与数据节点的连接,相比于用户调用驱动创建的连接的对象更轻量级,对性能的影响更小。
本申请实施例中,客户端中可以预先存储有具有查询集群配置信息、建立与各个数据节点连接的函数;在客户端中的上层驱动启动后,上层驱动可以调用此函数,以完成前述的功能。本申请实施例中,除了建立与各个数据节点的连接外,客户端还会创建一连接句柄,以使得上层驱动通过连接句柄确定将任务写入到哪一内存区域,即如何将任务下发给具有任务分发的模块。
本申请实施例具体应用中,前文所述的函数可以是C接口函数,各种编程语言(例如Qt、ODBC、Python、DCI)等均可以通过调用此函数。
S102:接收用户输入的任务,根据任务的类型和预先设定的分发策略选择数据节点作为任务处理节点。
在步骤S101完成后,用户可以通过客户端的程序界面向客户端的上层驱动输入任务。输入的任务可以被解析成为对应的数据库操作语句,即任务为数据库操作语句或者数据库操作语句的集合。
本申请实施例中,上层驱动通过前文中提及的连接句柄等方式将任务发送给用于任务分发的模块。用于任务分发的模块在接收到任务后,解析任务的类型,并且根据预先设定的分发策略在所有的数据节点中选择至少一个数据节点作为任务处理节点。
图2是本申请实施例选择任务处理节点的方法流程图。如图2所示,本申请实施例具体应用中,根据任务的类型和预先设定的分发策略选择数据节点作为任务处理节点的步骤可以包括S1021-S1027。
S1021:判断任务是否为其他任务;若是,执行步骤S1027;若否,执行S1022。
本申请实施例中,其他任务是为除了读任务和写任务外的其他任务。
S1022:判断任务是否处在事务中;若是,执行步骤S1023;若否,执行S1024。
事务是用于操作数据库中数据项的操作序列,此类操作要么全部执行,要么全部不执行。
如果任务处在事务中,则在前的任务可能使得在的某些数据节点中的数据项改变,随后的任务需要基于在前任务更改后的数据项执行,因此需要基于后续S1023的判断步骤。而如果任务并处在事务中,而仅是具有一条数据库操作语句的任务,则执行步骤S1024。
S1023:判断事务中是否已经执行了写任务;如果否,执行S1024;如果是,执行步骤S1025。
本申请实施例中,数据库的集群架构为主从集群架构,数据节点包括主要节点和至少一个从节点,并且写任务一定是由主要节点执行。
如果事务中已经执行了写任务,则后续事务操作均只能有主要节点执行,因此执行步骤S1025。而如果事务中没有执行写任务,则数据节点中相应数据项没有发生改变,则可以执行S1024。
S1024:判断任务是否为写任务;如果是,执行S1025;如果否,执行S1026。
S1025:将主要节点作为任务处理节点。
如前所述,如果任务是写任务,或者,如果事务中的在前任务为写任务,则只能将此任务发送给主要节点。
S1026:采用轮询算法在所有数据节点中选择一数据节点作为任务处理节点。
S1027:将所有数据节点作为任务处理节点。
根据前文判断逻辑,如果任务并不是其他任务,也不是写任务,则任务只能为读任务,因为各个数据节点的数据是一致的,并且读任务不会使各个数据节点存储内容发生改变,所以可以选择任意一个数据节点作为任务处理节点。
而如果任务是除读任务或者写任务外的其他任务,例如创建表格(createtable)、删除表格(drop table)等任务,则需要各个数据节点同样执行操作,因此可以将所有数据节点作为任务处理节点。
图3是本申请实施例提供的轮询算法的流程图。如图3所示,本申请实施例中,步骤S1027执行的轮询算法可以如步骤S201-S204。
S201:求取各个数据节点的历史选择权重之和,作为总权重。
各个数据节点的历史选择权重是在分发本次任务前,各个数据节点已经形成的选择权重。在客户端刚刚初始化时,各个数据节点的历史选择权重均被设置为0;而在客户端已经初始化完成后,并且已经向至少一个数据节点分发过任务后,则各个数据节点的历史选择权重会根据轮询算法对应的发生变化。
本申请实施例中,总权重是将各个数据节点历史选择权重相加得到的一总体权重。
S202:求取执行上一次任务的数据节点的数据节点的历史选择权重与总权重之差,作为执行上一次任务的数据节点的历史选择权重。
因为某一数据节点已经执行了上一次任务,考虑各个数据节点的负载均衡,此数据节点被分配执行新任务的概率需要减小。
本申请实施例中,通过各个数据节点的当前选择权重进行比较,选择当前选择权重最大的数据节点作为任务处理节点;而当前选择权重是基于历史选择权重确定。
为了能够将已经执行上一次任务的数据节点的当前选择权重数值降低,本申请实施例中在求取其当前选择权重前,通过将其历史选择权重和总体权重相减之值作为其新的历史选择权重,继而将其历史选择权重减小。
S203:求取各个数据节点的历史选择权重和预设权重之和,作为各个数据节点的当前选择权重。
预设权重是为数据节点预先分配到的权重。客户端可以在集群配置信息中获取各个数据基点的预设权重。
S204:将最大的当前选择权重对应的数据节点作为任务处理节点。
在经过前述的步骤S201-S204后,即可以选定任务处理节点。并且前述步骤确定的任务处理节点随着任务数量的增加而循环,各个数据选择节点被选择的次数与其预设权重的大小直接相关,因此可以根据预设权重大小调整各个数据节点被选择的概率。
为了能够更为清晰的说明前述S201-S204的优点,以下以一具体应用数据做说明。假设数据库集群有四个数据节点A、B、C、D(也就是四台数据库服务器),其预设权重分别为3、1、2、1,则在客户端初始化完成后,各个数据节点随着客户端任务量增加,其权重变化如下表。
如表所示,在经过7次任务后,客户端数据节点的历史选择权重回到了0,0,0,0,也就是完成了一次循环。在一次循环中,A、B、C、D四个节点权重分别为3、1、2、1的情况下,分别被分配了3次、1次、2次和1次任务。也就可以看出,本申请实施例中的通过配置各个数据节点的权重,采用前述方法能够实现各个数据节点按照权重分配对应的任务量。实际应用中测试表名,在分发任务量较小的情况下,这一方法也可以保证任务下发的均匀性,避免了某些数据节点负载突然增大的问题。
当然,在本申请实施例其他应用中,也可以按照其他的轮询算法或者概率选择方法为各个数据节点分配任务。
S103:将任务通过与任务处理节点对应的连接接口发送给任务处理节点。
采用前述步骤S101-S103确定的任务分发方法直接应用在客户端,因此在数据库系统工作中,仅需要各个客户端与数据节点进行通信连接,而无需采用现有技术中使用中间件作为数据分发节点;客户端与数据节点直接通信,而省去了中间件节点换发造成的网络开销。
在具体应用中,任务分发方法可以以基础库文件方式被客户端加载和调用,无需对传统客户端进行大的修改,仅需要更改客户端加载的基础库文件即可适应于集群数据库。例如在一个具体应用中,设置了专门的基础C接口,包括connectdb函数和exec函数;connectdb函数用于获取集群配置信息,建立以数据节点的连接接口以及为上层驱动提供连接句柄;exec函数用于在接收到用户输入的任务后,将任务分发给对应的数据节点。
此外,本申请实施例中,客户端还可以配置finish函数。在客户端需要断开与数据节点的连接是,还可以通过调用finish函数断开与各个数据节点的连接接口。
除了提供前述的集群环境下的任务分发方法外,本申请实施例还提供一种集群环境下的任务分发装置。如前文表述,任务分发装置也是应用于采用集群架构的数据库系统中的客户端。
图4是本申请实施例提供的任务分发装置的结构示意图。如图4所示,任务分发装置包括接口建立单元11、任务处理节点选择单元12和任务发送单元13。
接口建立单元11用于获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口。
本申请实施例中,集群配置信息是存储在数据库系统中特定节点的配置信息,集群配置信息可以以系统环境变量或者系统配置文件的形式存储;当集群数据库中的某一数据节点加入数据库集群或者即将脱离数据库集群时,相应的数据节点向特定节点发送消息,以告知特定节点自身状态的变化,特定节点随即修改集群配置信息,以反应数据库集群的最新状态。
客户端在建立与数据库系统的连接后,接口建立单元11可以向特定节点发送请求信息,以请求特定节点将集群配置信息返回给客户端。特定节点在收到请求信息后,将集群配置信息返回给客户端。
客户端的接口建立单元11在获取到集群配置信息后,根据集群配置信息建立与各个数据库的连接接口。本申请实施例中,集群配置信息中包括各个数据节点的IP地址,客户端根据集群配置信息中的IP地址,可以建立对应的套接字(Socket),以利用套接字告知底层通信协议相应数据节点地址。随后使用中,客户端通过调用底层通信协议与对应的数据节点进行通信,而将分配的任务发送给对应的节点。
因为客户端的接口建立单元11使用套接字建立与数据节点的连接,相比于用户调用驱动创建的连接的对象更轻量级,对性能的影响更小。
任务处理节点选择单元12用于接收用户输入的任务,根据任务的类型和预先设定的分发策略选择数据节点作为任务处理节点。
用户可以通过客户端的程序界面向客户端的上层驱动输入任务。输入的任务可以被解析成为对应的数据库操作语句,即任务为数据库操作语句或者数据库操作语句的集合。
本申请实施例中,上层驱动通过前文中提及的连接句柄等方式将任务发送给任务处理节点选择单元12。任务处理节点选择单元12在接收到任务后,解析任务的类型,并且根据预先设定的分发策略在所有的数据节点中选择至少一个数据节点作为任务处理节点。
具体应用中,任务处理节点选择任务处理节点的方法如前文,具体的判断规则为:
(1)在任务为写任务,或者任务处在事务并且事务已经执行写任务的情况下,将主要节点作为任务处理节点。
(2)在任务为事务内的读任务并且事务未执行过写任务,或者任务为读任务并且任务处在事务外的情况下,采用轮询算法在所有数据节点中选定一数据节点作为任务处理节点。
(3)在任务类型为其他任务的情况下,将所有数据节点作为任务处理节点。
具体应用工,任务处理节点选择单元12采用轮询算法在数据节点中选定任务处理节点包括:求取各个数据节点的历史选择权重之和,作为总权重;
求取执行上一次任务的数据节点的历史选择权重与总权重之差,作为执行上一次任务的数据节点新的历史选择权重;
求取各个数据节点的历史选择权重和预设权重之和,作为各个数据节点的当前选择权重;
将最大的当前选择权重对应的数据节点作为任务处理节点。
除了提供前述的方法和装置外本申请实施例还提供一种数据库客户端。
图5是本申请实施例提供的数据库客户端的结构示意图。如图5所示,数据库客户端包括:至少一个处理器21、至少一个存储器22和至少一个通信接口23。电子设备中的各个组件通过总线系统24耦合在一起。通信接口23用于与外部设备之间的信息传输。可理解地,总线系统24用于实现这些组件之间的连接通信。总线系统24除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图5中将各种总线都标为总线系统24。
可以理解,本实施例中的存储器22可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
在一些实施方式中,存储器22存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。
其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础任务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用任务。实现本申请实施例提供的集群环境下的任务分发方法程序可以包含在应用程序中。
在本申请实施例中,处理器21通过调用存储器22存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器21用于执行本申请提供的集群环境下的任务分发方法的各个步骤。
处理器31可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器21中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器21可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecific IntegratedCircuit,ASIC)、现成可编程门阵列(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例提供的集群环境下的任务分发方法步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器22,处理器21读取存储器22中的信息,结合其硬件完成方法的步骤。
本申请实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如前所述集群环境下的任务分发方法各实施例的步骤,为避免重复描述,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种集群环境下的任务分发方法,其特征在于,用于采用集群架构的数据库系统中的客户端,所述方法包括:
获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口;
接收用户输入的任务,根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点;
将所述任务通过与所述任务处理节点对应的连接接口发送给所述任务处理节点。
2.根据权利要求1所述的集群环境下的任务分发方法,其特征在于,
所述集群架构为主从集群架构,所述数据节点包括一主要节点;
根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点,包括:
在所述任务为写任务,或者所述任务处在事务并且所述事务已经执行写任务的情况下,将所述主要节点作为所述任务处理节点;
在所述任务为事务内的读任务并且所述事务未执行过写任务,或者所述任务为读任务并且所述任务处在事务外的情况下,采用轮询算法在所有所述数据节点中选定一数据节点作为所述任务处理节点;以及,
在所述任务类型为其他任务情况下,将所有所述数据节点作为所述任务处理节点。
3.根据权利要求2所述的集群环境下的任务分发方法,其特征在于,所述集群配置信息包括各个所述数据节点的预设权重;
采用轮询算法在所述数据节点中选定所述任务处理节点,包括:
求取各个所述数据节点的历史选择权重之和,作为总权重;
求取执行上一次任务的所述数据节点的历史选择权重与总权重之差,作为执行上一次任务的所述数据节点新的历史选择权重;
求取各个数据节点的所述历史选择权重和预设权重之和,作为各个所述数据节点的当前选择权重;
将最大的所述当前选择权重对应的所述数据节点作为所述任务处理节点。
4.根据权利要求1所述的集群环境下的任务分发方法,其特征在于,还包括:建立与客户端上层驱动连接的连接句柄;
接收用户输入的任务,包括:采用所述连接句柄接收所述上层驱动下传的所述任务。
5.根据权利要求1所述的集群环境下的任务分发方法,其特征在于,获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口,包括:
采用连接函数获取所述集群配置信息,以及,根据所述集群配置信息建立与各个所述数据节点的连接接口。
6.一种集群环境下的任务分发装置,其特征在于,用于采用集群架构的数据库系统中的客户端,所述装置包括:
接口建立单元,用于获取集群配置信息,根据所述集群配置信息建立与各个数据节点的连接接口;
任务处理节点选择单元,用于接收用户输入的任务,根据所述任务的类型和预先设定的分发策略选择所述数据节点作为任务处理节点;
任务发送单元,用于将所述任务通过与所述任务处理节点对应的连接接口发送给所述任务处理节点。
7.根据权利要求6所述的集群环境下的任务分发装置,其特征在于,
所述集群架构为主从集群架构,所述数据节点包括一主要节点;
所述任务处理节点选择单元用于,在所述任务为写任务,或者所述任务处在事务并且所述事务已经执行写任务的情况下,将所述主要节点作为所述任务处理节点;
在所述任务为事务内的读任务并且所述事务未执行过写任务,或者所述任务为读任务并且所述任务处在事务外的情况下,采用轮询算法在所有所述数据节点中选定一数据节点作为所述任务处理节点;以及,
在所述任务类型为其他任务的情况下,将所有所述数据节点作为所述任务处理节点。
8.根据权利要求7所述的集群环境下的任务分发装置,其特征在于,
所述集群配置信息包括各个所述数据节点的预设权重;
所述任务处理节点选择单元采用轮询算法在所述数据节点中选定所述任务处理节点,包括:
求取各个所述数据节点的历史选择权重之和,作为总权重;
求取执行上一次任务的所述数据节点的历史选择权重与总权重之差,作为执行上一次任务的所述数据节点新的历史选择权重;
求取各个数据节点的所述历史选择权重和预设权重之和,作为各个所述数据节点的当前选择权重;
将最大的所述当前选择权重对应的所述数据节点作为所述任务处理节点。
9.一种数据库客户端,其特征在于,包括处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至5任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010987114.5A CN112115202A (zh) | 2020-09-18 | 2020-09-18 | 集群环境下的任务分发方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010987114.5A CN112115202A (zh) | 2020-09-18 | 2020-09-18 | 集群环境下的任务分发方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112115202A true CN112115202A (zh) | 2020-12-22 |
Family
ID=73800301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010987114.5A Pending CN112115202A (zh) | 2020-09-18 | 2020-09-18 | 集群环境下的任务分发方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112115202A (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521389A (zh) * | 2011-12-23 | 2012-06-27 | 天津神舟通用数据技术有限公司 | 一种混合使用固态硬盘和传统硬盘的postgresql数据库集群系统及其优化方法 |
US20140136680A1 (en) * | 2012-11-09 | 2014-05-15 | Citrix Systems, Inc. | Systems and methods for appflow for datastream |
US8805978B1 (en) * | 2012-02-28 | 2014-08-12 | Symantec Corporation | Distributed cluster reconfiguration |
CN104391873A (zh) * | 2014-10-29 | 2015-03-04 | 上海达梦数据库有限公司 | 数据库操作分离方法和系统 |
CN106445683A (zh) * | 2016-09-12 | 2017-02-22 | 北京中电普华信息技术有限公司 | 一种服务器资源分发方法及装置 |
CN106657287A (zh) * | 2016-11-30 | 2017-05-10 | 广州市千钧网络科技有限公司 | 一种数据访问方法及系统 |
CN106657099A (zh) * | 2016-12-29 | 2017-05-10 | 北京天元创新科技有限公司 | 一种Spark数据分析服务发布系统 |
US20180293275A1 (en) * | 2017-04-10 | 2018-10-11 | Sap Se | Massively parallel processing database middleware connector |
CN108810115A (zh) * | 2018-05-29 | 2018-11-13 | 电子科技大学 | 一种适用于分布式数据库的负载均衡方法、装置及服务器 |
US20180352023A1 (en) * | 2017-06-01 | 2018-12-06 | Salesforce.Com, Inc. | Decentralized, resource aware load distribution in a distributed system |
CN109672662A (zh) * | 2018-10-11 | 2019-04-23 | 中山大学 | 一种微服务环境中服务依赖关系构建方法 |
CN110351246A (zh) * | 2019-06-12 | 2019-10-18 | 深圳市奥克多普科技有限公司 | 服务器集群系统Socket管理方法及装置 |
CN110781214A (zh) * | 2019-09-26 | 2020-02-11 | 金蝶软件(中国)有限公司 | 数据库读写方法、装置、计算机设备和存储介质 |
CN110781007A (zh) * | 2019-10-31 | 2020-02-11 | 广州市网星信息技术有限公司 | 任务处理方法、装置、服务器、客户端、系统和存储介质 |
CN111026521A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务调度器、任务处理系统及任务处理方法 |
CN111459677A (zh) * | 2020-04-01 | 2020-07-28 | 北京顺达同行科技有限公司 | 请求分配方法、装置、计算机设备和存储介质 |
-
2020
- 2020-09-18 CN CN202010987114.5A patent/CN112115202A/zh active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521389A (zh) * | 2011-12-23 | 2012-06-27 | 天津神舟通用数据技术有限公司 | 一种混合使用固态硬盘和传统硬盘的postgresql数据库集群系统及其优化方法 |
US8805978B1 (en) * | 2012-02-28 | 2014-08-12 | Symantec Corporation | Distributed cluster reconfiguration |
US20140136680A1 (en) * | 2012-11-09 | 2014-05-15 | Citrix Systems, Inc. | Systems and methods for appflow for datastream |
CN104391873A (zh) * | 2014-10-29 | 2015-03-04 | 上海达梦数据库有限公司 | 数据库操作分离方法和系统 |
CN106445683A (zh) * | 2016-09-12 | 2017-02-22 | 北京中电普华信息技术有限公司 | 一种服务器资源分发方法及装置 |
CN106657287A (zh) * | 2016-11-30 | 2017-05-10 | 广州市千钧网络科技有限公司 | 一种数据访问方法及系统 |
CN106657099A (zh) * | 2016-12-29 | 2017-05-10 | 北京天元创新科技有限公司 | 一种Spark数据分析服务发布系统 |
US20180293275A1 (en) * | 2017-04-10 | 2018-10-11 | Sap Se | Massively parallel processing database middleware connector |
US20180352023A1 (en) * | 2017-06-01 | 2018-12-06 | Salesforce.Com, Inc. | Decentralized, resource aware load distribution in a distributed system |
CN108810115A (zh) * | 2018-05-29 | 2018-11-13 | 电子科技大学 | 一种适用于分布式数据库的负载均衡方法、装置及服务器 |
CN111026521A (zh) * | 2018-10-10 | 2020-04-17 | 上海寒武纪信息科技有限公司 | 任务调度器、任务处理系统及任务处理方法 |
CN109672662A (zh) * | 2018-10-11 | 2019-04-23 | 中山大学 | 一种微服务环境中服务依赖关系构建方法 |
CN110351246A (zh) * | 2019-06-12 | 2019-10-18 | 深圳市奥克多普科技有限公司 | 服务器集群系统Socket管理方法及装置 |
CN110781214A (zh) * | 2019-09-26 | 2020-02-11 | 金蝶软件(中国)有限公司 | 数据库读写方法、装置、计算机设备和存储介质 |
CN110781007A (zh) * | 2019-10-31 | 2020-02-11 | 广州市网星信息技术有限公司 | 任务处理方法、装置、服务器、客户端、系统和存储介质 |
CN111459677A (zh) * | 2020-04-01 | 2020-07-28 | 北京顺达同行科技有限公司 | 请求分配方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210263714A1 (en) | System and method for autowiring of a microservice architecture | |
CN107590001B (zh) | 负载均衡方法及装置、存储介质、电子设备 | |
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
US10462262B2 (en) | Middleware abstraction layer (MAL) | |
CN100545851C (zh) | 使用命令行环境的远程系统管理 | |
US8032588B2 (en) | System and method for hosting one or more versions of a service using a service proxy | |
CN113645304B (zh) | 数据服务处理方法及相关设备 | |
US9483493B2 (en) | Method and system for accessing a distributed file system | |
CN114189525B (zh) | 服务请求方法、装置和电子设备 | |
CN103118142A (zh) | 负载均衡方法和负载均衡系统 | |
US20080282242A1 (en) | Simulation management within a grid infrastructure | |
CN114374696A (zh) | 一种容器负载均衡方法、装置、设备及存储介质 | |
US7003773B2 (en) | Dynamic interface aggregation on demand | |
CN112217845B (zh) | 一种基于Netconf协议的数据传输方法及相关设备 | |
CN113630310A (zh) | 一种分布式高可用网关系统 | |
CN108259605B (zh) | 一种基于多数据中心的数据调用系统及方法 | |
JP2012522318A (ja) | スマートルーティング | |
CN117149445A (zh) | 一种跨集群负载均衡方法及装置、设备及存储介质 | |
CN112115202A (zh) | 集群环境下的任务分发方法和装置 | |
CN111897663A (zh) | 接口调用方法、装置、计算机设备和存储介质 | |
CN112099930A (zh) | 一种量子计算机集群分布式队列调度方法 | |
CN110971639B (zh) | 消息分发方法、消息管理系统、服务器及计算机存储介质 | |
CN111382141A (zh) | 主从架构配置方法、装置、设备以及计算机可读存储介质 | |
US9537931B2 (en) | Dynamic object oriented remote instantiation | |
van Gurp et al. | Service grid variability realization |
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 |