应用于分布式服务器集群的数据存储方法和服务器与流程

文档序号:12037969阅读:390来源:国知局
应用于分布式服务器集群的数据存储方法和服务器与流程

本申请涉及计算机技术领域,具体涉及数据库技术领域,尤其涉及应用于分布式服务器集群的数据存储方法和服务器。



背景技术:

随着互联网数据的快速增长,数据库作为互联网数据的存储介质,承担着越来越多的数据存储和数据访问任务。在分布式的数据存储系统中,同一数据具有多个副本,存储在不同的服务器中。数据一致性是互联网服务的一个重要指标。数据一致性,即同一数据的多个副本保持一致。

现有的分布式数据存储架构所采用的数据一致性协议中,当数据写入一半以上的服务器时,认为数据写入成功。而由于集群中服务器资源有限,数据一致性所占用的服务器资源较多,导致服务可用性降低,不利于业务请求的高效率处理。



技术实现要素:

为了解决上述背景技术部分的一个或多个技术问题,本申请实施例提供了应用于数据服务器集群的数据存储方法和服务器。

第一方面,本申请实施例提供了一种应用于分布式服务器集群的数据存储方法,分布式服务器集群包括多个节点,该方法包括:服务器集群中的主节点接收数据写入请求,数据写入请求包括待写入数据;主节点将数据写入请求广播至服务器集群中的各个分组,每个分组包括至少一个节点;主节点响应于接收到超过半数的分组反馈的确认消息,向发出数据写入请求的客户端发送写入成功的通知消息;其中,若分组中不包含主节点,分组响应于分组中的至少一个节点将待写入数据成功写入内存,向主节点反馈确认消息。

在一些实施例中,若分组中包含主节点,分组响应于主节点将待写入数据成功写入内存,向主节点反馈确认消息。

在一些实施例中,若分组中包含主节点和至少一个从节点,分组响应于主节点和分组内的至少一个从节点将待写入数据成功写入内存,向主节点反馈确认消息。

在一些实施例中,上述方法还包括:响应于向主节点反馈确认消息的分组数量低于半数,或在预设时间内超过半数的分组中每个分组中所有节点均未收到主节点广播的心跳消息,服务器集群中的一个从节点作为候选节点向各分组发出选举请求;响应于候选节点接收到超过半数的分组中每个分组的所有节点的同意消息,将候选节点切换为新的主节点。

在一些实施例中,上述方法还包括:按照各节点部署的物理位置将服务器集群中的多个节点划分为多个分组。

在一些实施例中,上述方法还包括:主节点响应于接收到超过半数的分组反馈的确认消息,向反馈确认消息的各分组发送数据同步确认消息。

第二方面,本申请实施例提供了一种应用于分布式数据服务器集群的数据存储服务器,包括:接收单元,用于接收数据写入请求,数据写入请求包括待写入数据;广播单元,用于将数据写入请求广播至服务器集群中的各个分组,每个分组包括至少一个节点,且至少一个分组包括至少两个节点;发送单元,用于响应于接收到超过半数的分组反馈的确认消息,向发出数据写入请求的客户端发送写入成功的通知消息;其中,若分组中不包含服务器集群中的主节点,分组用于响应于分组中的至少一个节点将待写入数据成功写入内存,向主节点反馈确认消息。

在一些实施例中,上述服务器还包括:请求单元,用于响应于向主反馈确认消息的分组数量低于半数,或在预设时间内超过半数的分组中每个分组中所有主节点均未收到主节点广播的心跳消息,作为候选节点向各分组发出选举请求;以及切换单元,用于响应于接收到超过半数的分组中每个分组的所有节点的同意消息,切换为新的主节点。

在一些实施例中,上述服务器还包括:确认单元,配置用于响应于接收到超过半数的分组反馈的确认消息,向反馈确认消息的各分组发送数据同步确认消息。

本申请提供的应用于分布式服务器集群的数据存储方法和服务器,通过服务器集群中的主节点接收数据写入请求,之后主节点将数据写入请求广播至集群中的各个分组,其中每个分组包括至少一个节点,在主节点收到超过半数的分组反馈的确认消息时,向发出数据写入请求的客户端发送写入成功的通知消息,其中,若分组中不包含主节点,则该分组在其中至少一个节点成功写入待写入数据之后,所述分组向主节点反馈确认消息,从而减少了保证数据一致性所需的节点数量,进而在保证数据一致性的同时提升了服务可用性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请的数据存储方法可以应用于其中的示例性系统架构;

图2是根据本申请的应用于数据服务器集群的数据存储方法的一个实施例的流程图;

图3是图2所示的应用于数据服务器集群的数据存储方法的一个具体示例的原理示意图;

图4是根据本申请的应用于数据服务器集群的数据存储方法的另一个实施例的流程图;

图5是图3所示的应用于数据服务器集群的数据存储方法的一个具体示例的原理示意图;

图6是应用于数据服务器集群的数据存储服务器的一个实施例的结构示意图;

图7是适于用来实现本申请实施例的分布式服务器集群中的服务器的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了本申请的数据存储方法可以应用于其中的示例性系统架构100。

如图1所示,系统架构100包括客户端101、网络102以及分布式数据服务器集群103。网络102用以在客户端101和服务器集群103之间提供通信链路的介质,以及在服务器集群103位于不同地理位置的机房之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户110可以通过客户端101向分布式数据服务器集群103写入数据或请求读取数据。客户端101可以配置于终端设备(例如具有显示屏的计算机)中,用户110在通过终端设备的输入接口输入数据读写请求,终端设备将数据读写请求发送至分布式数据服务器集群103。

分布式数据服务器集群103可以是为客户端101的应用提供数据服务的服务器集群,或者说,可以是为某一在线业务提供数据服务器的服务器集群,包括多台服务器1030。服务器集群103中的多台服务器1030可以在位于不同地理位置的数据中心,例如图1中服务器集群103中的服务器1030可以分别位于北京机房、上海机房和广州机房中。各个服务器1030之间可以通过网络连接。服务器集群103可以接收用户110通过客户端101发出的数据读写请求,并对数据读写请求进行处理,例如可以将用户写入的数据更新至多台服务器中,然后向客户端返回写数据成功的消息。

需要说明的是,本申请实施例所提供的应用于数据服务器集群的数据存储方法一般由服务器集群103执行,应用于数据服务器集群的数据存储服务器一般设置于服务器集群中。

应该理解,图1中的客户端、网络和服务器集群中的服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端、网络和服务器。

继续参考图2,其示出了根据本申请的应用于数据服务器集群的数据存储方法的一个实施例的流程图。在这里,数据服务器集群包括多个节点,每个节点可以是一台服务器。该应用于数据服务器集群的数据存储方法,包括以下步骤:

步骤201,服务器集群中的主节点接收数据写入请求。

在本实施例中,数据服务器集群可以采用分布式存储架构,各节点部署于不同的地理位置,其中包括一个主节点和多个从节点。主节点可以处理所有的客户端交互,将客户端写入的数据同步至从节点,从从节点读取客户端请求的数据。从节点可以接收主节点发送的日志同步消息或心跳(heartbeat)消息,进行日志同步、数据读取等操作,并向主节点返回响应消息。一般地,在一个服务器集群中,包含一个主节点和多个从节点。

主节点可以接收客户端发送的数据写入请求。该数据写入请求中包括待写入的数据。可选地,数据写入请求还可以包括客户端的用户标识、客户端的设备标识、请求时间等,用户标识和设备标识可以用来在写入数据前对客户端的权限进行判别和验证。

在实际业务场景中,数据写入请求可以例如为录入用户信息的请求,包括更改用户名称、密码的请求,用户可以在客户端执行用户信息的录入,并由客户端所在的设备发送至服务器集群中的主节点。主节点可以通过网络接收该请求。

步骤202,主节点将数据写入请求广播至服务器集群中的各个分组。

为了保证服务器集群中的一些节点设备故障或网络故障时正常提供数据服务,主节点需要将待写入的数据同步至一些从节点,以保证服务可用性。同时,需要将服务器集群中同一数据的所有备份都修改为最新的数据值,以避免出现数据一致性问题。

在本实施例中,主节点可以将接收到的数据写入请求广播至服务器集群中的各个分组。具体来说,主节点在接收到数据写入请求之后,可以发出广播消息,通知与主节点建立了数据通信的分组将数据写入。每个分组包括至少一个节点,主节点所在的分组可以只包含主节点,也可以包含主节点和至少一个从节点,其他分组可以包含一个或多个从节点,并且,至少存在一个分组包括至少两个节点。

在本实施例中,主节点可以与服务器集群中的超过半数的分组建立并保持数据通信。进一步地,主节点可以按照配置好的数据一致性协议与各分组建立并保持数据通信。在该数据一致性协议中,若主节点与超过半数的分组中每个分组的至少一个从节点建立了数据通信,则认为该服务器集群可以满足数据一致性的要求。主节点可以定时地向与其建立了数据通信的分组中的从节点发送心跳消息,从节点在收到心跳消息后向主节点返回响应消息,在主节点收到响应消息后确定该从节点所在分组与主节点之间的数据通信正常。

主节点可以将上述数据写入请求广播至与其保持数据通信的各个分组中,也即可以将上述数据写入请求广播至与其保持数据通信的、分别属于超过半数的分组中的各个从节点。如果一个分组内至少一个从节点收到了该数据写入请求,则可以确定该分组已经接收到了该数据写入请求。

步骤203,主节点响应于接收到超过半数的分组反馈的确认消息,向发出数据写入请求的客户端发送写入成功的通知消息。

在接收到主节点广播的数据写入请求之后,各与主节点保持数据通信的从节点可以将数据写入请求中的待写入数据写入内存中,之后向主节点返回写入成功的确认消息,这时可以确定该从节点所在的分组向主节点反馈了确认消息,也即可以确定该从节点所在的分组已经写成功。这里的确认消息可以是确认数据已成功写入的消息。

具体地,当一个分组内不包含主节点时,该分组响应于分组中的至少一个节点将待写入数据成功写入内存,向主节点反馈确认消息。也就是说,对于除了包含主节点的分组之外的其他分组,若组内至少有一个从节点成功将待写入数据写入内存,并发送了写入成功的确认消息,则认为该分组已经成功写入数据,或者说认为该分组完成了数据同步。在超过半数的分组成功写入数据或完成了数据同步之后,可以确定服务器集群已经成功写入数据,实现了数据的一致性,并且可以保证节点故障时数据不丢失,这时,主节点可以向发出数据写入请求的客户端发送写入成功的通知消息。

在本实施例的一些可选的实现方式中,若向主节点反馈确认消息的分组数量不超过半数,则可以确定主节点、从节点或网络出现异常,这时,主节点可以向发出数据写入请求的客户端发送写入失败的通知消息。

对于包含主节点的分组,可以默认该分组已成功写入数据,即可以确定该分组向主节点反馈了确认消息。

在本实施例的一些可选的实现方式中,若分组中包含主节点,则该分组可以响应于主节点将待写入数据成功写入内存,向主节点反馈确认消息。也就是说,主节点所在的分组在主节点将待写入数据写入内存后,主节点所在的分组即写成功。主节点可以监测数据写入主节点内存后返回的参数,作为上述反馈的确认消息,在检测到该参数后确定主节点所在的分组已写成功。

在本实施例的另一些可选的实现方式中,若分组中包含主节点,则该分组可以响应于主节点和分组内的至少一个从节点将待写入数据成功写入内存,向主节点反馈确认消息。也就是说,主节点所在分组中还包括至少一个从节点时,主节点和分组内的至少一个从节点将待写入数据写入内存后,主节点所在的分组即写成功。同样地,主节点可以监测数据写入主节点内存后返回的参数,作为上述反馈的确认消息,在同分组内的一个从节点也成功将待写入数据写入内存并反馈确认消息之后,才确定主节点所在的分组已写成功。这样,增加了主节点所在分组中的至少一个从节点作为数据同步节点,能够增强数据服务器集群的数据一致性。

在上述实施例中,在超过半数的分组写成功之后,可以确定数据服务器集群已成功完成了待写入数据的写入。这时,主节点可以向发出数据写入请求的客户端发送通知消息,以告知客户端数据写入请求已处理完毕并写入成功。客户端可以接收该通知消息并呈现给用户。

本申请上述实施例提供的应用于分布式服务器集群的数据存储方法,通过服务器集群中的主节点接收数据写入请求,之后主节点将数据写入请求广播至服务器集群中的各个分组,并响应于接收到超过半数的分组反馈的确认消息,向发出数据写入请求的客户端发送写入成功的通知消息,其中,不包含主节点的分组响应于分组中至少一个节点将待写入数据成功写入内存,向主节点反馈上述确认消息,并且,至少一个分组包括至少两个节点。可以利用分组间数据一致的方式,保证每个分组中至少一个节点写入待写入数据,相较于传统的需要超过半数节点同步待写入数据的分布式数据存储方法,减少了需同步数据的节点数量,从而使可故障节点的数量增大,提升了服务可用性。

在本实施例的一些可选的实现方式中,上述方法还可以包括:按照各节点部署的物理位置将服务器集群中的多个节点划分为多个分组。例如可以如图1所示架构中按照各节点所在的机房进行分组,每个机房的节点为一个分组。

进一步地,单个分组内的节点数量小于服务器集群中节点总数的一半,这样,可以避免单个机房故障时数据不一致和服务不可用。

在本实施的一些可选的实现方式中,上述数据存储方法还可以包括:主节点响应于接收到超过半数的分组反馈的确认消息,向反馈确认消息的各分组发送数据同步确认消息。即主节点在收到超过半数的分组反馈的确认消息后,可以发送数据同步确认消息给各反馈取认消息的分组,具体地,可以发送数据同步确认消息给各分组中反馈确认消息的从节点,以完成数据同步确认。

依据上述实施例提供的数据存储方法,数据服务器集群依照以下基于分组的数据一致性协议进行数据存储:主节点需要与超过半数的分组保持数据通信,当一个分组中至少存在一个节点与主节点保持数据通信时,认为该分组与主节点保持数据通信。

请参考图3,其示出了图2所示的应用于数据服务器集群的数据存储方法的一个具体示例的原理示意图,也示出了服务器集群的上述基于分组的数据一致性协议的数据存储的一个应用场景的示意图。

如图3所示,数据服务器集群包括分组1、分组2、分组3、分组4、分组5共5个分组,各分组可以分别位于不同的机房。分组1包括主节点m和一个从节点s1,分组2包括3个从节点s2、s3、s4,分组3包括1个从节点s5、分组4包括2个从节点s6和s7,分组5包括2个从节点s8和s9。主节点m与分组2中的从节点s4和分组4中的从节点s7保持数据通信。在写数据时,主节点m收到分组1的主节点m、分组2的从节点s4、分组4的从节点s7反馈的确认消息“ok”,则可以向客户端c发送写入成功的通知消息“ok”。或者,主节点m收到分组1的主节点m和从节点s1、分组2的从节点s4、分组4的从节点s7反馈的确认消息“ok”,则可以向客户端c发送写入成功的通知消息“ok”。这时,主节点m与分组1、分组2、分组4保持数据通信,可以保证主节点m的数据可以实时进行跨机房备份,业务的数据不会丢失并且在多个节点保持一致。

从图3可以看出,本实施例的应用场景中,与主节点保持通信的节点数量少于服务器集群中节点总数量的一半,在服务器集群中的一些节点故障时,可以利用较少的节点来保证数据一致性,从而避免服务可用性受到较大影响。

请参考图4,其示出了根据本申请的应用于数据服务器集群的数据存储方法的另一个实施例的流程图,该应用于数据服务器集群的数据存储方法,包括以下步骤:

步骤401,服务器集群中的主节点接收数据写入请求。

在本实施例中,数据服务器集群可以采用分布式存储架构,各节点部署于不同的地理位置,其中包括一个主节点和多个从节点。主节点可以接收客户端发送的数据写入请求。该数据写入请求中包括待写入的数据。可选地,数据写入请求还可以包括客户端的用户标识、客户端的设备标识、请求时间等,用户标识和设备标识可以用来在写入数据前对客户端的权限进行判别和验证。

步骤402,主节点将数据写入请求广播至服务器集群中的各个分组。

在本实施例中,主节点可以在接收到数据写入请求后,在服务器集群内广播该数据写入请求,请求其他节点备份待写入数据。与主节点建立了数据通信的分组可以接收该数据写入请求。在这里,每个分组包括至少一个节点,主节点所在的分组可以只包含主节点,也可以包含主节点和至少一个从节点,其他分组可以包含一个或多个从节点,并且,至少存在一个分组包括至少两个节点。

在本实施例中,主节点可以与服务器集群中的超过半数的分组保持数据通信。进一步地,主节点可以按照配置好的数据一致性协议与各分组建立并保持数据通信。在该数据一致性协议中,若主节点与超过半数的分组中每个分组的至少一个从节点建立了数据通信,则认为该服务器集群可以满足数据一致性的要求。

步骤403,主节点响应于接收到超过半数的分组反馈的确认消息,向发出数据写入请求的客户端发送写入成功的通知消息。

在接收到主节点广播的数据写入请求之后,各与主节点保持数据通信的从节点可以将数据写入请求中的待写入数据写入内存中,之后向主节点返回写入成功的确认消息,这时可以确定该从节点所在的分组向主节点反馈了确认消息,也即可以确定该从节点所在的分组已经写成功。

当一个分组内不包含主节点时,该分组了可以响应于分组中的至少一个节点将待写入数据成功写入内存,向主节点反馈确认消息。也就是说,对于除了包含主节点的分组之外的其他分组,若组内至少有一个从节点成功将待写入数据写入内存,并发送了写入成功的确认消息,则认为该分组已经成功写入数据,该分组完成了数据的备份,这时,主节点可以向发出数据写入请求的客户端发送写入成功的通知消息。

若分组中包含主节点,在一些可选的实现方式中,该分组可以响应于主节点和分组内的至少一个从节点将待写入数据成功写入内存,向主节点反馈确认消息;在另一些可选的实现方式中,该分组可以响应于主节点将待写入数据成功写入内存,向主节点反馈确认消息。也就是说,主节点所在分组可以在主节点成功写入数据后反馈确认消息,可以在主节点和至少一个从节点成功写入数据后反馈确认消息。

在本实施例的一些可选的实现方式中,若向主节点反馈确认消息的分组数量不超过半数,则可以确定主节点、从节点或网络出现异常,这时,主节点可以向发出数据写入请求的客户端发送写入失败的通知消息。

步骤404,响应于向主节点反馈确认消息的分组数量低于半数,或在预设时间内超过半数的分组中每个分组中所有节点均未收到主节点广播的心跳消息,服务器集群中的一个从节点作为候选节点向各分组发出选举请求。

在本实施例中,当向主节点反馈确认消息的分组数量低于半数时,或者在预设时间内超过半数的分组中每个分组中所有节点均未收到主节点广播的心跳消息时,可以确定与主节点保持通信的分组数量少于半数,这时为了保证数据一致性,服务器集群中的一个从节点成为候选节点,向各分组发出选举请求。

具体来说,一方面,若向主节点反馈确认消息的分组数量未超过半数,则可以确定与主节点保持数据通信的分组数量不超过半数,数据的备份和一致性难以保证,这时其他从节点可以发出选举请求。

另一方面,主节点与各分组内的从节点之间的数据通信通过主节点发送的心跳消息来保持。每个从节点中配置了发起选举的时钟,在时钟预设的时间内从节点不会发出选举请求。在收到主节点发送的心跳消息后,该从节点的时钟被重置,重新开始计时。若预设的时间内从节点未受到主节点发送的心跳消息,则触发从节点向其他节点发出选举请求。

步骤405,响应于候选节点接收到超过半数的分组中每个分组的所有节点的同意消息,将候选节点切换为新的主节点。

从节点发出选举请求的同时成为候选节点。在本实施中,服务器集群中的其他节点在收到选举请求后,可以向候选节点发送同意消息或拒绝消息。若候选节点受到超过半数的分组中每个分组的所有节点的同意消息,则候选节点切换为主节点,原来的主节点切换为从节点。换言之,若超过半数的分组中的全部节点都投票给候选节点,则候选节点就成为新的主节点。

按照上述数据存储方法400,数据服务器集群基于如下基于分组的一致性协议进行主节点选举:若与一个节点收到集群中超过半数的分组中的所有节点的投票,则该节点成为新的主节点。

上述方法流程中的步骤401、步骤402和步骤403分别与前述实施例中的步骤201、步骤202和步骤205相同,上文针对步骤201、步骤202和步骤205的描述也适用于本实施中的步骤401、步骤402和步骤403,此处不再赘述。

可以看出,在图2所示实施例的基础上,图4所示的实施例增加了主节点或网络故障时选举新的主节点的策略,即其中一个节点成为候选节点并得到大多数分组中每个分组的全部节点的投票后,该候选节点切换为新的主节点,由此,本实施的应用于分布式服务器集群的数据存储方法400可以在设备或网络异常导致主节点与分组间的数据通信断开时及时切换主节点,保证数据备份的可靠性。

请参考图5,其示出了图3所示的应用于数据服务器集群的数据存储方法的一个具体示例的原理示意图,也即示出了也示出了服务器集群的上述基于分组的数据一致性协议的数据存储方法中选举主节点的一个应用场景的示意图。

如图5所示,分布式数据服务器集群包括9个节点m(s0)、s1、s2、s3、s4、s5、s6、s7(m’)、s8、s9,分为5个分组,其中分组1包括节点m和s1,分组2包括节点s2、s3、s4,分组3包括节点s5,分组4包括节点s6和s7,分组5包括节点s8和s9。在分组1故障(例如分组1对应的机房网络异常)时,主节点m无法与集群中的超过半数的分组保持数据通信。这时,节点s7可以发起选举,向同一分组的其他节点s6以及其他分组发送选举请求,在包括节点s7在内的超过半数的分组中的所有节点均确认投票给节点s7之后,节点s7切换为新的主节点。例如图5中,分组2、分组3、分组5以及节点s7所在的分组中共4个分组的所有节点均确认投票给节点s7,此时全部节点投票的分组数量超过半数,则节点s7切换为主节点m’。

进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种应用于分布式服务器集群的数据存储服务器的一个实施例。

如图6所示,本实施例的应用于分布式服务器集群的数据存储服务器600包括:接收单元601、广播单元602以及发送单元603。其中,接收单元601用于接收数据写入请求,数据写入请求包括待写入数据;广播单元602用于将数据写入请求广播至服务器集群中的各个分组,每个分组包括至少一个节点,且至少一个分组包括至少两个节点;发送单元603用于响应于接收到超过半数的分组反馈的确认消息,向发出数据写入请求的客户端发送写入成功的通知消息;其中,若分组中不包含服务器集群中的主节点,分组用于响应于分组中的至少一个节点将待写入数据成功写入内存,向主节点反馈确认消息。

在本实施例中,当上述服务器600为服务器集群中的主节点时,接收单元601可以从客户端接收数据写入请求,该数据写入请求除了可以包括待写入数据之外,还可以包括用户标识、客户端的设备标识、请求时间等。广播单元602可以向服务器集群中的各个分组广播接收单元601接收的数据写入请求,以通知各分组进行数据备份。与主服务器保持通信连接的分组中的服务器可以接收广播单元602广播的消息。发送单元603可以在超过半数的分组中每个分组的至少一个节点反馈确认消息时,确定待写入数据已写入超过半数的分组,这时,可以向客户端发送通知消息,告知客户端数据已成功写入。

在一些实施例中,若分组中包含主节点,该主节点所在的分组响应于主节点将待写入数据成功写入内存,向主节点反馈确认消息。在另一些实施例中,若分组包含主节点和至少一个从节点,该主节点所在的分组响应于主节点和分组内的至少一个从节点将待写入数据成功写入内存,向主节点反馈确认消息。

在一些实施例中,上述服务器600还可以包括:请求单元和切换单元。当服务器为服务器集群中的从节点时,请求单元用于响应于向主反馈确认消息的分组数量低于半数,或在预设时间内超过半数的分组中每个分组中所有主节点均未收到主节点广播的心跳消息,作为候选节点向各分组发出选举请求;切换单元,用于响应于接收到超过半数的分组中每个分组的所有节点的同意消息,切换为新的主节点。

在一些实施例中,上述服务器还包括确认单元,配置用于响应于接收到超过半数的分组反馈的确认消息,向反馈确认消息的各分组发送数据同步确认消息。

应当理解,服务器600中记载的诸单元与参考图2和图4描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于服务器600及其中包含的单元,在此不再赘述。

本申请实施例提供的应用于分布式数据服务器集群的数据存储服务器600,作为服务器集群中的主节点,能够接收客户端发送的数据写入请求,将数据写入请求广播至服务器集群中的多个分组,并在收到超过半数的分组中的至少一个节点反馈的确认消息时,向客户端发送写入成功的通知消息,可以减少保证数据一致性所需的节点数量,进而提升了数据一致性前提下的服务可用性。

下面参考图7,其示出了适于用来实现本申请实施例的分布式服务器集群中的服务器的计算机系统的结构示意图。图7示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram703中,还存储有系统700操作所需的各种程序和数据。cpu701、rom702以及ram703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。

以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行上述流程图2或图3所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、服务器或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、服务器或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、服务器或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、统计单元、筛选单元、计算单元和确定单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收数据写入请求的单元”。

作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的服务器中所包含的;也可以是单独存在,而未装配入该服务器中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该服务器执行时,使得该服务器:接收数据写入请求,所述数据写入请求包括待写入数据;将所述数据写入请求广播至所述服务器集群中的各个分组,每个分组包括至少一个节点且至少一个分组包括至少两个节点;响应于接收到超过半数的分组反馈的确认消息,向发出所述数据写入请求的客户端发送写入成功的通知消息;其中,若所述分组中不包含所述主节点,所述分组响应于所述分组中的至少一个节点将所述待写入数据成功写入内存,向所述主节点反馈所述确认消息。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1