CN112671905B - 服务调度方法、装置及系统 - Google Patents
服务调度方法、装置及系统 Download PDFInfo
- Publication number
- CN112671905B CN112671905B CN202011542404.5A CN202011542404A CN112671905B CN 112671905 B CN112671905 B CN 112671905B CN 202011542404 A CN202011542404 A CN 202011542404A CN 112671905 B CN112671905 B CN 112671905B
- Authority
- CN
- China
- Prior art keywords
- state
- data
- node
- nodes
- unprocessed
- 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.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种服务调度方法、装置及系统,所述方法包括:获取多个用户请求;对所述多个用户请求进行分片处理,获取多个分片数据;通过路由集群将各所述分片数据发送至节点集群中对应的多个状态节点,并检测所述多个状态节点的运行数据;在根据所述运行数据确定任一所述状态节点处于断线状态时,将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种服务调度方法、装置及系统。
背景技术
在应用于游戏架构的分布式系统中,当接收到多个用户请求时,为提高处理效率,会对多个用户请求对应的多个工作流实例进行数据分片,并将分片后的数据转发至多个节点中进行处理。但是这种处理方式,会出现当某个节点宕机时,整个请求数据无法完全提交,进而导致需要重新提交请求或者通过工单要求恢复。因此这种方式大大降低了对用户请求的执行效率,且对于系统而言,工作流实例运行到一半可能导致有某些中间的资源无法被释放,出现孤立的资源导致系统不一致,影响工作流实例的执行效率和可靠性。
发明内容
本申请的目的在于至少解决现有技术中存在的技术问题之一,提供一种服务调度方法、装置以及电子设备,在节点宕机情况下,保证用户请求的执行效率和高可靠性。
本申请实施例提供一种服务调度方法,包括:
获取多个用户请求;
对所述多个用户请求进行分片处理,获取多个分片数据;
通过路由集群将各所述分片数据发送至节点集群中对应的多个状态节点,并检测所述多个状态节点的运行数据;
在根据所述运行数据确定任一所述状态节点处于断线状态时,将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理。
进一步的,所述对所述多个用户请求进行分片处理,获取多个分片数据,包括:
对所述用户请求进行分片处理,获取分片数据集,以根据各所述分片数据集形成多个分片数据。
进一步的,所述将各所述分片数据发送至对应的多个状态节点,包括:
根据被广播至所述路由集群以及所述多个状态节点的路由表,通过所述路由集群,将所述分片数据基于所述分片数据的哈希值发送至对应的状态节点,其中,所述路由表根据所述多个状态节点生成。进一步的,所述多个状态节点根据所述节点集群中各节点的在线状态确定。
进一步的,所述将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点的至少一个在线的状态节点进行处理,包括:
将处于断线状态的所述状态节点中未处理的分片数据,均摊到所述多个状态节点中的其余所述状态节点上进行处理。
进一步的,所述将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理,包括:
将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中与处于断线状态的状态节点互为副本的状态节点进行处理。
进一步的,将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理,包括:
将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中存在所述未处理的分片数据的数据副本的所述状态节点进行处理。
进一步的,在将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理之前,还包括:
根据数据库中记录的处于断线状态的所述状态节点的执行过程数据,获取处于断线状态的所述状态节点中未处理的分片数据。
进一步的,在本申请实施例中,还提供了一种服务调度装置,包括:
请求获取模块,用于获取用户请求;
数据分片模块,用于对所述用户请求进行分片处理,获取多个分片数据;
数据监测模块,用于将各所述分片数据发送至对应的多个状态节点,并检测所述多个状态节点的运行数据;
数据调度模块,用于在根据所述运行数据确定任一所述状态节点处于断线状态时,将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理。
进一步的,在本申请实施例中,还提供了一种服务调度系统,包括路由集群,由多个节点组成的节点集群,以及如上述实施例所述的服务器,所述路由集群以及各所述节点与所述服务器连接。
进一步的,本申请实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的服务调度方法。
进一步的,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上述实施例所述的服务调度方法。
相比于现有技术,上述实施例通过将获取的多个用户请求进行分片处理后的各个用户请求发送到对应的状态节点中,并通过检测状态节点的运行数据来确定节点状态,最终将处于断线状态的节点的数据发送到其他处于在线状态的节点进行处理,使得在某个节点宕机时,能够对宕机节点的数据进行处理,避免重新提交请求,提高了对多个用户请求的执行效率。
上述实施例通过各个用户请求进行分片处理,得到分片数据集后再发送到对应的状态节点中进行数据处理,进一步地缓解了数据量大的数据集的数据处理,提高了对用户请求的执行效率。
上述实施例通过分片数据的哈希值确定状态节点,再依据转态节点生成的路由表来进行分片数据的发送,使得分片数据能够较快速且准确地发送到对应的状态节点中,提高了数据运行的效率。
上述实施例通过哈希值和节点是否在线来确定状态节点,从而保证分片数据所发送的状态节点处于在线状态,避免分片数据遇到断线状态的状态节点需要进行多次转移。
上述实施例通过将处于断线状态的状态节点的未处理数据均摊到其余状态节点中,能够避免数据过多地分发到单个状态节点导致增加了该状态节点的负担,并且均摊方式能够提高整体的数据运行效率。
上述实施例通过将处于断线状态的状态节点的未处理数据发送到与该节点互为副本的节点中进行处理,能够提高分布式系统的容错率以及可用性。
上述实施例通过将处于断线状态的状态节点的未处理数据发送到与该数据互为副本的节点中进行处理,能够提高分布式系统的容错率以及可用性,同时相较于节点副本的方式进一步提高了分布式系统节点集群的容错率。
上述实施例通过数据库中记录的处于断线状态的状态节点的执行过程数据来得到未处理的分片数据,从而能够只将处于断线状态的状态节点中未处理部分的数据发送到其余节点中进行处理,降低了系统负担,提高了数据运行效率。
附图说明
下面结合附图和实施例对本申请进一步地说明;
图1为一个实施例中服务调度方法的应用环境图;
图2为一个实施例中服务调度方法的流程示意图;
图3为一个实施例中分片数据到对应状态节点的示意图;
图4为再一个实施例中服务调度方法的流程示意图;
图5为再一个实施例中分片数据到对应状态节点的示意图;
图6为另一个实施例中服务调度方法的流程示意图;
图7为又一个实施例中服务调度方法的流程示意图;
图8为还有一个实施例中服务调度方法的流程示意图;
图9为一个实施例中服务调度装置的结构框图;
图10为一个实施例中计算机设备的结构框图;
图11为一个实施例中服务调度系统的结构框图。
具体实施方式
本部分将详细描述本申请的具体实施例,本申请之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本申请的每个技术特征和整体技术方案,但其不能理解为对本申请保护范围的限制。
在现有的应用于游戏架构的分布式系统中,当接收到多个用户请求时,为提高处理效率,会对多个用户请求对应的工作流实例进行数据分片,并将分片后的数据转发至多个节点中进行处理。但是这种处理方式,会出现当某个节点宕机时,整个请求数据无法完全提交,进而导致需要重新提交请求或者通过工单要求恢复。因此这种方式大大降低了对用户请求的执行效率,且对于系统而言,工作流实例运行到一半可能导致有某些中间的资源无法被释放,出现孤立的资源导致系统不一致,影响工作流实例的执行效率和可靠性。
为了解决上述技术问题,如图1所示,是一个实施例中服务调度方法的应用环境图。参照图1,该服务调度系统包括状态管理110和状态节点服务器120。状态管理服务器110和状态节点服务器120通过网络连接。状态管理服务器110和状态节点服务器120均可以用独立的服务器120或者是多个服务器120组成的服务器120集群来实现。
下面,将通过几个具体的实施例对本申请实施例提供的服务调度方法进行详细介绍和说明。
如图2所示,在一个实施例中,提供了一种服务调度方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的状态管理服务器110。
参照图2,该服务调度方法具体包括如下步骤:
S11、获取多个用户请求。
在本实施例中,状态管理服务器接收用户输入的多个用户请求,各个用户请求中均携带有原始数据集,其中,对于原始数据集的格式及内容不作具体限定。
S12、对多个用户请求进行分片处理,获取多个分片数据。
由于用户请求总数较多,单节点存储的压力大,甚至会出现超出存储范围的情况。因此在本实施例中,状态管理服务器对多个用户请求进行分片处理后,获取各个用户请求对应的原始数据集作为分片数据进行分布式存储。在本实施例中,分片处理为将多个用户请求进行拆分,分为独立的一个个用户请求。作为本实施例的一个举例,三个用户请求分别为用户请求1“对数据集1-100进行累加”、用户请求2“找出数据集1-100中的质数”、用户请求3“对数据集1-100进行累乘”。对这三个用户请求进行分片处理,得到三个用户请求分别对应的原始数据集。
S13、通过路由集群将各分片数据发送至节点集群中对应的多个状态节点,并检测多个状态节点的运行数据。
在本实施例中,状态管理服务器通过路由集群将各分片数据转发到多个状态节点中,发送完毕后的状态节点及相应分片数据的如图3所示,其中,状态节点为如图1所示的状态服务器,状态节点可以从节点集群中通过随机方式进行确定,也可以预先进行设定。状态管理服务器将分片数据发送到对应状态节点后,检测接收分片数据的各状态节点的运行数据,其中,运行数据为状态节点的状态信息,即检测状态节点处于断线状态还是在线状态。
在本实施例中,状态管理服务器检测状态节点的运行数据,可以通过定时向状态节点发送keepalive数据包,用于感知状态节点处于上线还是断线。
其中,keepalive数据包为tcp协议中的探测包,用于探测连接的对端是否在线。
S14、在根据运行数据确定任一状态节点处于断线状态时,将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中的至少一个在线的状态节点进行处理。
在本实施例中,当根据运行数据确定任一状态节点处于断线状态时,状态管理服务器将该状态节点未处理的分片数据发送到其余处于在线状态的状态节点中,其中,状态管理服务器可以通过路由集群来发送未处理的分片数据。对于分片数据在处于在线状态的状态节点的分配,可以将所有未处理的分片数据发送到一个处于在线状态的状态节点中,也可以将未处理的分片数据随机划分数据量,再随机发送到处于在线状态的状态节点中。例如,对于用户请求1中“对数据集1-100进行累加”,可以将“对数据集1-100进行累加”发送到处于在线状态的状态节点中,也可以将“对数据集1-50进行累加”和“对数据集51-100进行累加”发送到处于在线状态的不同状态节点中。
在本实施例中,对于根据运行数据确定任一状态节点处于断线状态的方式,可以为某运行数据显示其对应状态节点处于断线状态,也可以为当接入节点断线超过一定的时间没有恢复。
在一个实施例中,将处于断线状态的状态节点中未处理的分片数据,发送至多个状态节点中的至少一个在线的状态节点进行处理,包括:
将处于断线状态的状态节点中未处理的分片数据,均摊到多个状态节点中的其余状态节点上进行处理。
在本实施例中,对于分片数据在处于在线状态的状态节点的分配,状态管理服务器将未处理的分片数据的数据量平均发送到处于在线状态的各个状态节点中。例如,处于在线状态的状态节点共有5个,未处理的分片数据为对[51,100]进行累加处理,将未处理的分片数据平均分为5个子分片数据,分别为[51,60]、[61,70]、[71,80]、[81,90]、[91,100],将上述子分片数据发送到处于在线状态的状态节点中,每个状态节点接收一个子分片数据。
在本实施例中,通过将处于断线状态的状态节点的未处理数据均摊到其余状态节点中,能够避免数据过多地分发到单个状态节点导致增加了该状态节点的负担,并且均摊方式能够提高整体的数据运行效率。
在一个实施例中,在将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中的至少一个在线的状态节点进行处理之前,还包括:
根据数据库中记录的处于断线状态的状态节点的执行过程数据,获取处于断线状态的状态节点中未处理的分片数据。
在本实施例中,状态管理服务器根据数据库中记录的处于断线状态的状态节点的执行过程数据,从而来获取该状态节点中未处理的分片数据,即获取未处理的分片数据中未被处理的部分,并将该部分数据发送到其他在线的状态节点中。例如,状态节点1中有分片数据[0,100],该状态节点在线状态下处理了[0,50]部分的数据,并且数据库一直记录该状态节点的执行过程数据,即[0,50]的数据,然后该状态节点处于断线状态,此时状态管理服务器从状态节点1中获取未被处理的[51,100]的数据,并将[51,100]数据发送到其他处于在线状态的状态节点中进行处理。
在本实施例中,通过数据库中记录的处于断线状态的状态节点的执行过程数据来得到未处理的分片数据,从而能够只将处于断线状态的状态节点中未处理部分的数据发送到其余节点中进行处理,降低了系统负担,提高了数据运行效率。
在现有技术中存在一种解决由于节点宕机导致工作流实例无法被处理的方法,其通过判断负责执行的节点是否失联,并在负责执行的节点失联时,重新创建一个新的节点来执行。而在上述实施例中,在某个节点宕机情况下,不需要通过创建新节点的方式来建立新节点的连接,而是状态服会将数据副本升级为主节点,将数据分片发送至该主节点直接工作。这能够避免导致出现反复的数据交互,从而提高对工作流实例的执行效率。并且在游戏架构中,服务常常是有状态的,请求的会话需要和特定的节点相关联,因此不需要创建新节点的方式能够避免重新进行状态监控,使得执行过程更为简单,可靠性和效率得到提高。
如图4所示,在再一个实施例中,提供了一种服务调度方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的状态管理服务器110。
参照图4,该服务调度方法具体包括如下步骤:
S21、获取多个用户请求。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S22、对用户请求进行分片处理,获取分片数据集,以根据各分片数据集形成多个分片数据。
在本实施例中,状态管理服务器对多个用户请求中的每个用户请求对应的原始数据进行分片处理,其中,分片处理即对原始数据进行拆分,原始数据拆分后的各个数据即为分片数据,例如1-100这一百个数,可以将其分片处理为十组,每组包含10个数,每组即为一个分片数据。
S23、通过路由集群将各分片数据发送至节点集群中对应的多个状态节点,并检测多个状态节点的运行数据。
在本实施例中,状态管理服务器通过路由集群将各分片数据转发到多个状态节点中,发送完毕后的状态节点及相应分片数据的如图5所示,其中,状态节点为如图1所示的状态服务器,状态节点可以从节点集群中通过随机方式进行确定,也可以预先进行设定。状态管理服务器将分片数据发送到对应状态节点后,检测接收分片数据的各状态节点的运行数据,其中,运行数据为状态节点的状态信息,即检测状态节点处于断线状态还是在线状态。
在本实施例中,状态管理服务器检测状态节点的运行数据,可以通过定时向状态节点发送keepalive数据包,用于感知状态节点处于上线还是断线。
其中,keepalive数据包为tcp协议中的探测包,用于探测连接的对端是否在线。
S24、在根据运行数据确定任一状态节点处于断线状态时,将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中的至少一个在线的状态节点进行处理。
在本实施例中,当根据运行数据确定任一状态节点处于断线状态时,状态管理服务器将该状态节点未处理的分片数据发送到其余处于在线状态的状态节点中,其中,状态管理服务器可以通过路由集群来发送未处理的分片数据。对于分片数据在处于在线状态的状态节点的分配,可以将所有未处理的分片数据发送到一个处于在线状态的状态节点中,也可以将未处理的分片数据随机划分数据量,再随机发送到处于在线状态的状态节点中。
在本实施例中,对于根据运行数据确定任一状态节点处于断线状态的方式,可以为某运行数据显示其对应状态节点处于断线状态,也可以为当接入节点断线超过一定的时间没有恢复。
在一个实施例中,将处于断线状态的状态节点中未处理的分片数据,发送至多个状态节点中的至少一个在线的状态节点进行处理,包括:
将处于断线状态的状态节点中未处理的分片数据,均摊到多个状态节点中的其余状态节点上进行处理。
在本实施例中,对于分片数据在处于在线状态的状态节点的分配,状态管理服务器将未处理的分片数据的数据量平均发送到处于在线状态的各个状态节点中。例如,处于在线状态的状态节点共有10个,未处理的分片数据为[500,600],将未处理的分片数据平均分为10个子分片数据,分别为[500,510]、[510,520]、[520,530]、[530,540]、[540,550]、[550,560]、[560,570]、[570,580]、[580,590]、[590,600],将上述子分片数据发送到处于在线状态的状态节点中,每个状态节点接收一个子分片数据。
在本实施例中,通过将处于断线状态的状态节点的未处理数据均摊到其余状态节点中,能够避免数据过多地分发到单个状态节点导致增加了该状态节点的负担,并且均摊方式能够提高整体的数据运行效率。
在一个实施例中,在将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中的至少一个在线的状态节点进行处理之前,还包括:
根据数据库中记录的处于断线状态的状态节点的执行过程数据,获取处于断线状态的状态节点中未处理的分片数据。
在本实施例中,状态管理服务器根据数据库中记录的处于断线状态的状态节点的执行过程数据,从而来获取该状态节点中未处理的分片数据,即获取未处理的分片数据中未被处理的部分,并将该部分数据发送到其他在线的状态节点中。例如,状态节点1中有分片数据[0,100],该状态节点在线状态下处理了[0,50]部分的数据,并且数据库一直记录该状态节点的执行过程数据,即[0,50]的数据,然后该状态节点处于断线状态,此时状态管理服务器从状态节点1中获取未被处理的[51,100]的数据,并将[51,100]数据发送到其他处于在线状态的状态节点中进行处理。
在本实施例中,通过各个用户请求进行分片处理,得到分片数据集后再发送到对应的状态节点中进行数据处理,进一步地缓解了单个请求对应的数据量较大的实例的数据处理,提高了对用户请求的执行效率。同时通过在节点宕机时将该节点中未处理的分片数据发送至其他在线的状态节点进行处理的方式,避免在某个节点宕机时,该请求无法被完全提交,导致该请求对应的工作流实例无法执行,从而保证用户请求的执行效率和高可靠性。
如图6所示,在另一个实施例中,提供了一种服务调度方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的状态管理服务器110。
参照图6,该服务调度方法具体包括如下步骤:
S31、获取多个用户请求。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S32、对多个用户请求进行分片处理,获取多个分片数据。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S33、根据被广播至路由集群以及多个状态节点的路由表,通过路由集群,将分片数据基于分片数据的哈希值发送至对应的状态节点,其中,路由表根据多个状态节点生成,并检测多个状态节点的运行数据。在本实施例中,状态管理服务器将路由表广播至路由集群以及多个状态节点,其中,路由表指的是存储在路由器或者联网计算机中的电子表格或者数据库,路由表中存储着指向特定网络地址的路径。因此在本实施例中,根据多个状态节点所在的路径,生成路由表。状态管理服务器根据路由表上存储的指向特定网络地址的路径,将各分片数据发送到依据哈希值确定的对应的状态节点中。状态管理服务器将分片数据发送到对应状态节点后,检测接收分片数据的各状态节点的运行数据,其中,运行数据为状态节点的状态信息,即检测状态节点处于断线状态还是在线状态。
在本实施例中,状态管理服务器检测状态节点的运行数据,可以通过定时向状态节点发送keepalive数据包,用于感知状态节点处于上线还是断线。
在本实施例中,对于多个分片数据的哈希值,可以通过哈希算法进行计算得到,其中,哈希算法可以为MD4、MD5、SHA-1等。哈希值计算方式以及哈希算法的选择较为常见,在本实施例中不再赘述。
计算得到哈希值后,可以采用hash方式、一致性hash等方式确定对应的多个状态节点。例如,采用hash方式,节点集群中共有三个状态节点,分别为node0、node1、node2,分片数据共有五个,分别计算得到的哈希值为247、760、903、533、302,对计算得到的哈希值对节点个数N=3进行取余,余数表示该哈希值对应的分片数据在节点集群中的位置。因此,可见node0中有哈希值903对应的分片数据,node1中有247、760对应的分片数据,node2中有533、302对应的分片数据。
在一个实施例中,所述多个状态节点根据所述节点集群中各节点的在线状态确定。在本实施例中,对于多个分片数据的哈希值,可以通过哈希算法进行计算得到,其中,哈希算法可以为MD4、MD5、SHA-1等。哈希值计算方式以及哈希算法的选择较为常见,在本实施例中不再赘述。状态管理服务器获取各分片数据对应的哈希值后,检测节点集群中各状态节点的是否处于在线状态。当状态节点处于在线状态时,该状态节点才能够接收分片数据。例如,例如,采用hash方式,节点集群中共有五个状态节点,分别为node0、node1、node2、node3、node4,分片数据共有五个,分别计算得到的哈希值为247、760、903、533、302。状态管理服务器通过定时向五个状态节点分别发送keepalive数据包,用于感知各状态节点处于上线还是断线。检测后发现只有node0、node1、node2处于在线状态,对计算得到的哈希值对节点个数N=3进行取余,余数表示该哈希值对应的分片数据在节点集群中的位置。因此,可见node0中有哈希值903对应的分片数据,node1中有247、760对应的分片数据,node2中有533、302对应的分片数据。
在本实施例中,检测状态节点的运行状态后,对处于在线状态的各状态节点可以进行重新排序,以进行分片数据依据哈希值进行的分配。例如,当检测后发现只有node2、node3、node4处于在线状态时,状态节点node2、node3、node4可对应重新排序为node0、node1、node2,状态节点node0和node1则排序为node3和node4。
在本实施例中,通过哈希值和节点是否在线来确定状态节点,从而保证分片数据所发送的状态节点处于在线状态,避免分片数据遇到断线状态的状态节点需要进行多次转移。
S34、在根据运行数据确定任一状态节点处于断线状态时,将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中的至少一个在线的状态节点进行处理。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
在本实施例中,通过分片数据的哈希值确定状态节点,再依据转态节点生成的路由表来进行分片数据的发送,使得分片数据能够较快速且准确地发送到对应的状态节点中,提高了数据运行的效率。
如图7所示,在又一个实施例中,提供了一种服务调度方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的状态管理服务器110。
参照图7,该服务调度方法具体包括如下步骤:
S41、获取多个用户请求。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S42、对多个用户请求进行分片处理,获取多个分片数据。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S43、通过路由集群将各分片数据发送至节点集群中对应的多个状态节点,并检测多个状态节点的运行数据。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S44、在根据运行数据确定任一状态节点处于断线状态时,将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中与处于断线状态的状态节点互为副本的状态节点进行处理。
在本实施例中,在分片数据发送到对应的状态节点时,为了增加容错率,状态管理服务器将相同的分片数据发送到另一状态节点中,此时该另一状态节点即与前一状态节点互为副本。例如,状态管理服务器将分片数据1发送到对应的状态节点1中,同时为了增加容错率将分片数据1发送到状态节点2中,此时状态节点1和状态节点2互为副本,将状态节点1和状态节点2相关联,相关联方式可以为状态节点1地址和状态节点2地址的绑定。当状态节点1处于断线状态时,状态管理服务器根据相关联信息找到状态节点2,通过状态节点2处理分片数据1。
在本实施例中,状态管理服务器还可以根据数据库中记录的处于断线状态的状态节点的执行过程数据,从而来获取该状态节点中未处理的分片数据,即获取未处理的分片数据中未被处理的部分,并将该部分数据发送到状态节点2中。例如,状态节点1中有分片数据[0,100],该状态节点在线状态下处理了[0,50]部分的数据,并且数据库一直记录该状态节点的执行过程数据,即[0,50]的数据,然后该状态节点处于断线状态,此时状态管理服务器从状态节点1中获取未被处理的[51,100]的数据,并将[51,100]数据发送到状态节点2中进行处理。
在本实施例中,通过将处于断线状态的状态节点的未处理数据发送到与该节点互为副本的节点中进行处理,能够提高分布式系统的容错率以及可用性。
如图8所示,在还有一个实施例中,提供了一种服务调度方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的状态管理服务器110。
参照图8,该服务调度方法具体包括如下步骤:
S51、获取多个用户请求。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S52、对多个用户请求进行分片处理,获取多个分片数据。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S53、通过路由集群将各分片数据发送至节点集群中对应的多个状态节点,并检测多个状态节点的运行数据。
此步骤与上述实施例相同,具体解析可以参照上述实施例,为了避免重复,在此不再赘述。
S54、在根据运行数据确定任一状态节点处于断线状态时,将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中存在未处理的分片数据的数据副本的状态节点进行处理。
在本实施例中,在本实施例中,在分片数据发送到对应的状态节点时,为了增加容错率,状态管理服务器将分片数据进行拆分处理,例如将分片数据[0,100]拆分为[0,40]、[41,70]、[71,100]三个数据段。状态管理服务器将拆分后的三个数据段发送到一个状态节点中,并将三个数据段单独或分别组合发送到另外的状态节点中作为副本。例如,将数据段[0,40]、[41,70]、[71,100]发送到状态节点1中,将数据段[0,40]发送到状态节点2中,将数据段[41,70]发送到状态节点3中,将数据段[71,100]发送到状态节点4中。此时状态节点2、3、4的数据与状态节点1的数据互为副本,并将状态节点2、3、4接收到的数据和地址与状态节点1相关联,相关联方式可以为将状态节点2的数据和地址与状态节点1的地址进行绑定。当状态节点1处于断线状态时,状态管理服务器可以根据数据库中记录的处于断线状态的状态节点1的执行过程数据,从而来获取状态节点1中未处理的分片数据,即获取未处理的分片数据中未被处理的部分,并将根据相关联信息令状态节点2、3、4中的一个或多个进行数据处理。例如,状态节点1中有分片数据[0,100],状态节点1在线状态下处理了[0,40]部分的数据,并且数据库一直记录状态节点1的执行过程数据,即[0,40]的数据,然后状态节点1处于断线状态,此时状态管理服务器根据未处理的数据[41,70]、[71,100]找到对应的状态节点3和状态节点4,通过状态节点3和4继续处理数据[41,70]、[71,100]。
在本实施例中,通过将处于断线状态的状态节点的未处理数据发送到与该数据互为副本的节点中进行处理,能够提高分布式系统的容错率以及可用性,同时相较于节点副本的方式进一步提高了分布式系统节点集群的容错率。
在一个实施例中,如图9所示,提供了一种服务调度装置,包括:
请求获取模块101,用于获取多个用户请求。
数据分片模块102,用于对多个用户请求进行分片处理,获取多个分片数据。
数据监测模块103,用于将各分片数据发送至对应的多个状态节点,并检测多个状态节点的运行数据。
数据调度模块104,用于在根据运行数据确定任一状态节点处于断线状态时,将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中的至少一个在线的状态节点进行处理。
在一个实施例中,数据分片模块102,还用于:
对用户请求进行分片处理,获取分片数据集,以根据各分片数据集形成多个分片数据。
在一个实施例中,数据监测模块103,还用于:
根据被广播至路由集群以及多个状态节点的路由表,通过路由集群,将分片数据基于分片数据的哈希值发送至对应的状态节点,其中,路由表根据多个状态节点生成,并检测多个状态节点的运行数据在一个实施例中,数据监测模块103,还用于:
根据多个分片数据的哈希值和节点集群中各节点的在线状态,从节点集群中确定对应的多个状态节点。
在一个实施例中,数据调度模块104,还用于:
将处于断线状态的状态节点中未处理的分片数据,均摊到多个状态节点中的其余状态节点上进行处理。
在一个实施例中,数据调度模块104,还用于:
将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中与处于断线状态的状态节点互为副本的状态节点进行处理。
在一个实施例中,数据调度模块104,还用于:
将处于断线状态的状态节点中未处理的分片数据,通过多个状态节点中存在未处理的分片数据的数据副本的状态节点进行处理。
在一个实施例中,提供了一种计算机设备,如图10所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现服务调度方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行服务调度方法。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的服务调度装置可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行。计算机设备的存储器中可存储组成该服务调度装置的各个程序模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的服务调度方法中的步骤。
在一个实施例中,提供了一种服务调度系统,如图11所示,该服务调度系统包括路由集群,由多个节点组成的节点集群,以及如上述实施例所述的服务器,所述路由集群以及各所述节点与所述服务器连接。
在一个实施例中,提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时执行上述服务调度方法的步骤。此处服务调度方法的步骤可以是上述各个实施例的服务调度方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述服务调度方法的步骤。此处服务调度方法的步骤可以是上述各个实施例的服务调度方法中的步骤。
以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (8)
1.一种服务调度方法,其特征在于,包括:
获取多个用户请求;
对所述多个用户请求进行分片处理,获取多个分片数据;
通过路由集群将各所述分片数据发送至节点集群中对应的多个状态节点,并检测所述多个状态节点的运行数据;所述将各所述分片数据发送至对应的多个状态节点,包括:根据被广播至所述路由集群以及所述多个状态节点的路由表,通过所述路由集群,将所述分片数据基于所述分片数据的哈希值发送至对应的状态节点,其中,所述路由表根据所述多个状态节点生成;
在根据所述运行数据确定任一所述状态节点处于断线状态时,将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理;将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理,包括:将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中存在所述未处理的分片数据的数据副本的所述状态节点进行处理;
在将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理之前,还包括:根据数据库中记录的处于断线状态的所述状态节点的执行过程数据,获取处于断线状态的所述状态节点中未处理的分片数据。
2.根据权利要求1所述的服务调度方法,其特征在于,所述对所述多个用户请求进行分片处理,获取多个分片数据,包括:
对所述用户请求进行分片处理,获取分片数据集,以根据各所述分片数据集形成所述多个分片数据。
3.根据权利要求1所述的服务调度方法,其特征在于,所述多个状态节点根据所述节点集群中各节点的在线状态确定。
4.根据权利要求1或2所述的服务调度方法,其特征在于,所述将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理,包括:
将处于断线状态的所述状态节点中未处理的分片数据,均摊到所述多个状态节点中的其余所述状态节点上进行处理。
5.根据权利要求1或2所述的服务调度方法,其特征在于,所述将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理,包括:
将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中与处于断线状态的状态节点互为副本的状态节点进行处理。
6.一种服务调度装置,其特征在于,包括:
请求获取模块,用于获取用户请求;
数据分片模块,用于对所述用户请求进行分片处理,获取多个分片数据;
数据监测模块,用于将各所述分片数据发送至对应的多个状态节点,并检测所述多个状态节点的运行数据;所述将各所述分片数据发送至对应的多个状态节点,包括:根据被广播至路由集群以及所述多个状态节点的路由表,通过所述路由集群,将所述分片数据基于所述分片数据的哈希值发送至对应的状态节点,其中,所述路由表根据所述多个状态节点生成;
数据调度模块,用于在根据所述运行数据确定任一所述状态节点处于断线状态时,将处于断线状态的所述状态节点中未处理的分片数据,发送至所述多个状态节点中的至少一个在线的状态节点进行处理;将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理,包括:将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中存在所述未处理的分片数据的数据副本的所述状态节点进行处理;在将处于断线状态的所述状态节点中未处理的分片数据,通过所述多个状态节点中的至少一个在线的状态节点进行处理之前,还包括:根据数据库中记录的处于断线状态的所述状态节点的执行过程数据,获取处于断线状态的所述状态节点中未处理的分片数据。
7.一种服务器,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一项所述的服务调度方法。
8.一种服务调度系统,包括路由集群,由多个节点组成的节点集群,以及如权利要求7所述的服务器,所述路由集群以及各所述节点与所述服务器连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542404.5A CN112671905B (zh) | 2020-12-23 | 2020-12-23 | 服务调度方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542404.5A CN112671905B (zh) | 2020-12-23 | 2020-12-23 | 服务调度方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671905A CN112671905A (zh) | 2021-04-16 |
CN112671905B true CN112671905B (zh) | 2023-04-28 |
Family
ID=75409259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011542404.5A Active CN112671905B (zh) | 2020-12-23 | 2020-12-23 | 服务调度方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671905B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526648A (zh) * | 2017-08-10 | 2017-12-29 | 天脉聚源(北京)科技有限公司 | 一种处理节点设备宕机的方法及装置 |
CN108920272A (zh) * | 2018-06-08 | 2018-11-30 | 中国平安人寿保险股份有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN109327539A (zh) * | 2018-11-15 | 2019-02-12 | 上海天玑数据技术有限公司 | 一种分布式块存储系统及其数据路由方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104283906B (zh) * | 2013-07-02 | 2018-06-19 | 华为技术有限公司 | 分布式存储系统、集群节点及其区间管理方法 |
CN104917798A (zh) * | 2014-03-13 | 2015-09-16 | 北京奇虎科技有限公司 | 一种数据更新的方法和系统 |
CN105511805B (zh) * | 2015-11-26 | 2019-03-19 | 深圳市中博科创信息技术有限公司 | 集群文件系统的数据处理方法和装置 |
CN112118315A (zh) * | 2020-09-18 | 2020-12-22 | 北京有竹居网络技术有限公司 | 数据处理系统、方法、装置、电子设备和存储介质 |
-
2020
- 2020-12-23 CN CN202011542404.5A patent/CN112671905B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526648A (zh) * | 2017-08-10 | 2017-12-29 | 天脉聚源(北京)科技有限公司 | 一种处理节点设备宕机的方法及装置 |
CN108920272A (zh) * | 2018-06-08 | 2018-11-30 | 中国平安人寿保险股份有限公司 | 一种数据处理方法、装置、计算机设备及存储介质 |
CN109327539A (zh) * | 2018-11-15 | 2019-02-12 | 上海天玑数据技术有限公司 | 一种分布式块存储系统及其数据路由方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112671905A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10778801B2 (en) | Content delivery network architecture with edge proxy | |
CN108023812B (zh) | 云计算系统的内容分发方法及装置、计算节点及系统 | |
CN110336848B (zh) | 一种访问请求的调度方法及调度系统、设备 | |
CN102571788B (zh) | 一种样本收集方法及系统 | |
CN110069210B (zh) | 一种存储系统、存储资源的分配方法及装置 | |
CN112650721A (zh) | 一种文件存储方法、装置、系统以及设备 | |
CN105338090A (zh) | 一种基于WebSocket的断点续传方法及装置 | |
CN110740144B (zh) | 确定攻击目标的方法、装置、设备及存储介质 | |
CN103634224A (zh) | 网络中数据传输的方法和系统 | |
CN113810304A (zh) | 一种负载均衡方法、装置、设备和计算机存储介质 | |
CN103312593B (zh) | 一种消息分发系统及方法 | |
CN110633168A (zh) | 一种分布式存储系统的数据备份方法和系统 | |
WO2022141021A1 (zh) | 一种文件存储方法、装置、系统以及设备 | |
CN108156024B (zh) | 一种基于分布式网站可用性探测方法、系统及存储介质 | |
CN107979539A (zh) | 报文处理方法及装置 | |
CN110798402B (zh) | 业务消息处理方法、装置、设备及存储介质 | |
CN106790610B (zh) | 一种云系统消息分发方法,装置和系统 | |
CN112671905B (zh) | 服务调度方法、装置及系统 | |
CN110661836B (zh) | 消息路由方法、装置及系统、存储介质 | |
CN111600929A (zh) | 传输线路探测方法、路由策略生成方法及代理服务器 | |
CN114928615B (zh) | 负载均衡方法、装置、设备及可读存储介质 | |
KR101883671B1 (ko) | 노드 분산 방법 및 이를 수행하는 관리 서버 | |
US10992702B2 (en) | Detecting malware on SPDY connections | |
CN105939278B (zh) | 一种流量处理方法及装置 | |
CN113438274A (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 |