CN111611068A - 分布式系统中的数据写方法、服务器及客户端 - Google Patents
分布式系统中的数据写方法、服务器及客户端 Download PDFInfo
- Publication number
- CN111611068A CN111611068A CN201910136605.6A CN201910136605A CN111611068A CN 111611068 A CN111611068 A CN 111611068A CN 201910136605 A CN201910136605 A CN 201910136605A CN 111611068 A CN111611068 A CN 111611068A
- Authority
- CN
- China
- Prior art keywords
- computer node
- copy
- write request
- speed
- data
- 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
Links
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Abstract
本发明实施例提供一种分布式系统中的数据写方法、服务器及客户端,所述方法包括:在预设等待时间周期内,接收客户端以预先获取的速度发送的待写数据的写请求,并将各所述写请求放入等待队列中;经过所述预设等待时间周期后,基于两阶段提交协议将所述等待队列中的写请求批量完成,并根据处理各所述写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈;将各所述写请求对应的判断结果发送给所述客户端,以供所述客户端根据各所述写请求对应的判断结果调整所述速度,以最近调整的所述速度向所述主副本所在计算机节点发送写请求。本发明实施例提升了服务器端的吞吐率,且避免负载过重,方法简单,易于实施。
Description
技术领域
本发明实施例属于计算机存储技术领域,更具体地,涉及一种分布式系统中的数据写方法、服务器及客户端。
背景技术
在电子商务、社交网络、在线音视频服务等互联网应用的推动下,全球的数据正爆炸增长。如何存储与管理如此庞大的数据集合,并能通过分析挖掘从中找寻有价值的规律和知识,为各行业提供真正的智慧,是近及年来学术研究的热点。
以Hadoop等大数据处理平台为代表的大规模分布式处理平台为解决海量数据存储与管理的问题应运而生,它具有可靠性高、可扩展性强等特点。在大规模分布式系统中,每份数据都有多个副本,这就引出了数据一致性问题。为了保证副本间的强一致性,系统设计者一般采用两阶段提交协议(2phase commit,2PC)。先任意指定数据副本中的一个副本为主副本,其余副本为从副本。外界应用对于该数据的写操作都会发送至该数据主副本所在的计算机节点,开始执行两阶段提交协议。每完成一次写操作都会在主副本及从副本所在的计算机节点间产生两次网络交互。假设主副本要执行N个写操作,则完成这些操作需要在主从副本间产生2N次网络交互,显然会产生大量网络延时。
一种简单的优化思路是在主副本所在计算机节点中设置缓存,接收到一批写操作,例如P个后,再通过一次两阶段提交协议完成这P个写操作。显然,P值设置的越大,则分布式系统处理写操作的吞吐率就越高。但该种优化思路的问题在于,如果P设置过小,依然会产生较高延时;如果P设置过大,则计算机节点会很快到达性能瓶颈,无法再对外提供数据访问能力。
发明内容
为克服上述现有的分布式系统中数据写方法网络延时长或易达到性能瓶颈的问题或者至少部分地解决上述问题,本发明实施例提供一种分布式系统中的数据写方法、服务器及客户端。
根据本发明实施例的第一方面,提供一种分布式系统中数据写方法,包括:
在预设等待时间周期内,待写数据的主副本所在计算机节点接收客户端以预先获取的速度发送的待写数据的写请求,并将各所述写请求放入等待队列中;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
经过所述预设等待时间周期后,所述主副本所在计算机节点基于两阶段提交协议将所述等待队列中的写请求批量完成,并根据所述主副本所在计算机节点处理各所述写请求时的性能状态,判断所述主副本所在计算机节点是否已达到性能瓶颈;
将各所述写请求对应的判断结果发送给所述客户端,以供所述客户端根据各所述写请求对应的判断结果调整所述速度,以最近调整的所述速度向所述主副本所在计算机节点发送写请求。
根据本发明实施例的第二方面,提供一种分布式系统中数据写方法,包括:
按照预先获取的速度将待写数据的写请求发送到待写数据的主副本所在计算机节点;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
接收所述主副本所在计算机节点返回的各所述写请求对应的判断结果,根据各所述写请求对应的判断结果调整所述速度;其中,所述判断结果为所述主副本所在计算机节点在处理各所述写请求时已达到性能瓶颈或未达到性能瓶颈,所述判断结果根据所述主副本所在计算机节点处理各所述写请求时的性能状态获取;
按照最近调整的所述速度向所述主副本所在计算机节点发送写请求。
根据本发明实施例第三方面,提供一种分布式系统中的服务器,包括:
接收模块,用于在预设等待时间周期内,接收客户端以预先获取的速度发送的待写数据的写请求,并将各所述写请求放入等待队列中;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
判断模块,用于经过所述预设等待时间周期后,基于两阶段提交协议将所述等待队列中的写请求批量完成,并根据主副本所在计算机节点处理各所述写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈;
第一发送模块,用于将各所述写请求对应的判断结果发送给所述客户端,以供所述客户端根据各所述写请求对应的判断结果调整所述速度,以最近调整的所述速度向所述主副本所在计算机节点发送写请求。
根据本发明实施例第四方面,提供一种分布式系统中的客户端,包括:
第二发送模块,用于按照预先获取的速度将待写数据的写请求发送到待写数据的主副本所在计算机节点;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
调整模块,用于接收所述主副本所在计算机节点返回的各所述写请求对应的判断结果,根据各所述写请求对应的判断结果调整所述速度;其中,所述判断结果为所述主副本所在计算机节点在处理各所述写请求时已达到性能瓶颈或未达到性能瓶颈,所述判断结果根据所述主副本所在计算机节点处理各所述写请求时的性能状态获取;
第三发送模块,用于按照最近调整的所述速度向所述主副本所在计算机节点发送写请求。
本发明实施例提供一种分布式系统中的数据写方法、服务器及客户端,该方法考虑到主副本所在计算机节点的负载能力,主副本所在计算机节点根据处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈,并将各写请求对应的判断结果发送给客户端,以供所述客户端根据服务器端的负载状况,动态调整写请求发送速度,提升了服务器端的吞吐率,同时避免服务器端因为负载过重而停止响应数据访问请求方法简单,易于实施。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的分布式系统中的数据写方法整体流程示意图;
图2为本发明实施例提供的分布式系统中的服务器整体结构示意图;
图3为本发明另一实施例提供的分布式系统中的数据写方法整体流程示意图;
图4为本发明实施例提供的分布式系统中的客户端整体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的一个实施例中提供一种分布式系统中的数据写方法,图1为本发明实施例提供的分布式系统中的数据写方法整体流程示意图,该方法包括:S101,在预设等待时间周期内,待写数据的主副本所在计算机节点接收客户端以预先获取的速度发送的待写数据的写请求,并将各写请求放入等待队列中;其中,将待写数据的任一副本作为待写数据的主副本;
其中,待写数据为需要进行写操作的数据。分布式系统由客户端和服务器端组成,待写数据存储在分布式系统的服务器端。服务器端包含多个计算机节点,每份待写数据包含多个副本。每个副本存在于服务器端的一个计算机节点上。在待写数据导入到分布式系统的过程中,可以指定待写数据副本中的任意一个为主副本,其余为从副本。只有主副本所在计算机节点可以响应客户端发出的写请求。对主副本所在计算机节点进行初始化,包括建立写操作等待队列与设定等待时间周期T,可从操作系统内部调用申请一段连续的内存空间作为等待队列。T为整数,单位为毫秒。在当前的等待时间周期T内,主副本所在计算机节点将所有接收到的每个写请求组织为<wid,args>格式,并依照该格式将写请求依次放入等待队列。其中wid为写操作标识,args为写操作参数,写操作参数包括文件名称,权限,写入数据与数据长度等。写请求由客户端按照预先获取的速度发送,该速度为预先设定的速度或最近一次调整后的速度。
S102,经过预设等待时间周期后,主副本所在计算机节点基于两阶段提交协议将等待队列中的写请求批量完成,并根据主副本所在计算机节点处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈;
其中,两阶段提交协议中参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈决定是否要提交操作还是中止操作。经过等待时间周期T后,判断等待队列是否为空。若等待队列不为空,则主副本所在计算机节点使用一次两阶段提交协议,将请求队列中的所有写请求批量完成,并将各写请求的写操作结果发送给客户端。并根据主副本所在计算机节点处理各写请求时的性能状态,判断主副本所在计算机节点在处理各写请求时是否已达到性能瓶颈。性能状态可通过CPU(Central Processing Unit,中央处理器)利用率、内存利用率或者磁盘I/O(Input/Output,输入和输出)速度综合研判。若主副本所在计算机节点的CPU利用率大于第一预设阈值、内存利用率大于第二预设阈值,或者磁盘I/O速度小于第三预设阈值,则获知主副本所在计算机节点已达到性能瓶颈;否则,获知主副本所在计算机节点未达到性能瓶颈。
S103,将各写请求对应的判断结果发送给客户端,以供客户端根据各写请求对应的判断结果调整速度,以最近调整的速度向主副本所在计算机节点发送写请求。
主副本所在计算机节点将等待队列中各写请求的反馈发送给客户端,以供客户端根据各写请求对应的判断结果调整速度,以最近调整的速度向主副本所在计算机节点发送写请求。反馈格式为<wid,res,stat>,其中wid是写操作标识,res表示写操作的结果,stat表示在根据各写请求进行写操作时,主副本所在计算机节点是否已达性能瓶颈,取值为true或者false。true表示已达性能瓶颈,否则为false。但本实施例不限于这种反馈格式。若客户端当前接收的判断结果为true,则将上次调整后的速度调低,本次调整后的速度S'可以为S*(1-e-M),S为上次调整后的速度,M为第一预设常数。若当前接收的判断结果为false,且紧邻当前接收的判断结果之前,包括当前接收的判断结果连续Q个判断结果均为false,则将上次调整后的速度调高,本次调整后的速度S'可以为S*(1+e-N);其中,Q为预设个数的倍数。
本实施例考虑到主副本所在计算机节点的负载能力,主副本所在计算机节点根据处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈,并将各写请求对应的判断结果发送给客户端,以供客户端根据服务器端的负载状况,动态调整写请求发送速度,提升了服务器端的吞吐率,同时避免服务器端因为负载过重而停止响应数据访问请求方法简单,易于实施。
在上述实施例的基础上,本实施例中主副本所在计算机节点基于两阶段提交协议将等待队列中的写请求批量完成的步骤具体包括:主副本所在计算机节点将等待队列中的各写请求发送到待写数据的所有从副本所在计算机节点,以供所有从副本所在计算机节点根据各写请求执行写操作;其中,将待写数据的副本中除主副本以外的副本作为待写数据的从副本;主副本所在计算机节点根据所有从副本所在计算机节点返回的各写请求的写操作结果确定各写请求的最终写操作结果,并将各写请求的最终写操作结果发送给客户端。
具体地,主副本所在计算机节点将等待队列中的各写请发送给所有从副本所在计算机节点,从副本所在计算机节点根据各写请求依次执行每个写操作,并将每个写操作的执行结果,即成功或者回滚批量反馈给主副本所在计算机节点。主副本所在计算机节点将等待队列中各写请求的最终写操作结果,即成功或回滚发送给各个从副本所在计算机节点,从副本获悉所在计算机节点接收到该决定后再向主副本所在计算机节点发送一个确认消息。主副本所在计算机节点将各写请求的最终写操作结果发送给客户端。
在本发明的一个实施例中提供一种分布式系统中的服务器,该服务器用于实现前述各实施例中的方法。因此,在前述分布式系统中的数据写方法的各实施例中的描述和定义,可以用于本发明实施例中各个执行模块的理解。图2为本发明实施例提供的分布式系统中的服务器整体结构示意图,该服务器包括接收模块201、判断模块202和第一发送模块203;其中:接收模块201用于在预设等待时间周期内,接收客户端以预先获取的速度发送的待写数据的写请求,并将各写请求放入等待队列中;其中,将待写数据的任一副本作为待写数据的主副本;
其中,该服务器为主副本所在计算机节点。待写数据为需要进行写操作的数据。分布式系统由客户端和服务器端组成,待写数据存储在分布式系统的服务器端。服务器端包含多个计算机节点,每份待写数据包含多个副本。每个副本存在于服务器端的一个计算机节点上。在待写数据导入到分布式系统的过程中,可以指定待写数据副本中的任意一个为主副本,其余为从副本。只有主副本所在计算机节点可以响应客户端发出的写请求。对主副本所在计算机节点进行初始化,包括建立写操作等待队列与设定等待时间周期T,可从操作系统内部调用申请一段连续的内存空间作为等待队列。T为整数,单位为毫秒。在当前的等待时间周期T内,接收模块201将所有接收到的每个写请求组织为<wid,args>格式,并依照该格式将写请求依次放入等待队列。其中wid为写操作标识,args为写操作参数,写操作参数包括文件名称,权限,写入数据与数据长度等。写请求由客户端按照预先获取的速度发送,该速度为预先设定的速度或最近一次调整后的速度。
判断模块202用于经过预设等待时间周期后,基于两阶段提交协议将等待队列中的写请求批量完成,并根据主副本所在计算机节点处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈;
其中,两阶段提交协议中参与者将操作成败通知协调者,再由协调者根据所有参与者的反馈决定是否要提交操作还是中止操作。经过等待时间周期T后,判断模块202判断等待队列是否为空。若等待队列不为空,则主副本所在计算机节点使用一次两阶段提交协议,将请求队列中的所有写请求批量完成,第一发送模块203将各写请求的写操作结果发送给客户端。判断模块202还根据主副本所在计算机节点处理各写请求时的性能状态,判断主副本所在计算机节点在处理各写请求时是否已达到性能瓶颈。性能状态可通过CPU利用率、内存利用率或者磁盘I/O速度综合研判。若主副本所在计算机节点的CPU利用率大于第一预设阈值、内存利用率大于第二预设阈值,或者磁盘I/O速度小于第三预设阈值,则获知主副本所在计算机节点已达到性能瓶颈;否则,获知主副本所在计算机节点未达到性能瓶颈。
第一发送模块203用于将各写请求对应的判断结果发送给客户端,以供客户端根据各写请求对应的判断结果调整速度,以最近调整的速度向主副本所在计算机节点发送写请求。
第一发送模块203将等待队列中各写请求的反馈发送给客户端,以供客户端根据各写请求对应的判断结果调整速度,以最近调整的速度向主副本所在计算机节点发送写请求。
本实施例考虑到主副本所在计算机节点的负载能力,主副本所在计算机节点根据处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈,并将各写请求对应的判断结果发送给客户端,以供客户端根据服务器端的负载状况,动态调整写请求发送速度,提升了服务器端的吞吐率,同时避免服务器端因为负载过重而停止响应数据访问请求方法简单,易于实施。
在上述实施例的基础上,本实施例中判断模块进一步用于:将等待队列中的各写请求发送到待写数据的所有从副本所在计算机节点,以供所有从副本所在计算机节点根据各写请求执行写操作;其中,将待写数据的副本中除主副本以外的副本作为待写数据的从副本;根据所有从副本所在计算机节点返回的各写请求的写操作结果确定各写请求的最终写操作结果,并将各写请求的最终写操作结果发送给客户端。
在上述实施例的基础上,本实施例中判断模块进一步用于:若主副本所在计算机节点的CPU利用率大于第一预设阈值、主副本所在计算机节点的内存利用率大于第二预设阈值,或者主副本所在计算机节点的磁盘I/O速度小于第三预设阈值,则获知主副本所在计算机节点已达到性能瓶颈;否则,获知主副本所在计算机节点未达到性能瓶颈。
在本发明的第二个实施例中提供一种分布式系统中的数据写方法,图3为本发明实施例提供的分布式系统中的数据写方法整体流程示意图,该方法包括:S301,按照预先获取的速度将待写数据的写请求发送到待写数据的主副本所在计算机节点;其中,将待写数据的任一副本作为待写数据的主副本;
对客户端进行初始化,设定写操作发送的初始速度S0。客户端按照预先获取的速度向待写数据的主副本所在计算机节点不断发起写请求。其中,预先获取的速度为距离本次发送写请求之前最近一次调整的速度。
S302,接收主副本所在计算机节点返回的各写请求对应的判断结果,根据各写请求对应的判断结果调整速度;其中,判断结果为主副本所在计算机节点在处理各写请求时已达到性能瓶颈或未达到性能瓶颈,判断结果根据主副本所在计算机节点处理各写请求时的性能状态获取;
客户端先后接收主副本所在计算机节点返回的各写请求对应的判断结果。判断结果可以包含在写请求的反馈结果中。如写请求的反馈格式为<wid,res,stat>,其中wid是写操作标识,res表示写操作的结果,stat表示在根据各写请求进行写操作时,主副本所在计算机节点是否已达性能瓶颈,取值为true或者false。true表示已达性能瓶颈,否则为false。但本实施例不限于这种反馈格式。通过查看state,即可获知各写请求对应的判断结果,即state的值。客户端每接收到一个判断结果,根据判断结果确定是否调整发送写请求的速度,怎样调整。若在某个写请求的反馈中,stat取值为true,说明主副本所在计算机节点已到性能瓶颈,需要将发送速度调低。若连续多个写请求中的反馈中,stat均取值为false,表示主副本所在计算机节点近段时间工作没有饱和,需要将发送速度调高。本实施例不限于速度调节的具体方式。
S303,按照最近调整的速度向主副本所在计算机节点发送写请求。
每次确定调整客户端的发送速度后,客户端按最近一次调整后的速度向主副本所在计算机节点发送写请求。
本实施例考虑到主副本所在计算机节点的负载能力,客户端向主副本所在计算机节点以预先调整的速度不断发送写请求,以主副本所在计算机节点在处理各写请求时根据性能状态,判断自身是否已达到性能瓶颈或未达到性能瓶颈,客户端根据接收到的判断结果,动态调整写请求发送速度,提升了服务器端的吞吐率,同时避免服务器端因为负载过重而停止响应数据访问请求方法简单,易于实施。
在上述实施例的基础上,本实施例中根据各写请求对应的判断结果调整速度的步骤具体包括:若当前接收的写请求对应的判断结果为已达到性能瓶颈,则将上次调整后的速度调低。
在上述实施例的基础上,本实施例中通过以下公式将上次调整后的速度:
S'=S*(1-e-M);
其中,S为本次调整后的速度,S'为上次调整后的速度,M为第一预设常数。
在上述实施例的基础上,本实施例中根据判断结果调整速度的步骤还包括:若当前接收的判断结果为未达到性能瓶颈,且紧邻当前接收的判断结果之前,包括当前接收的判断结果连续Q个判断结果均为未达到性能瓶颈,则将上次调整后的速度调高;其中,Q为预设个数的倍数。
在上述实施例的基础上,本实施例中通过以下公式将上次调整后的速度调高:
S'=S*(1+e-N);
其中,S为本次调整后的速度,S'为上次调整后的速度,N为第二预设常数。
其中,预设个数P、第一预设常数M和第二预设常数N,S0、P、M和N为整数。例如,预设个数P为3,客户端初始发送写请求的速度为S,客户端以速度S向主副本所在计算机节点发送写请求,先后接收到的判断结果为true、false、false、false、false、false、false和true。第一次接收到判断结果后发送速度调整为S1=S*(1-e-M);第四次接收到判断结果时,Q为3,为P的倍数,发送速度调整为S4=S1*(1+e-N);第7次接收到判断结果时Q为6,为P的倍数,发送速度调整为S7=S4*(1+e-N);第8次接收判断结果后发送速度调整为S8=S7*(1-e-M)。在第1次和第4次接收判断结果之间发送速度为S1,在第4次和第7次接收判断结果之间发送速度为S4,在第7次和第8次接收判断结果之间发送速度为S7,在第8次接收判断结果之后发送速度调整为S8。
在本发明的另一个实施例中提供一种分布式系统中的客户端,该客户端用于实现前述各实施例中的方法。因此,在前述分布式系统中的数据写方法的各实施例中的描述和定义,可以用于本发明实施例中各个执行模块的理解。图4为本发明实施例提供的分布式系统中的客户端整体结构示意图,该客户端包括第二发送模块401、调整模块402和第三发送模块403;其中:第二发送模块401用于按照预先获取的速度将待写数据的写请求发送到待写数据的主副本所在计算机节点;其中,将待写数据的任一副本作为待写数据的主副本;
对客户端进行初始化,设定写操作发送的初始速度S0。第二发送模块401按照预先获取的速度向待写数据的主副本所在计算机节点不断发起写请求。其中,预先获取的速度为距离本次发送写请求之前最近一次调整的速度。
调整模块402用于接收主副本所在计算机节点返回的各写请求对应的判断结果,根据各写请求对应的判断结果调整速度;其中,判断结果为主副本所在计算机节点在处理各写请求时已达到性能瓶颈或未达到性能瓶颈,判断结果根据主副本所在计算机节点处理各写请求时的性能状态获取;
客户端先后接收主副本所在计算机节点返回的各写请求对应的判断结果。判断结果可以包含在写请求的反馈结果中。调整模块402每接收到一个判断结果,根据判断结果确定是否调整发送写请求的速度,怎样调整。若在某个写请求的反馈中,判断结果主副本所在计算机节点已到性能瓶颈,需要将发送速度调低。若连续多个写请求中的反馈中,主副本所在计算机节点都未达到性能瓶颈,需要将发送速度调高。本实施例不限于速度调节的具体方式。
第三发送模块403用于按照最近调整的速度向主副本所在计算机节点发送写请求。
第三发送模块403每次确定调整客户端的发送速度后,按最近一次调整后的速度向主副本所在计算机节点发送写请求。
本实施例考虑到主副本所在计算机节点的负载能力,客户端向主副本所在计算机节点以预先调整的速度不断发送写请求,以主副本所在计算机节点在处理各写请求时根据性能状态,判断自身是否已达到性能瓶颈或未达到性能瓶颈,客户端根据接收到的判断结果,动态调整写请求发送速度,提升了服务器端的吞吐率,同时避免服务器端因为负载过重而停止响应数据访问请求方法简单,易于实施。
在上述实施例的基础上,本实施例中调整模块具体用于:若当前接收的写请求对应的判断结果为已达到性能瓶颈,则将上次调整后的速度调低。
在上述实施例的基础上,本实施例中调整模块具体通过以下公式将上次调整后的速度:
S'=S*(1-e-M);
其中,S为本次调整后的速度,S'为上次调整后的速度,M为第一预设常数。
在上述实施例的基础上,本实施例中调整模块还用于:若当前接收的判断结果为未达到性能瓶颈,且紧邻当前接收的判断结果之前,包括当前接收的判断结果连续Q个判断结果均为未达到性能瓶颈,则将上次调整后的速度调高;其中,Q为预设个数的倍数。
在上述各实施例的基础上,本实施例中调整模块具体通过以下公式将上次调整后的速度调高:
S'=S*(1+e-N);
其中,S为本次调整后的速度,S'为上次调整后的速度,N为第二预设常数。
在本发明的另一个实施例中提供一种分布式系统,包括上述任一分布式系统中的服务器实施例中的服务器和上述任一分布式系统中的客户端实施例中的客户端。
具体地,客户端按照预先获取的速度将待写数据的写请求不断发送到待写数据的主副本所在计算机节点。主副本所在计算机节点接收客户端发送的写请求,并将各写请求放入等待队列中。经过预设等待时间周期后,主副本所在计算机节点基于两阶段提交协议将等待队列中的写请求批量完成,并根据主副本所在计算机节点处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈,并将各写请求对应的判断结果发送给客户端。客户端接收主副本所在计算机节点返回的各写请求对应的判断结果,根据各写请求对应的判断结果调整速度,按照最近调整的速度向主副本所在计算机节点发送写请求。
本实施例考虑到主副本所在计算机节点的负载能力,主副本所在计算机节点根据处理各写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈,并将各写请求对应的判断结果发送给客户端,以供客户端根据服务器端的负载状况,动态调整写请求发送速度,提升了服务器端的吞吐率,同时避免服务器端因为负载过重而停止响应数据访问请求方法简单,易于实施。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种分布式系统中的数据写方法,其特征在于,包括:
在预设等待时间周期内,待写数据的主副本所在计算机节点接收客户端以预先获取的速度发送的待写数据的写请求,并将各所述写请求放入等待队列中;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
经过所述预设等待时间周期后,所述主副本所在计算机节点基于两阶段提交协议将所述等待队列中的写请求批量完成,并根据所述主副本所在计算机节点处理各所述写请求时的性能状态,判断所述主副本所在计算机节点是否已达到性能瓶颈;
将各所述写请求对应的判断结果发送给所述客户端,以供所述客户端根据各所述写请求对应的判断结果调整所述速度,以最近调整的所述速度向所述主副本所在计算机节点发送写请求。
2.根据权利要求1所述的方法,其特征在于,所述主副本所在计算机节点基于两阶段提交协议将所述等待队列中的写请求批量完成的步骤具体包括:
所述主副本所在计算机节点将所述等待队列中的各写请求发送到待写数据的所有从副本所在计算机节点,以供所有所述从副本所在计算机节点根据各所述写请求执行写操作;其中,将所述待写数据的副本中除所述主副本以外的副本作为所述待写数据的从副本;
所述主副本所在计算机节点根据所有所述从副本所在计算机节点返回的各所述写请求的写操作结果确定各所述写请求的最终写操作结果,并将各所述写请求的最终写操作结果发送给所述客户端。
3.根据权利要求1所述的方法,其特征在于,根据所述主副本所在计算机节点处理各所述写请求时的性能状态,判断所述主副本所在计算机节点是否已达到性能瓶颈的步骤具体包括:
若所述主副本所在计算机节点的CPU利用率大于第一预设阈值、所述主副本所在计算机节点的内存利用率大于第二预设阈值,或者所述主副本所在计算机节点的磁盘I/O速度小于第三预设阈值,则获知所述主副本所在计算机节点已达到性能瓶颈;
否则,获知所述主副本所在计算机节点未达到性能瓶颈。
4.一种分布式系统中的数据写方法,其特征在于,包括:
按照预先获取的速度将待写数据的写请求发送到待写数据的主副本所在计算机节点;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
接收所述主副本所在计算机节点返回的各所述写请求对应的判断结果,根据各所述写请求对应的判断结果调整所述速度;其中,所述判断结果为所述主副本所在计算机节点在处理各所述写请求时已达到性能瓶颈或未达到性能瓶颈,所述判断结果根据所述主副本所在计算机节点处理各所述写请求时的性能状态获取;
按照最近调整的所述速度向所述主副本所在计算机节点发送写请求。
5.根据权利要求4所述的方法,其特征在于,根据各所述写请求对应的判断结果调整所述速度的步骤具体包括:
若当前接收的判断结果为已达到性能瓶颈,则将上次调整后的速度调低。
6.根据权利要求5所述的方法,其特征在于,通过以下公式将上次调整后的速度:
S'=S*(1-e-M);
其中,S为本次调整后的所述速度,S'为上次调整后的所述速度,M为第一预设常数。
7.根据权利要求5所述的方法,其特征在于,根据所述判断结果调整所述速度的步骤还包括:
若当前接收的判断结果为未达到性能瓶颈,且紧邻当前接收的判断结果之前,包括当前接收的判断结果连续Q个判断结果均为未达到性能瓶颈,则将上次调整后的速度调高;其中,Q为预设个数的倍数。
8.根据权利要求7所述的方法,其特征在于,通过以下公式将上次调整后的所述速度调高:
S'=S*(1+e-N);
其中,S为本次调整后的所述速度,S'为上次调整后的所述速度,N为第二预设常数。
9.一种分布式系统中的服务器,其特征在于,包括:
接收模块,用于在预设等待时间周期内,接收客户端以预先获取的速度发送的待写数据的写请求,并将各所述写请求放入等待队列中;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
判断模块,用于经过所述预设等待时间周期后,基于两阶段提交协议将所述等待队列中的写请求批量完成,并根据主副本所在计算机节点处理各所述写请求时的性能状态,判断主副本所在计算机节点是否已达到性能瓶颈;
第一发送模块,用于将各所述写请求对应的判断结果发送给所述客户端,以供所述客户端根据各所述写请求对应的判断结果调整所述速度,以最近调整的所述速度向所述主副本所在计算机节点发送写请求。
10.一种分布式系统中的客户端,其特征在于,包括:
第二发送模块,用于按照预先获取的速度将待写数据的写请求发送到待写数据的主副本所在计算机节点;其中,将所述待写数据的任一副本作为所述待写数据的主副本;
调整模块,用于接收所述主副本所在计算机节点返回的各所述写请求对应的判断结果,根据各所述写请求对应的判断结果调整所述速度;其中,所述判断结果为所述主副本所在计算机节点在处理各所述写请求时已达到性能瓶颈或未达到性能瓶颈,所述判断结果根据所述主副本所在计算机节点处理各所述写请求时的性能状态获取;
第三发送模块,用于按照最近调整的所述速度向所述主副本所在计算机节点发送写请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910136605.6A CN111611068B (zh) | 2019-02-25 | 2019-02-25 | 分布式系统中的数据写方法、服务器及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910136605.6A CN111611068B (zh) | 2019-02-25 | 2019-02-25 | 分布式系统中的数据写方法、服务器及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611068A true CN111611068A (zh) | 2020-09-01 |
CN111611068B CN111611068B (zh) | 2022-07-15 |
Family
ID=72202895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910136605.6A Active CN111611068B (zh) | 2019-02-25 | 2019-02-25 | 分布式系统中的数据写方法、服务器及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611068B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356839A (zh) * | 2022-03-17 | 2022-04-15 | 飞腾信息技术有限公司 | 处理写操作的方法、设备、处理器及设备可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103986694A (zh) * | 2014-04-23 | 2014-08-13 | 清华大学 | 分布式计算机数据存储系统中多副本一致性的控制方法 |
WO2015039569A1 (zh) * | 2013-09-22 | 2015-03-26 | 华为技术有限公司 | 副本存储装置及副本存储方法 |
CN109358816A (zh) * | 2018-10-19 | 2019-02-19 | 网宿科技股份有限公司 | 一种分布式存储系统的流控方法及装置 |
-
2019
- 2019-02-25 CN CN201910136605.6A patent/CN111611068B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015039569A1 (zh) * | 2013-09-22 | 2015-03-26 | 华为技术有限公司 | 副本存储装置及副本存储方法 |
CN103986694A (zh) * | 2014-04-23 | 2014-08-13 | 清华大学 | 分布式计算机数据存储系统中多副本一致性的控制方法 |
CN109358816A (zh) * | 2018-10-19 | 2019-02-19 | 网宿科技股份有限公司 | 一种分布式存储系统的流控方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356839A (zh) * | 2022-03-17 | 2022-04-15 | 飞腾信息技术有限公司 | 处理写操作的方法、设备、处理器及设备可读存储介质 |
CN114356839B (zh) * | 2022-03-17 | 2022-06-03 | 飞腾信息技术有限公司 | 处理写操作的方法、设备、处理器及设备可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111611068B (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7422856B2 (ja) | ノードデータ同期方法及び装置、システム、電子機器、記憶媒体並びにコンピュータプログラム | |
JP2024050784A (ja) | ブロックチェーンネットワークにおける効率的な伝播のための確率的リレー | |
US20150120854A1 (en) | Subscriber based priority of messages in a publisher-subscriber domain | |
CN109960671B (zh) | 一种数据传输系统、方法及计算机设备 | |
JP2000507428A (ja) | 有限メモリコンピュータシステム上におけるクライアント管理フロー制御方法及び装置 | |
CN112261135A (zh) | 基于一致性协议的节点选举方法、系统、装置及设备 | |
JP2023520057A (ja) | マイクロサービス構成用方法、装置、電子デバイス、システム及び記憶媒体 | |
CN111666167A (zh) | 一种对输入事件读取处理优化方法、非易失性存储器及终端设备 | |
CN111611068B (zh) | 分布式系统中的数据写方法、服务器及客户端 | |
US20130238871A1 (en) | Data processing method and apparatus, pci-e bus system, and server | |
US9118597B2 (en) | Method and system for requester virtual cut through | |
CN113268329A (zh) | 一种请求调度方法、装置及存储介质 | |
WO2020248633A1 (zh) | 群成员管理和群消息处理的方法、装置、设备及存储介质 | |
CN105868002B (zh) | 一种用于在分布式计算中处理重发请求的方法与设备 | |
WO2015066077A1 (en) | Node control in a distributed peer-to-peer network | |
US10616317B2 (en) | Method and system for affinity load balancing | |
CN109992447B (zh) | 数据复制方法、装置及存储介质 | |
US9021123B2 (en) | Method and system for responder side cut through of received data | |
US10250515B2 (en) | Method and device for forwarding data messages | |
CN110928693B (zh) | 一种计算设备及资源分配方法 | |
US11108663B1 (en) | Ring control data exchange system | |
CN114363988A (zh) | 分簇方法、装置和电子设备 | |
CN114095907A (zh) | 蓝牙连接的控制方法、装置及设备 | |
CN113949666A (zh) | 流量控制方法、装置、设备及系统 | |
CN115883315B (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 |