CN110502460A - 数据处理的方法和节点 - Google Patents
数据处理的方法和节点 Download PDFInfo
- Publication number
- CN110502460A CN110502460A CN201810465188.5A CN201810465188A CN110502460A CN 110502460 A CN110502460 A CN 110502460A CN 201810465188 A CN201810465188 A CN 201810465188A CN 110502460 A CN110502460 A CN 110502460A
- Authority
- CN
- China
- Prior art keywords
- client
- node
- host node
- operation log
- information
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供了一种数据处理的方法和节点,该方法适用于包括主节点和N个备节点的集群中,N为大于1的正整数,该方法包括:主节点接收客户端发送的第一注册请求,该第一注册请求包括该客户端的信息;该主节点确定该主节点的硬盘中存储有该客户端的信息;该主节点根据该第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和该客户端的信息存储在该主节点的内存中,其中,该第一操作日志为该第一注册请求的操作日志。本申请实施例的技术方案能够在客户端的保活阶段,降低集群中节点的硬盘的IO开销,从而提高集群的稳定性。
Description
技术领域
本申请涉及信息技术领域,并且更具体地,涉及一种集群环境中数据处理的方法和节点。
背景技术
在多处理系统中,多个客户端或模块可能同时申请对总线的使用权,为避免产生总线冲突,需由总线仲裁机构合理地控制和管理系统中需要占用总线的申请者,在多个申请者同时提出总线要求时,以一定的仲裁方法判断应获得对总线使用权的申请者。仲裁方法可以分为集中仲裁和分布式仲裁。
其中,分布式仲裁所在的系统可以称为分布式系统,分布式系统包含若干个节点,这若干个节点形成仲裁集群。仲裁集群可以整合资源,作为一个整体对外提供服务。仲裁集群中最多只允许一个主节点。目前,有多种仲裁算法选取主节点,例如,Leader选举算法、Raft选举算法等。
但是,在仲裁过程中需要进行保活操作,即客户端需要向分布式系统的中的节点周期性的发送注册请求,该注册请求可以看作为一次写操作。每次写操作都会进行落盘,即将写操作的操作日志存储在主节点和备节点的硬盘中。若分布式系统中的客户端数量较大时,大量客户端均在保活操作的时间间隔内向节点发起一次写操作,每次写操作均会进行落盘,因此该集群中节点的输入/输出(Input/Output,IO)负载较大,从而导致集群的稳定性降低。
发明内容
本申请提供一种数据处理的方法和节点,能够在客户端的保活阶段,降低集群中节点硬盘的IO开销,从而提高集群的稳定性。
第一方面,提供了一种数据处理的方法,该方法适用于包括主节点和N个备节点的集群中,所述N为大于1的正整数,该方法包括:
主节点接收客户端发送的第一注册请求,该第一注册请求包括该客户端的信息;
该主节点确定该主节点的硬盘中存储有该客户端的信息;
该主节点根据该第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和该客户端的信息存储在该主节点的内存中,其中,该第一操作日志为该第一注册请求的操作日志。
在本申请实施例的技术方案中,在客户端的保活阶段,通过在主节点和备节点的内存中存储操作日志,能够降低集群中节点的硬盘的IO开销,避免在集群IO负载较高时存在的误判问题,从而提高集群的稳定性。
结合第一方面,在第一方面的某些实现方式中,该主节点根据该第一注册请求与N个备节点进行第一一致性协议处理,包括:
该主节点根据该第一注册请求生成该第一操作日志;
该主节点将该第一操作日志转发至N个备节点;
该主节点接收到N个备节点发送的第一响应消息,该第一响应消息用于表示N个备节点完成该第一操作日志在N个备节点的内存中的备份。
在本申请实施例的技术方案中,在客户端的保活阶段,通过在备节点的内存中备份客户端的操作日志,从而备节点在完成操作日志的备份时向主节点发送响应消息,主节点在内存中执行该操作日志,能够降低集群中节点的硬盘的IO开销。
结合第一方面,在第一方面的某些实现方式中,在该主节点接收客户端发送的第一注册请求之前,该方法还包括:
该主节点接收所述客户端发送的第二注册请求,该第二注册请求包括该客户端的信息;
该主节点确定该主节点的硬盘中未存储有该客户端的信息;
该主节点根据该第二注册请求与N个备节点进行第一一致性协议处理,将第二操作日志和该客户端的信息存储在该主节点的内存中,其中,该第二操作日志为该第二注册请求的操作日志;
该主节点根据所述第二注册请求与N个备节点进行第二一致性协议处理,将第三操作日志和该客户端的信息存储在该主节点的硬盘中,其中,该第三操作日志为该第二注册请求的操作日志。
应理解,第二注册请求可以为客户端在主节点进行初始化注册阶段的请求,在主节点接收到第二注册请求后经过一致性协议处理,在主节点的内存中和硬盘中存储该客户端的信息。
结合第一方面,在第一方面的某些实现方式中,该主节点根据该第二注册请求与N个备节点进行第二一致性协议处理,包括:
该主节点根据该第二注册请求生成该第三操作日志;
该主节点将该第三操作日志转发至N个备节点;
该主节点接收到N个备节点发送的第二响应消息,该第二响应消息用于表示N个备节点完成该第三操作日志在N个备节点的硬盘中的备份。
在本申请实施例的技术方案中,将客户端的信息存储在主节点的硬盘中之前,该主节点将包括客户端的信息的操作日志转发至备节点,当收到备节点发送的响应消息即表示备节点处已经完成操作日志在备节点的硬盘中的备份时,主节点执行该操作日志,即在主节点的硬盘中存储客户端的信息。
结合第一方面,在第一方面的某些实现方式中,在该主节点根据该第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和该客户端的信息存储在该主节点的内存中之后,该方法还包括:
在预设时间内该主节点未接收到该客户端发送的该第一注册请求时,该主节点删除该客户端的信息。
在本申请实施例的技术方案中,在预设时间内该主节点未接收到该客户端发送的该第一注册请求时,意味着该客户端此时出现故障,因此需要删除主节点中存储的该客户端的信息,从而减少主节点的负载。
结合第一方面,在第一方面的某些实现方式中,该主节点删除该客户端的信息包括该主节点删除该主节点的内存中的该客户端的信息和该主节点删除该主节点的硬盘中的该客户端的信息。
结合第一方面,在第一方面的某些实现方式中,该主节点删除该客户端的信息,包括:
该主节点与N个备节点进行第一一致性协议处理,将第四操作日志存储在该主节点的内存中,该第四操作日志为删除该客户端的信息的操作日志;
该主节点与N个备节点进行第二一致性协议处理,将第五操作日志存储在该主节点的硬盘中,该第五操作日志为删除该客户端的信息的操作日志;
该主节点执行该第五操作日志,删除该主节点的硬盘中的该客户端的信息。
在本申请实施例的技术方案中,在删除节点中存储的客户端的信息时,优先删除节点的硬盘中的客户端的信息,从而避免在节点出现重启时,当节点的内存中的客户端删除时误判节点的硬盘中的客户端的信息已经删除,从而确保减少节点的负载。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:
在删除该主节点的硬盘中的该客户端的信息时,该主节点执行该第四操作日志删除该主节点的内存中的该客户端的信息。
第二方面,提供了一种节点,该节点为包括主节点和N个备节点的集群中的主节点,所述N为大于1的正整数,该节点包括:
服务端模块和第一处理模块;
该服务端模块,用于接收客户端发送的第一注册请求,所述第一注册请求包括所述客户端的信息;
该第一处理模块,用于确定所述主节点的硬盘中存储有所述客户端的信息;
该第一处理模块,还用于根据所述第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第一操作日志为所述第一注册请求的操作日志。
在本申请实施例的技术方案中,通过在主节点和备节点的内存中存储客户端保活时的操作日志,能够降低集群中客户端保活阶段节点硬盘中的IO开销,避免在集群IO负载较高时存在的误判问题,从而提高集群的稳定性。
结合第二方面,在第二方面的某些实现方式中,该第一处理模块具体用于:
根据该第一注册请求生成该第一操作日志;
将该第一操作日志转发至N个备节点;
接收到N个备节点发送的第一响应消息,该第一响应消息用于表示N个备节点完成该第一操作日志在N个备节点的内存中的备份。
在本申请实施例的技术方案中,在客户端的保活阶段,通过在主节点和备节点的内存中存储操作日志,能够降低集群中节点的硬盘的IO开销,避免在集群IO负载较高时存在的误判问题,从而提高集群的稳定性。
结合第二方面,在第二方面的某些实现方式中,该服务端模块还用于:接收所述客户端发送的第二注册请求,该第二注册请求包括所述客户端的信息;
在该服务端模块接收第二注册请求时,该第一处理模块还用于确定该主节点的硬盘中未存储有该客户端的信息;
该第一处理模块还用于根据该第二注册请求与N个备节点进行第一一致性协议处理,将第二操作日志和该客户端的信息存储在该主节点的内存中,其中,该第二操作日志为该第二注册请求的操作日志;
在该第一处理模块确定该主节点的硬盘中未存储有该客户端的信息时,该节点还包括第二处理模块,该第二处理模块用于:
根据该第二注册请求与N个备节点进行第二一致性协议处理,将第三操作日志和该客户端的信息存储在该主节点的硬盘中,其中,该第三操作日志为该第二注册请求的操作日志。
应理解,第二注册请求可以为客户端在主节点进行初始化注册阶段的请求,在主节点接收到第二注册请求后经过一致性协议处理,在主节点的内存中和硬盘中存储该客户端的信息。
结合第二方面,在第二方面的某些实现方式中,该第二处理模块具体用于:
根据该第二注册请求生成该第三操作日志;
将该第三操作日志转发至N个备节点;
接收到N个备节点发送的第二响应消息,该第二响应消息用于表示N个备节点完成该第三操作日志在N个备节点的硬盘中的备份。
在本申请实施例的技术方案中,将客户端的信息存储在主节点的硬盘中之前,该主节点将包括客户端的信息的操作日志转发至备节点,当收到备节点发送的响应消息,即表示备节点处已经完成操作日志在备节点的硬盘中的备份时,主节点执行该操作日志,即在主节点的硬盘中存储客户端的信息。
结合第二方面,在第二方面的某些实现方式中,在预设时间内该第一处理模块未接收到该客户端发送的该第一注册请求时,该第一处理模块和该第二处理模块还用于删除该客户端的信息。
在本申请实施例的技术方案中,在预设时间内该主节点未接收到该客户端发送的该第一注册请求时,意味着该客户端此时出现故障,因此需要删除主节点中存储的该客户端的信息,从而减少主节点的负载。
结合第二方面,在第二方面的某些实现方式中,该第二处理模块具体用于:
在该第一处理模块与N个备节点进行第一一致性协议处理,将第四操作日志存储在该主节点的内存中,该第四操作日志为删除该客户端的信息的操作日志时,该第二处理模块与N个备节点进行第二一致性协议处理,将第五操作日志存储在该主节点的硬盘中,该第五操作日志为删除该客户端的信息的操作日志;
该第二处理模块执行该第五操作日志,删除该主节点的硬盘中的该客户端的信息。
在本申请实施例的技术方案中,在删除节点中存储的客户端的信息时,优先删除节点的硬盘中的客户端的信息,从而避免在节点出现重启时,当节点的内存中的客户端删除时误判节点的硬盘中的客户端的信息已经删除,从而确保减少节点的负载。
结合第二方面,在第二方面的某些实现方式中,该第一处理模块还用于:
在该第二处理模块删除该主节点的硬盘中的该客户端的信息时,该第一处理模块执行该第四操作日志删除该主节点的内存中的该客户端的信息。
可选地,当主节点删除主节点的硬盘和内存中的该客户端的信息后,主节点会通知集群中的其它客户端,存储在主节点的客户端的信息已经删除,集群中的多个客户端可以开始竞争,最终竞争成功的客户端可以对主节点进行写操作,将其客户端的信息存储在主节点。
第三方面,提供了一种节点,该节点包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,以使得所述节点执行上述第一方面或第一方面中的任一种可能实现方式中的方法。
第四方面,提供了一种集群,该集群包括N个备节点和上述任一方面或任一方面中的任一种可能实现方式中的节点。
第五方面,提供一种可读存储介质,包括程序或指令,当所述程序或指令在计算机上运行时,根据上述第一方面或其任一种可能实现方式中的方法被执行。
第六方面,提供了一种包含指令的计算机程序产品,其在计算机上运行时,使得计算机执行上述第一方面或其任一种可能实现方式中的方法。
附图说明
图1是根据现有技术中数据处理方法的架构图。
图2是根据本申请实施例的应用场景的示意图。
图3根据本申请实施例中的数据处理的方法的交互流程图。
图4根据本申请实施例中数据处理的方法的架构图。
图5是根据本申请一个实施例的节点的示意性框图。
图6是根据本申请另一个实施例的节点的示意性框图。
图7是根据本申请另一个实施例的节点的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为便于理解,首先介绍一下本申请实施例中所涉及的相关术语。
节点:在数据库系统中,用于执行特定操作的网络实体,具体可以为一台物理机或者一台虚拟机。不同的节点根据其所提供的功能可以具有不同的名称。
主节点:在分布式系统中,处理所有客户端的交互,操作日志复制等。
例如,在Raft算法中的Leader节点,在一次Raft算法执行流程中只有一个Leader节点。
备节点:在分布式系统中,完成主节点处生成操作日志的备份。
例如,在Raft算法中的Follower节点,Follower节点类似选民可以投票选举Leader节点。
需要说明的是,Follower节点在集群中也可以接收客户端发送的请求,然后将客户端的请求转发至Leader节点,由Leader节点处理该请求
内存模式运行:即将数据保存到内存缓存中,不需要将数据写入硬盘中。
持久化模式运行:即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等。
一致性:就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。同时,一致性也是指事务的基本特征或特性相同,其他特性或特征相类似。
Paxos算法:是一种基于消息传递且具有高度容错特性的一致性算法,其需要解决的问题就是如何在一个可能发生异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。
图1为现有技术中数据处理方法的架构图,如图1所示,在现有技术中集群中包括主节点和N个备节点,例如1个主节点和2个备节点。
应理解,图1中所示的集群中主节点和备节点各连接了一个客户端,但在集群中主节点或备节点实际可能连接多个客户端,图1中以连接一个客户端为例进行说明,本申请对此不作限定。
下面将结合图1以一次Raft/Paxos算法的执行流程为例进行说明。
需要说明的是,图1中节点包括的一致性处理模块、日志持久化模块、数据存储模块可以包括在同一个模块中,本申请对此不作限定。
步骤一:主节点接收客户端发送的注册请求,将注册请求通过一致性处理模块进行处理。
步骤二:一致性模块中的算法将注册请求进行处理,生成该注册请求的操作日志;并将该操作日志发送至备节点,同时在日志持久化模块中存储该操作日志,即在主节点的硬盘中持久化存储一份操作日志;
备节点接收到操作日志后,将操作日志在备节点的硬盘中进行落盘,然后向主节点发送响应消息,响应消息用于表示备节点已经完成在硬盘中将操作日志的备份。
应理解,操作日志中包括操作内容和客户端的信息,其中操作内容可以是读数据、或者,写数据、或者,删除数据。
步骤三:主节点接收到响应消息后,会执行该操作日志中的内容,操作日志的内容可以是读数据、写数据或者删除数据;
步骤四:在主节点完成操作日志后,即将操作日志中的客户端的信息存储到数据存储模块中。
例如,完成数据储存后,主节点向客户端发送响应消息,通知客户端本次请求已处理完成。
图1所示的系统可以对外提供仲裁或主节点的选举机制,即按照上述的写操作来执行的。仲裁过程需要保活,保活可以理解为在预设的时间内客户端需要发起一次写操作,在上述流程中每次写操作的操作日志都需要落盘,即操作日志要存储到日志持久化模块中。
保活操作可以理解为客户端与主节点处于连接状态,即客户端周期性的向主节点发起写操。若主节点超过保活时间未接收到客户端的注册请求时,则说明该客户端出现故障。
可选地,保活时间可以为预设的时间间隔。例如,在生存时间值(Time To Live,TTL)。根据图1所示的算法架构进行仲裁保活时,存在以下的问题:
第一、系统中的每个客户端在仲裁保活时,需要周期性的发起写操作,每次写操作都需要落盘(为本地持久化存储)。如果客户端的数量较多,就会产生非常大的输入\输出(Input/Output,IO)负载。
例如,在大规模集群中,客户端的数量会有上万个,假设1000个客户端,每个客户端的保活时间间隔是100ms,那每秒就会发起100000次IO请求,对系统的负载非常大。
第二、分布式系统还对外提供数据存储功能,如果客户端的保活操作占用了大量IO,从而就会导致存储功能性能下降。
第三、系统IO负载大时,保活操作由于IO竞争而延迟,就会导致主节点在预设的时间内未收到客户端的注册请求,而导致主节点误判认为客户端已失效,进而使集群不稳定。
综上所述,在集群中迫切需要一种数据处理的方法,即在客户端的保活阶段降低集群中节点的硬盘的较大IO负载,并且能够提高集群的稳定性。
图2示出了本申请实施例的数据处理方法的场景的示意图。在图2中以1个主节点和2个备节点为例进行说明,应理解在集群中可以包括多个备节点,本申请对此不作限定。
应理解,在图2中以业务实例1、业务实例2、业务实例3举例说明,本申请对此不作限定。其中,业务实例可以对客户端进行调用。如图2所示,本申请的实施例主要在服务器(包括主服务器和备服务器)的内部执行。例如,业务实例2可以连接备服务器,向备服务器发送请求。在分布式系统的内部,则为备服务器接收业务实例2的请求后,将该请求转发至主服务器进行处理。
图2中每个服务器连接着一个业务实例,实际系统中每个服务器上会连接着数千业务实例。每个业务实例与服务器建立连接,假设设置保活超时为1000ms,并按一定的周期(100ms)发送保活请求。如果服务器1000ms内,没有收到或者把没有将保活信息在三个服务器间同步,主服务器就会判定该业务实例失效,删除业务实例,并且通知其他业务实例,有业务实例下线。本申请的实施例主要集中在客户端保活阶段的数据处理。
在大规模集群中客户端的数量会有上万个,在客户端的保活阶段,会对集群产生较大的IO负载。因此,本申请的数据处理的方法能够在客户端的保活阶段,降低集群中节点的硬盘的IO负载,并且能够增强集群稳定性。
下面将结合具体的例子详细描述本申请实施例。应注意,这只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围。
应理解,在本申请的各实施例中,“第一”、“第二”等仅是为了指代不同的对象,并不表示对指代的对象有其它限定。
图3示出了本申请实施例的数据处理方法300的交互性流程图。该方法300可以应用于方法适用于包括主节点和N个备节点的集群中,其中N为大于1的正整数。
应理解,在本申请的实施例中,提供了在客户端的保活阶段在内存中运行的一致性协议处理的方法,不需要将客户端在保活阶段的操作日志在主节点和备节点进行落盘,即不需要将保活阶段的操作日志存储到主节点和备节点的硬盘中,从而减少了在客户端的保活阶段集群中的节点的硬盘中的IO负载,提高了集群的稳定性。
S310,客户端向主节发送第一注册请求,该第一注册请求包括所述客户端的信息。
例如,第一注册请求中可以包括客户端的名称信息或者客户端的标识信息。主节点接收客户端发送的第一注册请求,根据第一注册请求中包括的客户端的信息,能够识别该客户端。
S320,主节点确定在该主节点的硬盘中存储有该客户端的信息。
主节点接收到客户端发送的第一注册请求后,从第一注册请求中获取客户端的信息。主节点会确认在该主节点的硬盘中是否包括该客户端的信息。若主节点确定在主节点的硬盘中存储有该客户端的信息。即在第一注册请求之前,该节点已经收到该客户端的信息并将该客户端的信息存储在主节点的硬盘中。
应理解,主节点确定在该主节点的硬盘中存储有该客户端的信息,也就是说,客户端向主节点发送的第一注册请求,并非首次注册请求。即该客户端在第一注册请求之前已经完成了在该主节点处的注册,本次客户端发送的第一注册请求可以理解为保活操作。
S330,主节点根据第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第一操作日志为所述第一注册请求的操作日志。
应理解,在本申请的实施例中,第一一致性协议处理可以为在内存模式运行的算法,即经过第一一致性协议处理后的数据可以存储在内存中,不需要在硬盘中进行存储。
可选地,主节点根据所述第一注册请求与N个备节点进行第一一致性协议处理可以包括以下流程:
主节点根据所述第一注册请求生成所述第一操作日志;
主节点将所述第一操作日志转发至N个备节点;
主节点接收到N个备节点发送的第一响应消息,所述第一响应消息用于表示N个备节点完成所述第一操作日志在N个备节点的内存中的备份。
需要说明的是,第一操作日志为根据第一注册请求生成的操作日志,第一操作日志可以包括写操作和客户端的信息。
应理解,主节点确定在该主节点的硬盘中存储有该客户端的信息,即客户端发送的第一注册请求可以理解为保活操作。在客户端发送第一注册请求之前,客户端可以在主节点完成初始化注册。
例如,客户端在主节点的初始化注册阶段可以包括以下流程:
主节点接收所述客户端发送的第二注册请求,所述第二注册请求包括所述客户端的信息;
主节点确定所述主节点的硬盘中未存储有所述客户端的信息;
所述主节点根据所述第二注册请求与N个备节点进行第一一致性协议处理,将第二操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第二操作日志为所述第二注册请求的操作日志;
所述主节点根据所述第二注册请求与N个备节点进行第二一致性协议处理,将第三操作日志和所述客户端的信息存储在所述主节点的硬盘中,其中,所述第三操作日志为所述第二注册请求的操作日志。
需要说明的是,在本申请的实施例中,在主节点写操作成功的客户端,即主节点的硬盘中存储的客户端的信息的客户端为在多个客户端中通过竞争从而写操作成功的客户端。
例如,针对不同的业务实例,可能有不同的客户端在主节点写操作成功。本申请实施例中的客户端可以为某一业务实例中在主节点写操作成功的一个客户端,或者,可以为不同种类的业务实例中,每类业务实例中在主节点写操作成功的多个客户端,本申请对此不作限定。
可选地,在本申请的一个实施例中,向主节点发送第二注册请求的客户端可以是与主节点连接的多个客户端中,通过多个客户端竞争后对主节点写操作成功的客户端。
可选地,在本申请的一个实施例中,向主节点发送第二注册请求的客户端可以是与备节点连接的客户端。例如,在集群中备节点连接的客户端优先于主节点连接的客户端进行启动的情况下,备节点连接的客户端与主节点连接的客户端进行竞争,最终竞争成功的客户端。
需要说明的是,在本申请的实施例中,主节点和备节点连接多个客户端,多个客户端通过竞争后竞争成功的客户端对主节点的写操作成功,将该客户端的信息写入主节点的硬盘中。
作为一个可选的实施例,主节点根据所述第二注册请求与N个备节点进行第二一致性协议处理可以包括以下流程:
主节点根据所述第二注册请求生成所述第三操作日志;
主节点将所述第三操作日志转发至N个备节点;
主节点接收到N个备节点发送的第二响应消息,所述第二响应消息用于表示N个备节点完成所述第三操作日志在N个备节点的硬盘中的备份。
应理解,在本申请的实施例中,第二一致性协议处理可以为在持久化模式运行的算法,即经过第二一致性协议处理后的数据可以存储在硬盘中。
需要说明的是,第二操作日志为根据第二注册请求生成的操作日志,第二操作日志可以包括写操作和客户端的信息。即第一操作日志和第二操作日志包括相同的客户端信息,不同之处在于,第一操作日志存储在主节点的内存中,第二操作日志存储在主节点的硬盘中。
根据上述流程可以看出,客户端在主节点的初始注册阶段,需要将注册请求生成的操作日志存储在主节点的内存以及主节点的硬盘中。
作为一个可选的实施例,在主节点根据第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中之后,所述方法还包括:
在预设时间内所述主节点未接收到所述客户端发送的所述第一注册请求时,所述主节点删除所述客户端的信息。
例如,在生存时间值(Time To Live,TTL)内主节点没有收到客户端发送的第一注册请求,可以认为客户端当前处于故障阶段,即客户端与主节点不处于连接状态。
因此,主节点可以删除存储在主节点的该客户端的信息。其中,主节点删除该客户端的信息可以包括主节点删除所述主节点的内存中的所述客户端的信息和所述主节点删除所述主节点的硬盘中的所述客户端的信息。
作为一个可选的实施例,在本申请的实施例中,主节点删除所述客户端的信息可以包括以下流程:
主节点与N个备节点进行第一一致性协议处理,将第四操作日志存储在所述主节点的内存中,所述第四操作日志为删除所述客户端的信息的操作日志;
主节点与N个备节点进行第二一致性协议处理,将第五操作日志存储在所述主节点的硬盘中,所述第五操作日志为删除所述客户端的信息的操作日志;
主节点执行所述第五操作日志,删除所述主节点的硬盘中的所述客户端的信息。
在主节点删除所述主节点的硬盘中的所述客户端的信息后,主节点可以执行所述第四操作日志删除所述主节点的内存中的所述客户端的信息。
需要说明的是,当客户端出现故障时,即未在预设时间内向主节点发送第一注册请求,主节点可以删除存储在主节点内存中和硬盘中的客户端的信息。在删除客户端的信息的过程中,可以先删除主节点的硬盘中的客户端的信息,再删除主节点的内存中的客户端的信息。
应理解,若先删除主节点的内存中的客户端的信息,在主节点进行重启后会默认主节点中存储的客户端的信息已删除,而主节点的硬盘中的客户端的信息可能还未删除。因此,在删除客户端的信息的过程中,可以避免出现上述的问题先删除主节点的硬盘中的客户端的信息。
可选地,在本申请的一个实施例中,当主节点删除主节点的硬盘和内存中的该客户端的信息后,主节点会通知集群中的其它客户端,存储在主节点的客户端的信息已经删除,集群中的多个客户端可以开始竞争,最终竞争成功的客户端可以对主节点进行写操作,将其客户端的信息存储在主节点。
需要说明的是,在主节点成功注册的客户端可以为针对某一类业务实例的多个客户端通过竞争后写操作成功的客户端。当该客户端故障时,主节点会删除在主节点的硬盘和内存中存储的该客户端的信息。在删除完该客户端的信息后,主节点会通知针对某一类业务实例的多个客户端中的其它客户端,此时其它客户端可以通过竞争在主节点注册。
在本申请的实施例中,提供了一种数据处理的方法,通过在主节点和备节点处以内存模式和持久化模式运行一致性协议处理数据,从而降低在客户端保活阶段对主节点和备节点的硬盘的IO负载。具体地,在客户端的保活阶段通过运行内存模式的一致性协议数据处理,从而不需要对主节点和备节点的硬盘进行操作日志的存储。
图4示出了本申请实施例的数据处理方法的架构图。图4所示的架构图可以应用于图3所示数据处理的方法300,但本申请实施例不限于此。
在本申请的实施例中,需要说明的是,第一一致性协议处理可以为在内存模式运行的算法,即经过第一一致性协议处理后的数据可以存储在内存中,不需要在硬盘中进行存储。第二一致性协议处理可以为在持久化模式运行的算法,即经过第二一致性协议处理后的数据可以存储在硬盘中。
应理解,在图4中日志内存化模块表示将操作日志存储在节点的内存中,即将数据的一致性协议处理以内存的模式运行。其中,操作日志中包括操作内容和客户端的信息,其中操作内容可以是读数据、或者,写数据、或者,删除数据。数据内存存储模块中存储的为操作日志中包括的客户端的信息。日志持久化模块表示将操作日志存储在节点的硬盘中,即将数据的一致性协议处理以持久化的模式运行,此时操作日志中包括的客户端的信息可以存储在数据存储模块中,例如,存储在节点的硬盘中。
本申请的实施例相对于现有技术中数据处理方法的架构而言,新增了日志内存化模块,在现有技术中的算法架构中只存在日志持久化模块,即客户端的操作日志均需要落盘,存储在节点的硬盘中,从而造成集群中节点的硬盘的IO负载较大。
需要说明的是,图4中节点的内存化实例包括的第一一致性处理模块、日志内存化模块、数据内存存储模块可以包括在同一个模块中,节点的持久化实例包括的第二一致性处理模块、日志持久化模块、数据存储模块可以包括在同一个模块中,本申请对此不作限定。
图4所示的方法400,可以包括但不限于以下阶段:
第一阶段:客户端的初始化注册阶段,客户端的信息在主节点中还未存储,所有客户端与主节点首次建立连接的阶段,主节点需要把客户端的信息存储在主节点的硬盘中。在客户端的初始化注册阶段,操作日志需要存储在日志内存化模块和日志持久化模块。
可选地,在本申请的一个实施例中,主节点可以与多个客户端连接,初始化阶段注册的客户端可以为多个客户端中通过竞争后对主节点写操作成功的客户端。
可选地,在本申请的一个实施例中,初始化阶段注册的客户端可以是与备节点连接的客户端。例如,在集群中备节点连接的客户端优先于主节点连接的客户端进行启动的情况下,备节点连接的客户端与主节点连接的客户端通过竞争,最终竞争成功的客户端。
第二阶段:客户端的保活阶段,客户端在TTL内发送的注册请求,其中包括的客户端状态是相同的,因此不需要在主节点的硬盘中存储客户端的信息,只需在客户端的内存中刷新。在客户端的保护阶段,操作日志只需要存储在日志内存化模块中,不需要将操作日志存储在内存持久化模块中。
第三阶段:客户端故障或客户端和主节点之间的网络断连后,主节点判断客户端状态异常,首先可以删除主节点的硬盘中的客户端的信息,然后触发删除主节点的内存中的客户端的信息。在客户端故障阶段,操作日志只需要存储在日志内存化模块中,不需要将操作日志存储在内存持久化模块中。
下面将结合图4,详细描述在本申请的实施例中数据处理的方法。
其中,在第一阶段即在客户端的初始化注册阶段,包括但不限于以下流程:
步骤一:客户端向主节点发送一个注册请求。例如,在方法300中发送的第二注册请求,该注册请求可以为一次写操作。
步骤二:主节点收到第一注册请求,将该第一注册请求通过第一一致性模块处理后,将第一操作日志转发至备节点的第一致性处理模块,同时主节点将第一操作日志存储在主节点的日志内存化模块中,即将操作日志存储到主节点的内存中。
步骤三:在主节点将第一操作日志存储在主节点的内存中后,并且主节点收到备节点发送的第一响应消息,第一响应消息用于表示N个备节点完成所述第一操作日志在N个备节点的内存中的备份,即操作日志已经完成在备节点的日志内存化模块中的备份。
步骤四:完成将客户端的信息写入主节点的内中,内存实例触发一个写操作给持久化实例,即触发主节点将客户端的信息写入主节点的硬盘中。其中,内存实例可以理解为数据处理以内存模式在节点处运行,即包括图4中的第一一致性处理模块、日志内存化模块、数据内存存储模块。
步骤五:持久化实例接收到第二注册请求,将该第二注册请求通过第二一致性模块处理后,将第二操作日志转发至备节点的第二一致性处理模块,同时主节点将第二操作日志存储日志持久化模块中,即将操作日志存储在主节点的硬盘中,例如,在主节点的磁盘或SSD存储第二操作日志。其中,持久化实例可以理解为数据处理以持久化模式在节点处运行,即包括图4中的第二一致性处理模块、日志内存化、数据存储,此处数据可以存储在节点的内存中,也可以存储在节点的硬盘中。本申请实施例对此不作限定。步骤六:在主节点将第二操作日志存储在主节点的硬盘中后,并且主节点收到备节点发送的第二响应消息,第二响应消息用于表示N个备节点完成所述第二操作日志在N个备节点的硬盘中的备份,即操作日志已经完成在备节点的日志持久化模块中的备份。。
步骤七:完成将客户端的信息在主节点的数据存储模块中存储后,包括将客户端的信息存储到主节点的硬盘中,通知客户端主节点本次落盘操作已完成。
步骤八:数据内存存储模块接收到数据存储模块的写操作成功后,通知客户端注册成功。
步骤九:内存实例会通知其他客户端,有新的客户端完成注册。
其中,在第二阶段即客户端的保活阶段,包括但不限于以下流程:
需要说明的是,在本申请的实施例中,客户端的保活阶段可以只以内存模式运行,不需要运行持久化模式。即在客户端的保活阶段,可以只在主节点和备节点的日志内存化模块中存储操作日志,不需要在主节点和备节点的日志持久化模块,即不需要在主节点的硬盘中存储操作日志,从而降低集群中节点的硬盘的IO负载。
步骤一:客户端向主节点发送一个注册请求,例如,方法300中发送的第二注册请求,该注册请求可以为一次写操作。
步骤二:主节点收到第一注册请求,将该第一注册请求通过第一一致性模块处理后,将第一操作日志转发至备节点的第一一致性处理模块,同时主节点将第一操作日志存储在主节点的内存中,即将第一操作日志存储在日志内存化模块中。
步骤三:主节点将第一操作日志存储在主节点的内存中后,并且主节点收到备节点发送的第一响应消息,第一响应消息用于表示N个备节点完成所述第一操作日志在N个备节点的内存中的备份,即第一操作日志已经完成在备节点的内存持久化模块中的备份。将客户端的信息写入数据内存存储模块中。
步骤三:将客户端的信息存储在主节点的内存中后,通知客户端保活操作成功。
其中,第三阶段即在客户端故障或客户端和主节点之间的网络断连后,包括但不限于以下流程:
步骤一:客户端超过预设时间,没有向主节点发起保活操作,主节点认为该客户端出现故障,发起一次删除该客户端的信息的操作。
例如,在图3所示的数据处理的方法300中,在生存时间值(Time To Live,TTL)内主节点没有收到客户端发送的第一注册请求,可以认为客户端当前处于故障阶段,即客户端与主节点不处于连接状态。因此,主节点可以删除存储在主节点的该客户端的信息。其中,主节点删除该客户端的信息可以包括主节点删除所述主节点的内存中的所述客户端的信息和所述主节点删除所述主节点的硬盘中的所述客户端的信息。
步骤二:主节点收到该删除操作,把该删除操作请求通过第一一致性模块处理后,将第四操作日志转发至N个备节点的第一一致性处理模块,所述第四操作日志为删除所述客户端的信息的操作日志,同时主节点将第四操作日志存储在主节点的日志内存化模块中。
应理解,在本申请的实施例中,第一一致性协议处理可以为在内存模式运行的算法,即经过第一一致性协议处理后的数据可以存储在内存中,不需要在硬盘中进行存储。
步骤三:在主节点将第四操作日志存储在主节点的内存中后,并且主节点收到备节点发送的第一响应消息,第一响应消息用于表示N个备节点完成所述第四操作日志在N个备节点的内存中的备份,主节点在内存中记录删除操作,但暂不删除主节点的内存中的客户端的信息。
需要说明的是,当客户端出现故障时,即未在预设时间内向主节点发送第一注册请求,主节点可以删除存储在主节点内存中和硬盘中的客户端的信息。在删除客户端的信息的过程中,可以先删除主节点的硬盘中的客户端的信息,再删除主节点的内存中的客户端的信息。
应理解,若先删除主节点的内存中的客户端的信息,在主节点进行重启后会默认主节点中存储的客户端的信息已删除,而主节点的硬盘中的客户端的信息可能还未删除。因此,在删除客户端的信息的过程中,可以避免出现上述的问题先删除主节点的硬盘中的客户端的信息。
步骤四:内存实例触发一个删除操作给持久化实例,即触发删除主节点的硬盘中的客户端的信息。
步骤五:持久化实例接收到删除操作请求,经过第二一致性模块处理后,将第五操作日志转发至N个备节点第二一致性处理模块,所述第五操作日志为删除所述客户端的信息的操作日志,同时主节点将第五操作日志存储在主节点的硬盘中。
例如,可以将第五操作日志存储在主节点的磁盘或SSD。
步骤六:在主节点将第五操作日志存储在主节点的日志持久化模块,即将第五操作日志存储到主节点的硬盘中后,并且主节点收到备节点发送的第二响应消息,第二响应消息用于表示N个备节点完成所述第五操作日志在N个备节点的硬盘中的备份,主节点执行第五操作日志删除主节点的硬盘中的客户端的信息。
步骤七:成功删除数据存储模块中的客户端的信息,即成功删除主节点的硬盘中的客户端的信息时,通知数据内存存储模块已经成功删除主节点的硬盘中的客户端的信息。
步骤八:数据内存存储模块接收到数据存储模块成功删除客户端的信息后,主节点执行第四操作日志,删除主节点的内存中的客户端的信息。
例如,删除数据内存存储模块中的客户端的信息。
步骤九:内存实例会通知其他客户端,有客户端的信息数据删除,即认为该客户端出现故障。
可选地,在本申请的一个实施例中,当主节点删除主节点的硬盘和内存中的该客户端的信息时后,主节点会通知集群中的其它客户端,存储在主节点的客户端的信息已经删除,集群中的多个客户端可以开始竞争,最终竞争成功的客户端可以对主节点进行写操作,将其客户端的信息存储在主节点。
应理解,本申请实施例中的方式、情况、类别以及实施例的划分仅是为了描述的方便,不应构成特别的限定,各种方式、类别、情况以及实施例中的特征在不矛盾的情况下可以相结合。
上文详细描述了根据本申请实施例的数据处理的方法,通过在主节点和备节点处以内存模式和持久化模式运行一致性协议处理数据,从而降低在客户端保活阶段对集群中节点的硬盘的IO负载。具体地,在客户端的保活阶段通过运行内存模式的一致性协议数据处理,从而不需要对主节点的硬盘进行操作。应理解,本申请实施例的节点可以执行前述本申请实施例的各种方法,即以下各种产品的具体工作过程,可以参考前述方法实施例中的对应过程。
图5示出了根据本申请实施例的节点500的示意性框图(图5中的节点可以是图2或图3中的主节点)。该节点500可以具有方法中的主节点的任意功能。
如图5中的节点500可以为集群中Leader节点,该集群包括主节点和N个备节点,其中,N为大于1的正整数。
如图5所示,该节点500包括服务端模块510和第一处理模块520。
服务端模块510用于,接收客户端发送的第一注册请求,所述第一注册请求包括所述客户端的信息;
第一处理模块520用于,确定所述主节点的硬盘中存储有所述客户端的信息;
第一处理模块520还用于,根据所述第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第一操作日志为所述第一注册请求的操作日志。
应理解,节点500包括的服务端模块510和第一处理模块520的功能可以在同一个模块中执行,即服务端模块510和第一处理模块520可以包括在同一个模块中,服务端模块510的功能主要在于接收客户端发送的注册请求,并将全部的注册请求接收并发送至第一处理模块520进行处理。
在本申请的实施例中,在客户端的保活阶段,通过在主节点和备节点的内存中存储操作日志,能够降低集群中节点的硬盘的IO开销,避免在集群IO负载较高时存在的误判问题,从而提高集群的稳定性。
可选地,在本申请的一个实施例中,所述第一处理模块520具体用于:
根据所述第一注册请求生成所述第一操作日志;
将所述第一操作日志转发至N个备节点;
接收到N个备节点发送的第一响应消息,所述第一响应消息用于表示N个备节点完成所述第一操作日志在N个备节点的内存中的备份。
可选地,在本申请的一个实施例中,节点500还包括第二处理模块530,如图6所示的节点。
例如,在本申请的实施例中,所述服务端模块510还用于:接收所述客户端发送的第二注册请求,所述第二注册请求包括所述客户端的信息;
在所述服务端模块510接收第二注册请求时,所述第一处理模块520还用于确定所述主节点的硬盘中未存储有所述客户端的信息;
所述第一处理模块520还用于根据所述第二注册请求与N个备节点进行第一一致性协议处理,将第二操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第二操作日志为所述第二注册请求的操作日志;
所述节点500还包括第二处理模块530,所述第二处理模块530用于:
根据所述第二注册请求与N个备节点进行第二一致性协议处理,将第三操作日志和所述客户端的信息存储在所述主节点的硬盘中,其中,所述第三操作日志为所述第二注册请求的操作日志。
可选地,在本申请的一个实施例中,所述第二处理模块530具体用于:
根据所述第二注册请求生成所述第三操作日志;
将所述第三操作日志转发至N个备节点;
接收到N个备节点发送的第二响应消息,所述第二响应消息用于表示N个备节点完成所述第三操作日志在N个备节点的硬盘中的备份。
可选地,在本申请的一个实施例中,在预设时间内所述服务端模块510未接收到所述客户端发送的所述第一注册请求时,所述第一处理模块520和所述第二处理模块530还用于删除所述客户端的信息。
可选地,在本申请的一个实施例中,所述第二处理模块530还用于:
在所述第一处理模块510与N个备节点进行第一一致性协议处理,将第四操作日志存储在所述主节点的内存中,所述第四操作日志为删除所述客户端的信息的操作日志时,所述第二处理模块530与N个备节点进行第二一致性协议处理,将第五操作日志存储在所述主节点的硬盘中,所述第五操作日志为删除所述客户端的信息的操作日志;
所述第二处理模块530执行所述第五操作日志,删除所述主节点的硬盘中的所述客户端的信息。
可选地,在本申请的一个实施例中,第一处理模块520还用于:
在所述第二处理模块530删除所述主节点的硬盘中的所述客户端的信息时,所述第一处理模块520执行所述第四操作日志删除所述主节点的内存中的所述客户端的信息。
需要说明的是,当客户端出现故障时,即未在预设时间内向主节点发送第一注册请求,主节点可以删除存储在主节点内存中和硬盘中的客户端的信息。在删除客户端的信息的过程中,可以先删除主节点的硬盘中的客户端的信息,再删除主节点的内存中的客户端的信息。
应理解,若先删除主节点的内存中的客户端的信息,在主节点进行重启后会默认主节点中存储的客户端的信息已删除,而主节点的硬盘中的客户端的信息可能还未删除。因此,在删除客户端的信息的过程中,可以避免出现上述的问题先删除主节点的硬盘中的客户端的信息。
可选地,在本申请的一个实施例中,当主节点删除主节点的硬盘和内存中的该客户端的信息时后,主节点会通知集群中的其它客户端,存储在主节点的客户端的信息已经删除,集群中的多个客户端可以开始竞争,最终竞争成功的客户端可以对主节点进行写操作,将其客户端的信息存储在主节点。
在本申请的实施例中,提供了一种节点,通过在主节点和备节点处以内存模式和持久化模式运行一致性协议处理数据,从而降低在客户端保活阶段对主节点的IO负载,具体地,在客户端的保活阶段通过运行内存模式的一致性协议数据处理,从而不需要对主节点的硬盘进行操作。
图7示出了本申请另一个实施例的节点的示意性框图,包括至少一个处理器720(例如CPU),至少一个网络接口740或者其他通信接口,和存储器760,这些部件之间通信连接。处理器720用于执行存储器760中存储的可执行模块,例如计算机程序。存储器760可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口740(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
在一些实施方式中,存储器760存储了程序711,处理器720执行程序711,用于执行前述本申请各种实施例中的方法。
例如,节点可以用于执行上述图3中的主节点的S310接收客户端发送的第一注册请求,所述第一注册请求包括所述客户端的信息;或者S320确定所述主节点的硬盘中存储有所述客户端的信息;或者S330根据所述第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第一操作日志为所述第一注册请求的操作日志。
可选地,节点还可以包括存储器,该存储器可以存储程序代码,处理器调用存储器存储的程序代码,以实现该节点的相应功能。
可选地,处理器和存储器可以通过芯片实现。
本申请的实施例还提供了一种集群,包括N个备节点和上述的节点。
例如,集群系统可以包括上述图5以及图6所示的节点。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据包中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据包中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据包中心等数据包存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。上面的组合也应当包括在计算机可读介质的保护范围之内。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (18)
1.一种数据处理的方法,其特征在于,所述方法适用于包括主节点和N个备节点的集群中,所述N为大于1的正整数,所述方法包括:
所述主节点接收客户端发送的第一注册请求,所述第一注册请求包括所述客户端的信息;
所述主节点确定所述主节点的硬盘中存储有所述客户端的信息;
所述主节点根据所述第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第一操作日志为所述第一注册请求的操作日志。
2.根据权利要求1所述的方法,其特征在于,所述主节点根据所述第一注册请求与N个备节点进行第一一致性协议处理,包括:
所述主节点根据所述第一注册请求生成所述第一操作日志;
所述主节点将所述第一操作日志转发至N个备节点;
所述主节点接收到N个备节点发送的第一响应消息,所述第一响应消息用于表示N个备节点完成所述第一操作日志在N个备节点的内存中的备份。
3.根据权利要求1或2所述的方法,其特征在于,在所述主节点接收客户端发送的第一注册请求之前,所述方法还包括:
所述主节点接收所述客户端发送的第二注册请求,所述第二注册请求包括所述客户端的信息;
所述主节点确定所述主节点的硬盘中未存储有所述客户端的信息;
所述主节点根据所述第二注册请求与N个备节点进行第一一致性协议处理,将第二操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第二操作日志为所述第二注册请求的操作日志;
所述主节点根据所述第二注册请求与N个备节点进行第二一致性协议处理,将第三操作日志和所述客户端的信息存储在所述主节点的硬盘中,其中,所述第三操作日志为所述第二注册请求的操作日志。
4.根据权利要求3所述的方法,其特征在于,所述主节点根据所述第二注册请求与N个备节点进行第二一致性协议处理,包括:
所述主节点根据所述第二注册请求生成所述第三操作日志;
所述主节点将所述第三操作日志转发至N个备节点;
所述主节点接收到N个备节点发送的第二响应消息,所述第二响应消息用于表示N个备节点完成所述第三操作日志在N个备节点的硬盘中的备份。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在所述主节点根据所述第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中之后,所述方法还包括:
在预设时间内所述主节点未接收到所述客户端发送的所述第一注册请求时,所述主节点删除所述客户端的信息。
6.根据权利要求5所述的方法,其特征在于,所述主节点删除所述客户端的信息包括所述主节点删除所述主节点的内存中的所述客户端的信息和所述主节点删除所述主节点的硬盘中的所述客户端的信息。
7.根据权利要求5或6所述的方法,其特征在于,所述主节点删除所述客户端的信息,包括:
所述主节点与N个备节点进行第一一致性协议处理,将第四操作日志存储在所述主节点的内存中,所述第四操作日志为删除所述客户端的信息的操作日志;
所述主节点与N个备节点进行第二一致性协议处理,将第五操作日志存储在所述主节点的硬盘中,所述第五操作日志为删除所述客户端的信息的操作日志;
所述主节点执行所述第五操作日志,删除所述主节点的硬盘中的所述客户端的信息。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在删除所述主节点的硬盘中的所述客户端的信息时,所述主节点执行所述第四操作日志删除所述主节点的内存中的所述客户端的信息。
9.一种节点,其特征在于,所述节点为包括主节点和N个备节点的集群中的主节点,所述N为大于1的正整数,所述节点包括:
服务端模块和第一处理模块;
所述服务端模块,用于接收客户端发送的第一注册请求,所述第一注册请求包括所述客户端的信息;
所述第一处理模块,用于确定所述主节点的硬盘中存储有所述客户端的信息;
所述第一处理模块,还用于根据所述第一注册请求与N个备节点进行第一一致性协议处理,将第一操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第一操作日志为所述第一注册请求的操作日志。
10.根据权利要求9所述的节点,其特征在于,所述第一处理模块具体用于:
根据所述第一注册请求生成所述第一操作日志;
将所述第一操作日志转发至N个备节点;
接收到N个备节点发送的第一响应消息,所述第一响应消息用于表示N个备节点完成所述第一操作日志在N个备节点的内存中的备份。
11.根据权利要求9或10所述的节点,其特征在于,所述服务端模块还用于:接收所述客户端发送的第二注册请求,所述第二注册请求包括所述客户端的信息;
在所述服务端模块接收第二注册请求时,所述第一处理模块还用于确定所述主节点的硬盘中未存储有所述客户端的信息;
所述第一处理模块还用于根据所述第二注册请求与N个备节点进行第一一致性协议处理,将第二操作日志和所述客户端的信息存储在所述主节点的内存中,其中,所述第二操作日志为所述第二注册请求的操作日志;
所述节点还包括第二处理模块,所述第二处理模块用于:
根据所述第二注册请求与N个备节点进行第二一致性协议处理,将第三操作日志和所述客户端的信息存储在所述主节点的硬盘中,其中,所述第三操作日志为所述第二注册请求的操作日志。
12.根据权利要求11所述的节点,其特征在于,所述第二处理模块具体用于:
根据所述第二注册请求生成所述第三操作日志;
将所述第三操作日志转发至N个备节点;
接收到N个备节点发送的第二响应消息,所述第二响应消息用于表示N个备节点完成所述第三操作日志在N个备节点的硬盘中的备份。
13.根据权利要求11或12所述的节点,其特征在于,在预设时间内所述第一处理模块未接收到所述客户端发送的所述第一注册请求时,所述第一处理模块和所述第二处理模块还用于删除所述客户端的信息。
14.根据权利要求12或13所述的节点,其特征在于,所述第二处理模块具体用于:
在所述第一处理模块与N个备节点进行第一一致性协议处理,将第四操作日志存储在所述主节点的内存中,所述第四操作日志为删除所述客户端的信息的操作日志时,所述第二处理模块与N个备节点进行第二一致性协议处理,将第五操作日志存储在所述主节点的硬盘中,所述第五操作日志为删除所述客户端的信息的操作日志;
所述第二处理模块执行所述第五操作日志,删除所述主节点的硬盘中的所述客户端的信息。
15.根据权利要求14所述的节点,其特征在于,所述第一处理模块还用于:
在所述第二处理模块删除所述主节点的硬盘中的所述客户端的信息时,所述第一处理模块执行所述第四操作日志删除所述主节点的内存中的所述客户端的信息。
16.一种节点,其特征在于,所述节点为包括主节点和N个备节点的集群中的主节点,所述N为大于1的正整数,所述节点包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,以使得所述节点执行根据权利要求1至8中任一项所述的方法。
17.一种集群,包括根据权利要求9至16中任一项所述的节点和N个备节点,N为大于1的正整数。
18.一种可读存储介质,包括程序或指令,当所述程序或指令在计算机上运行时,根据权利要求1至8中任一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810465188.5A CN110502460B (zh) | 2018-05-16 | 2018-05-16 | 数据处理的方法和节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810465188.5A CN110502460B (zh) | 2018-05-16 | 2018-05-16 | 数据处理的方法和节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502460A true CN110502460A (zh) | 2019-11-26 |
CN110502460B CN110502460B (zh) | 2021-03-23 |
Family
ID=68584609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810465188.5A Active CN110502460B (zh) | 2018-05-16 | 2018-05-16 | 数据处理的方法和节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502460B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513832A (zh) * | 2020-09-27 | 2021-03-16 | 华为技术有限公司 | 一种数据的存储方法及设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101026556A (zh) * | 2007-01-10 | 2007-08-29 | 华为技术有限公司 | 一种支持服务质量的仲裁方法及装置 |
US20090313503A1 (en) * | 2004-06-01 | 2009-12-17 | Rajeev Atluri | Systems and methods of event driven recovery management |
CN101729290A (zh) * | 2009-11-04 | 2010-06-09 | 中兴通讯股份有限公司 | 用于实现业务系统保护的方法及装置 |
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
CN104346373A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN105447156A (zh) * | 2015-11-30 | 2016-03-30 | 北京航空航天大学 | 资源描述框架分布式引擎及增量式更新方法 |
CN105450431A (zh) * | 2014-09-02 | 2016-03-30 | 中国移动通信集团广东有限公司 | 一种多节点容灾方法及ngcc节点 |
CN105930228A (zh) * | 2016-04-06 | 2016-09-07 | 广州唯品会信息科技有限公司 | 数据备份方法及系统 |
CN106648994A (zh) * | 2017-01-04 | 2017-05-10 | 华为技术有限公司 | 一种备份操作日志的方法,设备和系统 |
CN106776121A (zh) * | 2016-11-23 | 2017-05-31 | 中国工商银行股份有限公司 | 一种数据灾备装置、系统及方法 |
CN106874068A (zh) * | 2017-02-09 | 2017-06-20 | 联想(北京)有限公司 | 主机装置的容器运行加速方法及系统 |
CN107918568A (zh) * | 2017-11-13 | 2018-04-17 | 北京全路通信信号研究设计院集团有限公司 | 一种防止Linux系统重启失败的方法 |
-
2018
- 2018-05-16 CN CN201810465188.5A patent/CN110502460B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313503A1 (en) * | 2004-06-01 | 2009-12-17 | Rajeev Atluri | Systems and methods of event driven recovery management |
CN101026556A (zh) * | 2007-01-10 | 2007-08-29 | 华为技术有限公司 | 一种支持服务质量的仲裁方法及装置 |
CN101729290A (zh) * | 2009-11-04 | 2010-06-09 | 中兴通讯股份有限公司 | 用于实现业务系统保护的方法及装置 |
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
CN104346373A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 分区日志队列同步管理方法及设备 |
CN105450431A (zh) * | 2014-09-02 | 2016-03-30 | 中国移动通信集团广东有限公司 | 一种多节点容灾方法及ngcc节点 |
CN105447156A (zh) * | 2015-11-30 | 2016-03-30 | 北京航空航天大学 | 资源描述框架分布式引擎及增量式更新方法 |
CN105930228A (zh) * | 2016-04-06 | 2016-09-07 | 广州唯品会信息科技有限公司 | 数据备份方法及系统 |
CN106776121A (zh) * | 2016-11-23 | 2017-05-31 | 中国工商银行股份有限公司 | 一种数据灾备装置、系统及方法 |
CN106648994A (zh) * | 2017-01-04 | 2017-05-10 | 华为技术有限公司 | 一种备份操作日志的方法,设备和系统 |
CN106874068A (zh) * | 2017-02-09 | 2017-06-20 | 联想(北京)有限公司 | 主机装置的容器运行加速方法及系统 |
CN107918568A (zh) * | 2017-11-13 | 2018-04-17 | 北京全路通信信号研究设计院集团有限公司 | 一种防止Linux系统重启失败的方法 |
Non-Patent Citations (2)
Title |
---|
仇臣: "Docker容器的性能监控和日志服务的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
方协云: "基于ceph文件系统的元数据缓存备份技术的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513832A (zh) * | 2020-09-27 | 2021-03-16 | 华为技术有限公司 | 一种数据的存储方法及设备 |
WO2022061807A1 (zh) * | 2020-09-27 | 2022-03-31 | 华为技术有限公司 | 一种数据的存储方法及设备 |
CN112513832B (zh) * | 2020-09-27 | 2022-08-19 | 华为技术有限公司 | 一种数据的存储方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110502460B (zh) | 2021-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8055735B2 (en) | Method and system for forming a cluster of networked nodes | |
US9984140B1 (en) | Lease based leader election system | |
TW201944236A (zh) | 任務處理方法、裝置及系統 | |
US9286143B2 (en) | Flexible event data content management for relevant event and alert analysis within a distributed processing system | |
US20160119197A1 (en) | System and method for supporting service level quorum in a data grid cluster | |
US9104572B1 (en) | Automated root cause analysis | |
RU2746042C1 (ru) | Способ и система для передачи сообщения | |
CN106843749A (zh) | 写入请求处理方法、装置及设备 | |
JP2006146927A (ja) | Snmp基盤のネットワーク管理装置および方法 | |
US10367676B1 (en) | Stable leader selection for distributed services | |
CN111026602A (zh) | 一种云平台的健康巡检调度管理方法、装置及电子设备 | |
CN112698838B (zh) | 多云容器部署系统及其容器部署方法 | |
US7499987B2 (en) | Deterministically electing an active node | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
EP4213036A1 (en) | Data storage method and device | |
JP6304499B2 (ja) | 相互接続ネットワークを管理する方法およびシステム | |
CN110750331A (zh) | 一种针对教育桌面云应用的容器集群调度方法及平台 | |
CN114448983A (zh) | 基于ZooKeeper的分布式数据交换方法 | |
CN112486707A (zh) | 基于Redis的消息异步消费方法及装置 | |
US8359601B2 (en) | Data processing method, cluster system, and data processing program | |
US20110238959A1 (en) | Distributed controller, distributed processing system, and distributed processing method | |
CN110502460A (zh) | 数据处理的方法和节点 | |
CN114629904A (zh) | 一种分布式事件的处理方法、系统、设备及介质 | |
CN112988377B (zh) | 用于云服务的资源分配方法、系统和介质 | |
CN111694645B (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 |