一种分布式系统中命令分发方法、装置及系统与流程

    专利2022-07-07  144


    本发明涉及计算机技术领域,尤其涉及一种分布式系统中命令分发方法、装置及系统。



    背景技术:

    在分布式系统中,为了保证分布式系统的容灾性,需要保证服务器集群(即处于分布式系统中的所有服务器)中每个服务器数据的一致性。其中,为了保证服务器集群中每个服务器数据的一致性,将从服务器集群中选择一个服务器作为主服务器,并将其余的服务器作为从服务器,主服务器负责接收客户端发送的命令,当主服务器接收的命令为写命令时,主服务器执行这个命令,并将这个命令通过异步的方式发送给所有从服务器执行。当主服务器接收的命令为读命令时,由于主服务器中的数据包括所有备份数据,因此,主服务器将直接执行这个命令。然而,由于读命令只能在主服务器上执行,将会导致主服务器的负载过高。



    技术实现要素:

    本申请中的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。本申请中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

    本发明实施例公开了一种分布式系统中命令分发方法、装置及系统,用于降低服务器集群中主服务器上的负载。

    本实施例第一方面公开一种命令分发方法,包括:接收客户端发送的携带有命令类型的第一命令,当第一命令的命令类型用于指示第一命令为读命令时,将根据预设规则从服务器集群中选取一个服务器作为目标服务器,以及发送第一命令至目标服务器,以便目标服务器执行第一命令,即目标服务器读取第一命令所要读取的数据并发送给本端;服务器集群可以包括分布式系统中的所有服务器,也可以包括存储有第一命令所需操作数据的服务器。由于目标服务器是从服务器集群中按照预设规则选取的一个服务器,可以为服务器集群中的主服务器,也可以为服务器集群中的从服务器,因此,读命令不一定全部发送至服务器集群中的主服务器执行,可以减少服务器集群中的主服务器上执行的读命令的数量,从而可以降低服务器集群中主服务器上的负载。

    在一个实施例中,根据预设规则从服务器集群中选取一个服务器作为目标服务器时,可以先从服务器集群中选取执行完第二命令的服务器为候选服务器,之后从候选服务器中确定一个服务器作为目标服务器,从而可以保证当第一命令为读命令时,能够从目标服务器读取到的数据是最新数据。第二命令是在第一命令前接收的与第一命令的接收时间相距最近的写命令,第一命令与第二命令所需操作数据的标识相同。

    在一个实施例中,从服务器集群中选取执行完第二命令的服务器为候选服务器时,可以先将第二命令的索引值与服务器集群中每个服务器最近执行完的目标写命令(即执行完的时间与当前时间距离最短的目标写命令)的索引值进行比较,之后从服务器集群中选取最近执行完的目标写命令的索引值等于第二命令的索引值的服务器为候选服务器,即选取执行完第二命令的服务器为候选服务器,从而可以保证候选服务器中第一命令所要读取的数据都为最新的数据。其中,一个命令唯一对应一个索引值。

    在一个实施例中,当在第一命令前接收且与第一命令相邻的第三命令为读命令,且第三命令的候选服务器为服务器集群时,即在本端处理第三命令时服务器集群中每个服务器均执行完了第一命令前接收的与第三命令的接收时间相距最近的写命令时,直接将服务器集群确定为第一命令的候选服务器,以及直接将为第三命令确定的目标服务器作为第一命令的目标服务器,可以减少从候选服务器中确定一个服务器作为目标服务器的处理步骤,因此,当有两个连续的读命令时可以减少处理步骤,从而可以提高命令处理效率;当第一命令前接收且与第一命令相邻的第三命令为读命令,且第三命令的候选服务器不是服务器集群时,即在本端处理第三命令时服务器集群中只有部分服务器执行完了第三命令前接收的与第三命令的接收时间相距最近的写命令时,在为第三命令确定目标服务器或将第三命令发送给确定的目标服务器的过程中,服务器集群中可能又有服务器执行完了第三命令前接收的与第三命令的接收时间相距最近的写命令,将需要重新为第一命令从服务器集群中选取所有执行完第二命令的服务器为候选服务器,从而可以增加候选服务器数量,以便从新选取的候选服务器中选择出负载最低的服务器;第一命令与第三命令所需操作数据的标识相同。

    在一个实施例中,当在第一命令前接收且与第一命令相邻的第四命令为写命令时,才从服务器集群中选取执行完第二命令的服务器为候选服务器,以及当在第一命令后接收且与第一命令相邻的第五命令为读命令时,如果第五命令是在发送第一命令前接收到的,可以在发送第一命令至目标服务器的同时,将第五命令也发送给目标服务器,因此,当有两个连续的读命令时可以减少处理步骤,从而可以提高命令处理效率;第一命令、第四命令以及第五命令所需操作数据的标识相同。

    在一个实施例中,从候选服务器中确定一个服务器作为目标服务器时,可以从候选服务器中确定负载最低的服务器作为目标服务器,从而可以在保证第一命令读取到最新数据的同时,可以均衡服务器集群中每个服务器的负载。

    在一个实施例中,根据预设规则从服务器集群中选取一个服务器作为目标服务器时,可以直接从服务器集群中选取负载最低的服务器作为目标服务器,可以保证将读命令分发给负载最低的服务器,以便均衡服务器集群中每个服务器的负载。

    在一个实施例中,当分布式系统中包括至少两个命令分发装置时,为了合理利用这些命令分发装置,这些命令分发装置中每个装置分别维护一部分数据,即负责将客户端发送的这些数据写入服务器,同时从服务器读取这些数据,每个数据对应一个关键值。因此,第一命令还可以携带有关键值,判断第一命令是否属于本端处理的命令,即判断第一命令携带的关键值是否属于本端维护的关键值范围,也即是判断第一命令所要操作的数据是否属于本端维护的数据,当第一命令携带的关键值属于本端维护的关键值范围时,表明第一命令属于本端处理的命令,将继续执行后续处理,当第一命令携带的关键值不属于本端维护的关键值范围时,表明第一命令不属于本端处理的命令,可以将第一命令发送给处理第一命令的命令分发装置。

    在一个实施例中,当第一命令携带的命令类型用于指示第一命令为写命令时,发送第一命令至服务器集群中的主服务器,以便主服务器执行第一命令以及将第一命令发送给从服务器执行。

    在一个实施例中,当第一命令携带的命令类型用于指示第一命令为写命令时,可以先判断是否接收到用于指示第六命令执行完成的返回消息,当接收到该返回消息时,才发送第一命令至服务器集群中的主服务器,可以保证第六命令可以读取到未被第一命令修改的数据,从而可以保证读取数据的准确率。该返回消息为执行第六命令的服务器执行完成第六命令后返回的消息,第六命令是在第一命令前接收且与第一命令的接收时间相距最近的读命令,第一命令与第六命令所需操作数据的标识相同。

    在一个实施例中,当在第一命令前接收且与第一命令相邻的第七命令为读命令时,才判断是否接收到用于指示第六命令执行完成的返回消息,当第七命令为写命令时,不需要执行该判断步骤,因此,当有两个连续的写命令时可以减少处理步骤,从而可以提高命令处理效率。其中,第一命令与第七命令所需操作数据的标识相同,即它们携带的关键值相同。

    在一个实施例中,主服务器在执行第一命令的同时,还可以判断它的负载是否超过预设值,当负载超过预设值时,表明主服务器的负载过高,主服务器将向本端发送负载过高消息,本端接收到主服务器发送的负载过高消息之后,将响应负载过高消息,根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器,并向选取的服务器发送主服务器建立命令,以便选取的服务器执行主服务器的功能,从而可以根据服务器集群中服务器的负载将主服务器由高负载的服务器路由到低负载的服务器,以便均衡服务器集群中服务器的负载同时保证主服务器能够正常执行主服务器的功能。

    在一个实施例中,本端可以实时或周期性地监测主服务器上的负载情况,当检测到主服务器上的负载超过预设值时,将根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器,并向选取的服务器发送主服务器建立命令,可以使选取的服务器执行主服务器的功能。

    本发明实施例第二方面公开一种命令分发装置,该命令分发装置包括用于执行本发明实施例第一方面或第一方面的任一种可能实现方式所公开的命令分发方法的单元。

    本发明实施例第三方面公开一种命令分发装置,该命令分发装置包括处理器、存储器、收发器。其中,存储器用于存储一组程序代码,处理器用于执行存储器存储的程序代码,收发器用于在处理器的控制下与客户端或服务器进行通信。当处理器执行存储器存储的程序代码时,可根据存储器存储的程序代码执行本发明实施例第一方面或第一方面的任一种可能实现方式所公开的命令分发方法。

    本发明实施例第四方面公开一种可读存储介质,该可读存储介质存储了命令分发装置用于执行本发明实施例第一方面或第一方面的任一种可能实现方式所公开的命令分发方法的程序代码。

    本发明实施例第五方面公开一种命令分发系统,包括客户端、命令分发装置和服务器集群,命令分发装置能够执行本发明实施例第一方面或第一方面的任一种可能实现方式所公开的命令分发方法;

    客户端,用于向命令分发装置发送命令,并接收命令分发装置发送的数据或消息;

    服务器集群,用于接收命令分发装置发送的命令并执行。

    本发明实施例中,当客户端发送的命令为读命令时,将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    附图说明

    为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

    图1是本发明实施例公开的一种命令分发网络架构示意图;

    图2是本发明实施例公开的一种命令分发方法的流程示意图;

    图3是本发明实施例公开的另一种命令分发方法的流程示意图;

    图4是本发明实施例公开的一种命令分发装置的结构示意图;

    图5是本发明实施例公开的另一种命令分发装置的结构示意图;

    图6是本发明实施例公开的又一种命令分发装置的结构示意图;

    图7是本发明实施例公开的一种命令分发系统的结构示意图。

    具体实施方式

    下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

    本发明实施例公开了一种命令分发方法、装置及系统,用于降低服务器集群中主服务器上的负载。以下分别进行详细说明。

    为了更好地理解本发明实施例公开的一种命令分发方法及装置,下面先对本发明实施例使用的网络架构进行描述。请参阅图1,图1是本发明实施例公开的一种命令分发网络架构示意图。如图1所示,该命令分发网络架构可以包括至少一个客户端101和服务端102,服务端102可以包括至少一个命令分发装置1021,以及由至少两个服务器1022组成的服务器集群。命令分发装置1021可以是独立的装置,也可以是设置在服务器1022上的装置,本实施例不作限定。服务器集群中的一个服务器1022为主服务器,其余服务器1022为从服务器。当客户端101需要在服务器集群中存储数据时,客户端101可以将数据以写命令的方式通过网络发送给命令分发装置1021,命令分发装置1021将接收的写命令通过网络发送给主服务器1022,主服务器1022执行接收的写命令,并将写命令发送给所有从服务器执行;当客户端101需要从服务器集群中读取数据时,客户端101向命令分发装置1021发送读命令,命令分发装置1021将根据预设规则从服务器集群中选取一个服务器,并将读命令发送给这个服务器1022,这个服务器1022将读命令所需读取数据发送给命令分发装置1021,命令分发装置1021将读取的数据发送给该客户端101。其中,服务器集群中的主服务器不是一成不变的,当主服务器的负载大于预设值时,可以将从服务器中负载最低的服务器设置为主服务器,将原先的主服务器设置为从服务器。其中,当包括至少两个命令分发装置1021时,命令分发装置1021间可以通过网络进行通信,每个命令分发装置1021维护一个关键(key)值范围,当接收的读或写命令的关键值处于这个key值范围时,将由该命令分发装置1021将该命令发送给服务器1022,当接收的读或写命令的命令值不在这个key值范围时,将这个命令发送至该命令值所属范围对应的命令分发装置1021,由对应的命令分发装置1021进行处理。其中,图1中只示意出了只包括一个命令分发装置1021和一个客户端101的情况。

    基于图1所示的命令分发网络架构,请参阅图2,图2是本发明实施例公开的一种命令分发方法的流程示意图。其中,本发明实施例是从命令分发装置1021的角度来描述的。如图2所示,该命令分发方法可以包括以下步骤。

    201、接收客户端发送的携带有命令类型的第一命令。

    202、当第一命令携带的命令类型用于指示第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,并发送第一命令至目标服务器。

    本实施例中,当第一命令携带的命令类型用于指示第一命令为读命令之后,将根据预设规则从服务器集群中选取一个服务器作为目标服务器,并发送第一命令至目标服务器,可见,当第一命令为读命令时,不一定发送给服务器集群中的主服务器执行,可以降低主服务器的负载。

    作为一种可能的实施方式,根据预设规则从服务器集群中选取一个服务器作为目标服务器时,可以先从服务器集群中选取执行完第二命令的服务器为候选服务器,即从服务器集群中选取执行完在第一命令前接收的所有写命令(这些写命令与第一命令携带的关键值相同,即与第一命令所需操作数据的标识相同)的服务器为候选服务器,保证第一命令读取候选服务器中的数据时,这些写命令已完成了对所操作数据的修改,保证第一命令可以读取到最新数据。之后从候选服务器中确定一个服务器作为目标服务器,可以是从候选服务器中任选一个服务器作为目标服务器,也可以是从候选服务器中确定负载最低的服务器作为目标服务器,可以保证第一命令在读取到最新数据的同时均衡服务器集群中每个服务器的负载。第二命令是在第一命令前接收且与第一命令的接收时间相距最近的写命令,第一命令与第二命令所需操作数据的标识相同,即第一命令和第二命令携带的关键值相同。由于索引值与命令一一对应,因此,在从服务器集群中选取执行完第二命令的服务器为候选服务器时,可以将第二命令的索引值与服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,并从服务器集群中选取最近执行完的目标写命令的索引值等于第二命令的索引值的服务器为候选服务器,即选取执行完第二命令的服务器为候选服务器,目标写命令与第二命令所需操作数据的标识相同。其中,服务器执行所需操作数据的标识相同的写命令时,是按照写命令的索引值从高到低依次执行写命令的。

    本实施例中,在命令分发装置中,一个数据对应一个等待队列,即一个关键值对应一个等待队列,命令分发装置接收到第一命令时,当第一命令为读命令时,如果第一命令携带的关键值对应等待队列中存在第二命令,或该等待队列无等待命令但未接收到用于指示第二命令执行完成的返回消息,将第一命令放入该等待队列进行等待,直到接收到用于指示第二命令执行完成的返回消息时,第一命令将出等待队列,并按照上述方式处理第一命令,如果第一命令携带的关键值对应等待队列中不存在第二命令且接收到用于指示第二命令执行完成的返回消息,将直接按照上述方式处理第一命令,不需要进入等待队列进行等待。其中,数据的关键值是预先设置的,例如:假设有10个数据,可以为这10个数据依次设置关键值为1、2、……、10。

    作为一种可能的实施方式,当在第一命令前接收且与第一命令相邻的第三命令为读命令,且在确定第三命令的候选服务器时,若确定的候选服务器数量与服务器集群数量相同,表明本端处理第三命令时服务器集群中每个服务器均执行完了第一命令前接收的与第三命令的接收时间相距最近的写命令,则确定服务器集群为第一命令的候选服务器,同时将为第三命令确定的目标服务器作为第一命令的目标服务器,可以减少为第一命令从候选服务器中确定一个服务器作为目标服务器的处理步骤,因此,当有两个连续的读命令时可以减少处理步骤,从而可以提高命令处理效率;若确定的候选服务器数量与服务器集群数量不相同,表明在本端处理第三命令时服务器集群中只有部分服务器执行完了第三命令前接收的与第三命令的接收时间相距最近的写命令,在为第三命令确定目标服务器或将第三命令发送给确定的目标服务器的过程中,服务器集群中可能又有服务器执行完了第三命令前接收的与第三命令的接收时间相距最近的写命令,将需要重新为第一命令从服务器集群中选取执行完第二命令的服务器为候选服务器;第一命令、第二命令与第三命令所需操作数据的标识相同。

    作为一种可能的实施方式,当在第一命令前接收且与第一命令相邻的第四命令为写命令时,才从服务器集群中选取执行完第二命令的服务器为候选服务器。以及从候选服务器确定目标服务器之后,当第一命令后接收且与第一命令相邻的第五命令为读命令时,如果第五命令是在发送第一命令前接收到的,可以在发送第一命令至目标服务器的同时,将第五命令也发送给目标服务器,以便存在两个连续的读命令时可以减少处理步骤,从而可以提高命令处理效率。

    其中,第一命令、第四命令以及第五命令所需操作数据的标识相同。

    203、当第一命令携带的命令类型用于指示第一命令为写命令时,发送第一命令至服务器集群中的主服务器。

    本实施例中,当第一命令的命令类型用于指示第一命令为写命令时,将第一命令发送给服务器集群中的主服务器,主服务器执行第一命令并将第一命令发送至所有从服务器执行。

    在图2所描述的命令分发方法中,当客户端发送的命令为读命令时,将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    基于图1所示的命令分发网络架构,请参阅图3,图3是本发明实施例公开的另一种命令分发方法的流程示意图。其中,本发明实施例是从命令分发装置1021的角度来描述的。如图3所示,该命令分发方法可以包括以下步骤。

    其中,步骤301-302与前面实施例中的步骤201-202相同,本发明实施例此处不作赘述。

    303、当第一命令携带的命令类型用于指示第一命令为写命令时,判断是否接收到用于指示第六命令执行完成的返回消息,当接收到该返回消息时,执行步骤304,当未接收到该返回消息时,将等待。

    本实施例中,当第一命令携带的命令类型用于指示第一命令为写命令时,可以先判断是否接收到用于指示第一命令前接收且与第一命令的接收时间相距最近的读命令(即第六命令)执行完成的返回消息,当接收到该返回消息时,表明第一命令的执行不会影响第六命令读取的数据的准确性,将执行步骤304,当未接收到该返回消息时,表明第一命令的执行影响第六命令读取的数据的准确性,将等待,直到接收到该返回消息之后才执行步骤304。该返回消息为执行第六命令的服务器执行完成第六命令后返回的消息,第六命令是在第一命令前接收且与第一命令的接收时间相距最近的读命令,第一命令与第六命令所需操作数据的标识相同。

    本实施例中,当第一命令为写命令时,如果第一命令携带的关键值对应等待队列中存在第六写命令,或该等待队列无等待命令但未接收到用于指示第六命令执行完成的返回消息,将第一命令放入对应的等待队列进行等待,直到接收到用于指示第六命令执行完成的返回消息时,第一命令将出等待队列,并执行步骤304,如果第一命令携带的关键值对应等待队列中不存在第六命令且接收到用于指示第六命令执行完成的返回消息,将直接执行步骤304,不需要进入等待队列进行等待。

    304、发送第一命令至服务器集群中的主服务器。

    作为一种可能实施方式,当在第一命令前接收且与第一命令相邻的第七命令为写命令时,不需要执行步骤303,将直接执行步骤304;当在第一命令前接收且与第一命令相邻的第七命令为读命令时,此时第七命令即第六命令,需要先执行步骤303,直到接收到用于指示第六命令执行完成的返回消息之后,才能执行步骤304。其中,第一命令与第七命令所需操作数据的标识相同。

    作为一种可能的实施方式,当在执行步骤304之前接收到第八命令时,将第一命令和第八命令发送给服务器集群的主服务器。第八命令是在第一命令后接收且与第一命令相邻的写命令,且第八命令与第一命令所需操作数据的标识相同。

    305、接收主服务器发送的负载过高消息,并响应负载过高消息,根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器,以及向选取的服务器发送主服务器建立命令。

    本实施例中,当第一命令为写命令之后,将写命令发送给主服务器之后,主服务器在执行第一命令时,可以判断主服务器的负载是否超过预设值,当主服务器的负载超过预设值时,将向本端发送负载过高消息,本端接收到主服务器发送的负载过高消息之后,将响应负载过高消息,根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器,以及向选取的服务器发送主服务器建立命令,可以使选取的服务器执行主服务器的功能。负载信息可以是中央处理器(centralprocessingunit,cpu)信息、输入输出(input-output,io)信息、网络信息等。

    作为一种可能的实施方式,命令分发装置也可以实时或周期性地监测主服务器上的负载情况,当检测到主服务器上的负载超过预设值时,将根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器,并向选取的服务器发送主服务器建立命令,可以使选取的服务器执行主服务器的功能。

    在图3所描述的命令分发方法中,当客户端发送的命令为读命令时,将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    在一个实施例中,当分布式系统包括至少两个命令分发装置时,为了合理利用这些命令分发装置,这些命令分发装置中每个装置分别维护一部分数据,即负责将客户端发送的这些数据写入服务器,同时从服务器读取这些数据,每个数据对应一个关键值。命令分发装置接收到客户端发送的第一命令之后,先判断第一命令是否属于该命令分发装置处理的命令(即判断第一命令携带的关键值是否属于该命令分发装置维护的关键值范围),当属于该命令分发装置处理的命令时,执行步骤302或303,当不属于本端处理的命令时,表明第一命令不属于本端处理的命令,根据存储的除本端之外的每个命令分发装置维护的关键值范围和第一命令携带的关键值确定用于处理第一命令的命令分发装置,并将第一命令发送至确定的命令分发装置。

    本实施例中,可以预先将其它命令分发装置维护的关键值范围进行存储,当判断出第一命令不属于本端处理的命令时,将获取存储的其它命令分发装置维护的关键值范围,并将第一命令的关键值与这些命令分发装置维护的关键值范围分别进行比较,从这些命令分发装置中选取第一命令的命令值所属关键值范围对应的命令分发装置。

    基于图1所示的命令分发网络架构,请参阅图4,图4是本发明实施例公开的一种命令分发装置的结构示意图。如图4所示,该命令分发装置可以包括:

    通信单元401,用于接收客户端发送的携带有命令类型的第一命令;

    选取单元402,用于当通信单元401接收的第一命令携带的命令类型用于指示第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,服务器集群可以包括分布式系统中的所有服务器或存储有第一命令所需操作数据的服务器;

    通信单元401,还用于发送第一命令至选取单元402选取的目标服务器,以触发目标服务器执行第一命令。

    在图4所描述的命令分发装置中,当客户端发送的命令为读命令时,将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    基于图1所示的命令分发网络架构,请参阅图5,图5是本发明实施例公开的另一种命令分发装置的结构示意图。其中,图5所示的命令分发装置是由图4所示的命令分发装置进行优化得到的,其中:

    选取单元402可以包括:

    选取子单元4021,用于从服务器集群中选取执行完第二命令的服务器为候选服务器,第二命令是在第一命令前接收且与第一命令的接收时间相距最近的写命令,第一命令与第二命令所需操作数据的标识相同;

    确定子单元4022,用于从选取子单元4021选取的候选服务器中确定一个服务器作为目标服务器。

    具体地,通信单元401接收客户端发送的携带有命令类型的第一命令后,将触发选取子单元4021从服务器集群中选取执行完第二命令的服务器为候选服务器。

    作为一种可能的实施方式,选取子单元4021可以包括:

    将第二命令的索引值与服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,目标写命令与第二命令所需操作数据的标识相同;

    从服务器集群中选取最近执行完的目标写命令的索引值等于第二命令的索引值的服务器为候选服务器。

    作为一种可能的实施方式,选取子单元4021,具体用于:

    当在通信单元401接收的第一命令前接收且与第一命令相邻的第三命令为读命令,且在确定第三命令的候选服务器时,若确定的候选服务器数量与服务器集群数量相同,确定服务器集群为第一命令的候选服务器,若确定的候选服务器数量与服务器集群数量不相同,从服务器集群中选取执行完第二命令的服务器为第一命令的候选服务器;

    第一命令与第三命令所需操作数据的标识相同。

    作为一种可能的实施方式,选取子单元4021,具体用于当在第一命令前接收且与第一命令相邻的第四命令为写命令时,从服务器集群中选取执行完第二命令的服务器为候选服务器;

    通信单元401发送第一命令至目标服务器包括:

    当在第一命令后接收且与第一命令相邻的第五命令为读命令时,发送第一命令和第五命令至目标服务器;

    其中,第一命令、第四命令以及第五命令所需操作数据的标识相同。

    作为一种可能的实施方式,确定子单元4022,具体用于从候选服务器中确定负载最低的服务器作为目标服务器。

    作为一种可能的实施方式,选取单元402,具体用于从服务器集群中选取负载最低的服务器作为目标服务器。

    作为一种可能的实施方式,通信单元401,还用于当命令类型用于指示第一命令为写命令时,发送第一命令至服务器集群中的主服务器,以触发主服务器执行第一命令。

    作为一种可能的实施方式,该命令分发装置还可以包括:

    判断单元403,用于判断是否接收到用于指示第六命令执行完成的返回消息,当判断单元404的判断结果为是时,触发通信单元401执行发送第一命令至服务器集群中的主服务器的步骤,该返回消息为执行第六命令的服务器执行完成第六命令后返回的消息,第六命令是在第一命令前接收且与第一命令的接收时间相距最近的读命令,第一命令与第六命令所需操作数据的标识相同。

    作为一种可能的实施方式,判断单元404,具体用于当在第一命令前接收且与第一命令相邻的第七命令为读命令时,判断是否接收到用于指示第六命令执行完成的返回消息;

    其中,第一命令与第七命令所需操作数据的标识相同。

    作为一种可能的实施方式,通信单元401,还用于在发送第一命令至服务器集群中的主服务器后,接收主服务器发送的负载过高消息;

    选取单元402,还用于响应负载过高消息,根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器;

    通信单元401,还用于向选取的服务器发送主服务器建立命令,主服务器建立命令用于指示选取的服务器执行主服务器的功能。

    作为一种可能的实施方式,第一命令还携带有关键值,当分布式系统包括至少两个命令分发装置时,判断单元404,还用于判断第一命令携带的关键值是否属于该命令分发装置维护的关键值范围,若是,则触发通信单元401执行当第一命令携带的命令类型用于指示第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,或者执行当第一命令的命令类型用于指示第一命令为写命令时,发送第一命令至服务器集群中的主服务器。

    在图5所描述的命令分发装置中,当客户端发送的命令为读命令时,将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    基于图1所示的命令分发网络架构,请参阅图6,图6是本发明实施例公开的又一种命令分发装置的结构示意图。如图6所示,该命令分发装置可以包括:处理器601、存储器602、收发器603。其中:

    收发器603,用于接收客户端发送的携带有命令类型的第一命令并发送至处理器601;

    处理器601用于调用存储器602中存储的程序代码执行以下操作:

    当第一命令的命令类型用于指示第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,服务器集群包括分布式系统中的所有服务器或存储有第一命令所需操作数据的服务器;

    收发器603,还用于发送第一命令至目标服务器,以触发目标服务器执行第一命令。

    作为一种可能的实施方式,处理器601根据预设规则从服务器集群中选取一个服务器作为目标服务器包括:

    从服务器集群中选取执行完第二命令的服务器为候选服务器,第二命令是在第一命令前接收且与第一命令的接收时间相距最近的写命令,第一命令与第二命令所需操作数据的标识相同;

    从候选服务器中确定一个服务器作为目标服务器。

    作为一种可能的实施方式,处理器601从服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    将第二命令的索引值与服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,目标写命令与第二命令所需操作数据的标识相同;

    从服务器集群中选取最近执行完的目标写命令的索引值等于第二命令的索引值的服务器为候选服务器。

    作为一种可能的实施方式,处理器601从服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在第一命令前接收且与第一命令相邻的第三命令为读命令,且在确定第三命令的候选服务器时,若确定的候选服务器数量与服务器集群数量相同,则确定服务器集群为第一命令的候选服务器,若确定的候选服务器数量与服务器集群数量不相同,则从服务器集群中选取执行完第二命令的服务器为第一命令的候选服务器;

    第一命令与第三命令所需操作数据的标识相同。

    作为一种可能的实施方式,处理器601从服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在第一命令前接收且与第一命令相邻的第四命令为写命令时,从服务器集群中选取执行完第二命令的服务器为候选服务器;

    发送器603发送第一命令至目标服务器包括:

    当在第一命令后接收且与第一命令相邻的第五命令为读命令时,发送第一命令和第五命令至目标服务器;

    其中,第一命令、第四命令以及第五命令所需操作数据的标识相同。

    作为一种可能的实施方式,处理器601从候选服务器中确定一个服务器作为目标服务器包括:

    从候选服务器中确定负载最低的服务器作为目标服务器。

    作为一种可能的实施方式,处理器601根据预设规则从服务器集群中选取一个服务器作为目标服务器包括:

    从服务器集群中选取负载最低的服务器作为目标服务器。

    作为一种可能的实施方式,处理器601还用于调用存储器602中存储的程序代码执行以下操作:

    当第一命令的命令类型用于指示第一命令为写命令时,发送第一命令至服务器集群中的主服务器,以触发主服务器执行第一命令。

    作为一种可能的实施方式,处理器601还用于调用存储器602中存储的程序代码执行以下操作:

    判断是否接收到用于指示第六命令执行完成的返回消息,该返回消息为执行第六命令的服务器执行完成第六命令后返回的消息,第六命令是在第一命令前接收且与第一命令的接收时间相距最近的读命令,第一命令与第六命令所需操作数据的标识相同;

    当接收到用于指示第六命令执行完成的返回消息时,触发收发器603执行发送第一命令至服务器集群中的主服务器的步骤。

    作为一种可能的实施方式,处理器601判断是否接收到用于指示第六命令执行完成的返回消息包括:

    当在第一命令前接收且与第一命令相邻的第七命令为读命令时,判断是否接收到用于指示第六命令执行完成的返回消息;

    其中,第一命令与第七命令所需操作数据的标识相同。

    作为一种可能的实施方式,收发器603发送第一命令至服务器集群中的主服务器之后,收发器603,还用于接收主服务器发送的负载过高消息;

    处理器601还用于调用存储器602存储的程序代码执行以下操作:

    响应负载过高消息,根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器;

    收发器603,还用于向选取的服务器发送主服务器建立命令,主服务器建立命令用于指示选取的服务器执行主服务器的功能。

    在图6所描述的命令分发装置中,当客户端发送的命令为读命令时,将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    基于图1所示的命令分发网络架构,请参阅图7,图7是本发明实施例公开的一种分布式系统中命令分发系统的结构示意图。如图7所示,该命令分发系统包括客户端701、命令分发装置702和服务器集群703,服务器集群703包括至少两个服务器,其中,一个服务器为主服务器,其余服务器为从服务器,其中:

    客户端701,用于向命令分发装置702发送携带有命令类型的第一命令;

    命令分发装置702,用于接收第一命令,当命令类型用于指示第一命令为读命令时,根据预设规则从服务器集群703中选取一个服务器作为目标服务器,以及发送第一命令至目标服务器,服务器集群包括分布式系统中的所有服务器或存储有第一命令所需操作数据的服务器;

    目标服务器,用于接收第一命令并执行第一命令。

    作为一种可能的实施方式,命令分发装置702根据预设规则从服务器集群中选取一个服务器作为目标服务器包括:

    从服务器集群中选取执行完第二命令的服务器为候选服务器,第二命令是在第一命令前接收且与第一命令的接收时间相距最近的写命令,第一命令与第二命令所需操作数据的标识相同;

    从候选服务器中确定一个服务器作为目标服务器。

    作为一种可能的实施方式,命令分发装置702从服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    将第二命令的索引值与服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,目标写命令与第二命令所需操作数据的标识相同;

    从服务器集群中选取最近执行完的目标写命令的索引值等于第二命令的索引值的服务器为候选服务器。

    作为一种可能的实施方式,命令分发装置702从服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在第一命令前接收且与第一命令相邻的第三命令为读命令,且在确定第三命令的候选服务器时,若确定的候选服务器数量与服务器集群数量相同,则确定服务器集群为第一命令的候选服务器,若确定的候选服务器数量与服务器集群数量不相同,则从服务器集群中选取执行完第二命令的服务器为第一命令的候选服务器;

    第一命令与第三命令所需操作数据的标识相同。

    作为一种可能的实施方式,命令分发装置702从服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在第一命令前接收且与第一命令相邻的第四命令为写命令时,从服务器集群中选取执行完第二命令的服务器为候选服务器;

    命令分发装置702发送第一命令至目标服务器包括:

    当在第一命令后接收且与第一命令相邻的第五命令为读命令时,发送第一命令和第五命令至目标服务器;

    其中,第一命令、第四命令以及第五命令所需操作数据的标识相同。

    作为一种可能的实施方式,命令分发装置702从候选服务器中确定一个服务器作为目标服务器包括:

    从候选服务器中确定负载最低的服务器作为目标服务器。

    作为一种可能的实施方式,命令分发装置702根据预设规则从服务器集群中选取一个服务器作为目标服务器包括:

    从服务器集群中选取负载最低的服务器作为目标服务器。

    作为一种可能的实施方式,命令分发装置702,还用于当命令类型用于指示第一命令为写命令时,发送第一命令至服务器集群703中的主服务器;

    主服务器,用于接收第一命令,执行第一命令,以及将第一命令发送至服务器集群703中除主服务器之外的从服务器;

    从服务器,用于接收第一命令并执行。

    作为一种可能的实施方式,命令分发装置702,还用于判断是否接收到用于指示第六命令执行完成的返回消息,当接收到用于指示第六命令执行完成的返回消息时,执行发送第一命令至服务器集群中的主服务器的步骤,该返回消息为执行第六命令的服务器执行完成第六命令后返回的消息,第六命令是在第一命令前接收且与第一命令的接收时间相距最近的读命令,第一命令与第六命令所需操作数据的标识相同。

    作为一种可能的实施方式,命令分发装置702判断是否接收到用于指示第六命令执行完成的返回消息包括:

    当在第一命令前接收且与第一命令相邻的第七命令为读命令时,判断是否接收到用于指示第六命令执行完成的返回消息;

    其中,第一命令与第七命令所需操作数据的标识相同。

    作为一种可能的实施方式,命令分发装置702,还用于在发送第一命令至服务器集群中的主服务器之后,接收主服务器发送的负载过高消息,响应负载过高消息,根据服务器集群中每个服务器的负载信息,从服务器集群中选取负载最低的服务器,并向选取的服务器发送主服务器建立命令,主服务器建立命令用于指示选取的服务器执行主服务器的功能;

    选取的服务器,用于接收主服务器建立命令,执行主服务器的功能。

    在图7所描述的命令分发系统中,当客户端发送的命令为读命令时,命令分发装置将根据预设规则从服务器集群中选取一个服务器,并将这个命令发送给这个服务器执行,而不是直接将这个命令发送给服务器集群中的主服务器执行,可以降低服务器集群中主服务器上的负载。

    在一个实施例中,一种可读存储介质,该可读存储介质存储了命令分发装置用于执行本发明实施例图2和图3所对应的命令分发方法的程序代码。

    本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

    以上对本发明实施例公开的分布式系统中命令分发方法、装置及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。


    技术特征:

    1.一种分布式系统中命令分发方法,其特征在于,包括:

    接收第一命令;

    当所述第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,所述服务器集群包括所述分布式系统中的所有服务器或存储有所述第一命令所需操作数据的服务器;

    发送所述第一命令至所述目标服务器,以触发所述目标服务器执行所述第一命令。

    2.根据权利要求1所述的方法,其特征在于,所述根据预设规则从服务器集群中选取一个服务器作为目标服务器包括:

    从所述服务器集群中选取执行完第二命令的服务器为候选服务器,所述第二命令是在所述第一命令前接收且与所述第一命令的接收时间相距最近的写命令,所述第一命令与所述第二命令所需操作数据的标识相同;

    从所述候选服务器中确定一个服务器作为所述目标服务器。

    3.根据权利要求2所述的方法,其特征在于,所述从所述服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    将所述第二命令的索引值与所述服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,所述目标写命令与所述第二命令所需操作数据的标识相同;

    从所述服务器集群中选取最近执行完的目标写命令的索引值等于所述第二命令的索引值的服务器为所述候选服务器。

    4.根据权利要求2所述的方法,其特征在于,所述从所述服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在所述第一命令前接收且与所述第一命令相邻的第三命令为读命令,且在确定所述第三命令的候选服务器时,若确定的所述候选服务器数量与所述服务器集群数量相同,则确定所述服务器集群为所述第一命令的候选服务器,若确定的所述候选服务器数量与所述服务器集群数量不相同,则从所述服务器集群中选取执行完所述第二命令的服务器为所述候选服务器;

    所述第一命令与所述第三命令所需操作数据的标识相同。

    5.根据权利要求2所述的方法,其特征在于,所述从所述服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在所述第一命令前接收且与所述第一命令相邻的第四命令为写命令时,从所述服务器集群中选取执行完所述第二命令的服务器为所述候选服务器;

    所述发送所述第一命令至所述目标服务器包括:

    当在所述第一命令后接收且与所述第一命令相邻的第五命令为读命令时,发送所述第一命令和所述第五命令至所述目标服务器;

    其中,所述第一命令、所述第四命令以及所述第五命令所需操作数据的标识相同。

    6.根据权利要求2-5所述的任一方法,其特征在于,所述从所述候选服务器中确定一个服务器作为所述目标服务器包括:

    从所述候选服务器中确定负载最低的服务器作为所述目标服务器。

    7.根据权利要求1所述的方法,其特征在于,所述根据预设规则从服务器集群中选取一个服务器作为目标服务器包括:

    从所述服务器集群中选取负载最低的服务器作为所述目标服务器。

    8.根据权利要求1所述的方法,其特征在于,所述方法还包括:

    当所述第一命令为写命令时,发送所述第一命令至所述服务器集群中的主服务器,以触发所述主服务器执行所述第一命令。

    9.根据权利要求8所述的方法,其特征在于,所述方法还包括:

    判断是否接收到用于指示第六命令执行完成的返回消息,所述返回消息为执行所述第六命令的服务器执行完成所述第六命令后返回的消息,所述第六命令是在所述第一命令前接收且与所述第一命令的接收时间相距最近的读命令,所述第一命令与所述第六命令所需操作数据的标识相同;

    当接收到所述返回消息时,执行所述发送所述第一命令至所述服务器集群中的主服务器的步骤。

    10.根据权利要求9所述的方法,其特征在于,所述判断是否接收到用于指示第六命令执行完成的返回消息包括:

    当在所述第一命令前接收且与所述第一命令相邻的第七命令为读命令时,判断是否接收到用于指示第六命令执行完成的返回消息;

    其中,所述第一命令与所述第七命令所需操作数据的标识相同。

    11.根据权利要求8或9所述的方法,其特征在于,所述发送所述第一命令至所述服务器集群中的主服务器之后,所述方法还包括:

    接收所述主服务器发送的负载过高消息;

    响应所述负载过高消息,根据所述服务器集群中每个服务器的负载信息,从所述服务器集群中选取负载最低的服务器;

    向选取的服务器发送主服务器建立命令,所述主服务器建立命令用于指示所述选取的服务器执行主服务器的功能。

    12.一种分布式系统中命令分发装置,其特征在于,包括:

    通信单元,用于接收第一命令;

    选取单元,用于当所述通信单元接收的所述第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,所述服务器集群包括所述分布式系统中的所有服务器或存储有所述第一命令所需操作数据的服务器;

    所述通信单元,还用于发送所述第一命令至所述选取单元选取的目标服务器,以触发所述目标服务器执行所述第一命令。

    13.根据权利要求12所述的装置,其特征在于,所述选取单元包括:

    选取子单元,用于从所述服务器集群中选取执行完第二命令的服务器为候选服务器,所述第二命令是在所述第一命令前接收且与所述第一命令的接收时间相距最近的写命令,所述第一命令与所述第二命令所需操作数据的标识相同;

    确定子单元,用于从所述选取子单元选取的候选服务器中确定一个服务器作为所述目标服务器。

    14.根据权利要求13所述的装置,其特征在于,所述选取子单元包括:

    将所述第二命令的索引值与所述服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,所述目标写命令与所述第二命令所需操作数据的标识相同;

    从所述服务器集群中选取最近执行完的目标写命令的索引值等于所述第二命令的索引值的服务器为所述候选服务器。

    15.根据权利要求13所述的装置,其特征在于,所述选取子单元具体用于:

    当在所述第一命令前接收且与所述第一命令相邻的第三命令为读命令,且在确定所述第三命令的候选服务器时,若确定的所述候选服务器数量与所述服务器集群数量相同,确定所述服务器集群为所述第一命令的候选服务器,若确定的所述候选服务器数量与所述服务器集群数量不相同,从所述服务器集群中选取执行完所述第二命令的服务器为所述候选服务器;

    所述第一命令与所述第三命令所需操作数据的标识相同。

    16.根据权利要求13所述的装置,其特征在于,所述选取子单元,具体用于当在所述第一命令前接收且与所述第一命令相邻的第四命令为写命令时,从所述服务器集群中选取执行完所述第二命令的服务器为所述候选服务器;

    所述通信单元发送所述第一命令至所述目标服务器包括:

    当在所述第一命令后接收且与所述第一命令相邻的第五命令为读命令时,发送所述第一命令和所述第五命令至所述目标服务器;

    其中,所述第一命令、所述第四命令以及所述第五命令所需操作数据的标识相同。

    17.根据权利要求13-16所述的任一装置,其特征在于,所述确定子单元,具体用于从所述候选服务器中确定负载最低的服务器作为所述目标服务器。

    18.根据权利要求12所述的装置,其特征在于,所述选取单元,具体用于从所述服务器集群中选取负载最低的服务器作为所述目标服务器。

    19.根据权利要求12所述的装置,其特征在于,所述通信单元,还用于当所述第一命令为写命令时,发送所述第一命令至所述服务器集群中的主服务器,以触发所述主服务器执行所述第一命令。

    20.根据权利要求19所述的装置,其特征在于,所述装置还包括:

    判断单元,用于判断是否接收到用于指示第六命令执行完成的返回消息,当所述判断单元的判断结果为是时,触发所述通信单元执行所述发送所述第一命令至所述服务器集群中的主服务器的步骤,所述返回消息为执行所述第六命令的服务器执行完成所述第六命令后返回的消息,所述第六命令是在所述第一命令前接收且与所述第一命令的接收时间相距最近的读命令,所述第一命令与所述第六命令所需操作数据的标识相同。

    21.根据权利要求20所述的装置,其特征在于,所述判断单元,具体用于当在所述第一命令前接收且与所述第一命令相邻的第七命令为读命令时,判断是否接收到用于指示第六命令执行完成的返回消息;

    其中,所述第一命令与所述第七命令所需操作数据的标识相同。

    22.根据权利要求19或20所述的装置,其特征在于,所述通信单元,还用于在发送所述第一命令至所述服务器集群中的主服务器后,接收所述主服务器发送的负载过高消息;

    所述选取单元,还用于响应所述负载过高消息,根据所述服务器集群中每个服务器的负载信息,从所述服务器集群中选取负载最低的服务器;

    所述通信单元,还用于向选取的服务器发送主服务器建立命令,所述主服务器建立命令用于指示所述选取的服务器执行主服务器的功能。

    23.一种分布式系统中命令分发系统,其特征在于,包括客户端、命令分发装置和服务器集群,其中:

    所述客户端,用于向所述命令分发装置发送第一命令;

    所述命令分发装置,用于接收所述第一命令,当所述第一命令为读命令时,根据预设规则从所述服务器集群中选取一个服务器作为目标服务器,以及发送所述第一命令至所述目标服务器,所述服务器集群包括所述分布式系统中的所有服务器或存储有所述第一命令所需操作数据的服务器;

    所述目标服务器,用于接收所述第一命令并执行所述第一命令。

    24.根据权利要求23所述的系统,其特征在于,所述命令分发装置根据预设规则从所述服务器集群中选取一个服务器作为目标服务器包括:

    从所述服务器集群中选取执行完第二命令的服务器为候选服务器,所述第二命令是在所述第一命令前接收且与所述第一命令的接收时间相距最近的写命令,所述第一命令与所述第二命令所需操作数据的标识相同;

    从所述候选服务器中确定一个服务器作为所述目标服务器。

    25.根据权利要求24所述的系统,其特征在于,所述命令分发装置从所述服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    将所述第二命令的索引值与所述服务器集群中每个服务器最近执行完的目标写命令的索引值进行比较,所述目标写命令与所述第二命令所需操作数据的标识相同;

    从所述服务器集群中选取最近执行完的目标写命令的索引值等于所述第二命令的索引值的服务器为所述候选服务器。

    26.根据权利要求24所述的系统,其特征在于,所述命令分发装置从所述服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在所述第一命令前接收且与所述第一命令相邻的第三命令为读命令,且在确定所述第三命令的候选服务器时,若确定的所述候选服务器数量与所述服务器集群数量相同,则确定所述服务器集群为所述第一命令的候选服务器,若确定的所述候选服务器数量与所述服务器集群数量不相同,则从所述服务器集群中选取执行完所述第二命令的服务器为所述候选服务器;

    所述第一命令与所述第三命令所需操作数据的标识相同。

    27.根据权利要求24所述的系统,其特征在于,所述命令分发装置从所述服务器集群中选取执行完第二命令的服务器为候选服务器包括:

    当在所述第一命令前接收且与所述第一命令相邻的第四命令为写命令时,从所述服务器集群中选取执行完所述第二命令的服务器为所述候选服务器;

    所述命令分发装置发送所述第一命令至所述目标服务器包括:

    当在所述第一命令后接收且与所述第一命令相邻的第五命令为读命令时,发送所述第一命令和所述第五命令至所述目标服务器;

    其中,所述第一命令、所述第四命令以及所述第五命令所需操作数据的标识相同。

    28.根据权利要求23所述的系统,其特征在于,所述命令分发装置,还用于当所述第一命令为写命令时,发送所述第一命令至所述服务器集群中的主服务器;

    所述主服务器,用于接收所述第一命令,执行所述第一命令,以及将所述第一命令发送至所述服务器集群中除所述主服务器之外的从服务器;

    所述从服务器,用于接收所述第一命令并执行。

    29.根据权利要求28所述的系统,其特征在于,所述命令分发装置,还用于判断是否接收到用于指示第六命令执行完成的返回消息,当接收到所述返回消息时,执行所述发送所述第一命令至所述服务器集群中的主服务器的步骤,所述返回消息为执行所述第六命令的服务器执行完成所述第六命令后返回的消息,所述第六命令是在所述第一命令前接收且与所述第一命令的接收时间相距最近的读命令,所述第一命令与所述第六命令所需操作数据的标识相同。

    30.根据权利要求29所述的系统,其特征在于,所述命令分发装置判断是否接收到用于指示第六命令执行完成的返回消息包括:

    当在所述第一命令前接收且与所述第一命令相邻的第七命令为读命令时,判断是否接收到用于指示第六命令执行完成的返回消息;

    其中,所述第一命令与所述第七命令所需操作数据的标识相同。

    技术总结
    本发明实施例公开一种分布式系统中命令分发方法、装置及系统,该方法包括:接收客户端发送的携带有命令类型的第一命令;当第一命令的命令类型用于指示第一命令为读命令时,根据预设规则从服务器集群中选取一个服务器作为目标服务器,服务器集群包括分布式系统中的所有服务器或存储有第一命令所需操作数据的服务器;发送第一命令至目标服务器,以触发目标服务器执行第一命令。实施本发明实施例,可以降低服务器集群中主服务器上的负载。

    技术研发人员:吴国军;黄西华;刘存伟
    受保护的技术使用者:华为技术有限公司
    技术研发日:2016.02.29
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7520.html

    最新回复(0)