事件分发系统、方法及装置与流程

文档序号:17180255发布日期:2019-03-22 20:50阅读:193来源:国知局
事件分发系统、方法及装置与流程
本发明涉及计算机
技术领域
,特别涉及一种事件分发系统、方法及装置。
背景技术
:近年来,随着计算机技术日益成熟,互联网处理事件及业务所依赖的服务器的规模也越来越大。由于用户的事件正在不断的扩展,为了减轻服务器的处理负担,往往需要采用分布式系统处理用户的多个事件。发布者将多个事件发布至分布式系统中,由分布式系统中的多个处理节点对多个事件进行分发并分别处理,处理节点可为分布式系统中的consumer(消费者)。目前,分布式系统通常采用kafka(分布式发布订阅消息系统)实现将事件分发到多个consumer进行处理。在通过kafka分发多个事件时,先对多个事件进行集合并按照事件的序号对集合中的事件排序,生成事件队列,并将事件队列中的各个事件的状态置为未分发状态;随后,分布式系统中的多个consumer进行集合,并按照consumer的序号对集合中的consumer进行排序,且各个consumer的状态置为未分发状态,同时,计算平均每个consumer需要处理的事件个数x。在事件队列中选取x个序号最小的且连续的事件,分发给序号最小的consumer,由序号最小的consumer处理这x个事件,并将这x个事件和序号最小的consumer的状态更改为已分发状态。重复执行上述为consumer分发事件的步骤,直至事件队列中的全部事件均分发完毕。在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于事件按顺序分发给多个consumer处理,当多个consumer中的一个或者多个consumer发生诸如宕机等故障需要进行故障切换时,便需要重新按照事件的序号以及consumer的序号为多个consumer分发事件,这样,consumer与事件之间的对应关系便会发生整体位移,即使仅有某一个consumer需要进行故障切换,也会造成consumer与事件之间的对应关系的大规模变动,影响consumer在进行事件处理时的稳定性。技术实现要素:为了解决现有技术中处理节点进行故障切换时,导致处理节点与时间之间的对应关系发生整体位移,影响处理节点在进行事件处理时的稳定性的问题,本发明实施例提供了一种事件分发系统、方法及装置。所述技术方案如下:第一方面,提供了一种事件分发系统,所述事件分发系统包括调度服务器、至少一个事件生成节点以及多个处理节点;所述调度服务器用于获取所述事件分发系统中多个处理节点上传的多个剩余负载信息,基于所述多个剩余负载信息,生成第一负载权重表,将所述第一负载权重表发送至所述多个处理节点,所述第一负载权重表包括所述事件分发系统中多个处理节点当前的负载状况;所述至少一个事件生成节点中的每个事件生成节点用于根据待处理业务,生成多个第一事件,将所述多个第一事件分发至所述多个处理节点;所述多个处理节点中的每个处理节点用于接收所述多个第一事件,根据所述多个第一事件,确定所述多个第一事件在第一哈希环上的位置,将所述多个第一事件添加至所述第一哈希环的位置,按照各个事件在所述第一哈希环上的位置,依次处理所述处理节点到后一个处理节点之间的事件,所述第一哈希环上每两个处理节点之间的弧形线段用于指示所述两个处理节点中前一个处理节点的负载情况,所述位置用于指示所述第一事件的处理顺序。第二方面,提供了一种事件分发方法,所述事件分发方法应用于事件分发系统;调度服务器获取事件分发系统中多个处理节点上传的多个剩余负载信息;所述调度服务器基于所述多个剩余负载信息,生成第一负载权重表,所述第一负载权重表包括所述事件分发系统中多个处理节点当前的负载状况;所述调度服务器将所述第一负载权重表发送至多个处理节点;所述多个处理节点基于所述第一负载权重表生成第一哈希环;至少一个事件生成节点根据待处理业务,生成多个第一事件,将所述多个第一事件分发给所述多个处理节点;所述多个处理节点中的每个处理节点接收所述多个第一事件;根据所述多个第一事件,确定所述多个第一事件在所述第一哈希环上的位置,所述第一哈希环上每两个处理节点之间的弧形线段用于指示所述两个处理节点中前一个处理节点的负载情况;所述多个处理节点中的每个处理节点将所述多个第一事件添加至所述第一哈希环的位置,所述位置用于指示所述多个第一事件的处理顺序;所述多个处理节点中的每个处理节点按照各个事件在所述第一哈希环上的位置,依次处理所述处理节点到后一个处理节点之间的事件。第三方面,提供了一种事件分发方法,所述方法应用于事件分发系统中的处理节点,所述方法包括:接收待分发的多个第一事件,所述多个第一事件由事件生成节点根据待处理业务生成的;根据所述多个第一事件,确定所述多个第一事件在第一哈希环上的位置,所述第一哈希环上每两个处理节点之间的弧形线段用于指示所述两个处理节点中前一个处理节点的负载情况;将所述多个第一事件添加至所述第一哈希环的位置,所述位置用于指示所述第一事件的处理顺序;按照各个事件在所述第一哈希环上的位置,依次处理所述处理节点到后一个处理节点之间的事件。第四方面,提供了一种事件分发方法,所述方法应用于调度服务器,所述方法包括:获取事件分发系统中多个处理节点上传的多个剩余负载信息;基于所述多个剩余负载信息,生成第一负载权重表,所述第一负载权重表包括所述事件分发系统中多个处理节点当前的负载状况;将所述第一负载权重表发送至所述多个处理节点,由所述多个处理节点基于所述第一负载权重表生成第一哈希环,并基于所述第一哈希环对多个事件进行分发。第五方面,提供了一种事件分发装置,所述装置应用于事件分发系统中的处理节点,所述装置包括:接收模块,用于接收待分发的多个第一事件,所述多个第一事件由事件生成节点根据待处理业务生成的;位置确定模块,用于根据所述多个第一事件,确定所述多个第一事件在第一哈希环上的位置,所述第一哈希环上每两个处理节点之间的弧形线段用于指示所述两个处理节点中前一个处理节点的负载情况;添加模块,用于将所述多个第一事件添加至所述第一哈希环的位置,所述位置用于指示所述第一事件的处理顺序;处理模块,用于按照各个事件在所述第一哈希环上的位置,依次处理所述处理节点到后一个处理节点之间的事件。第六方面,提供了一种事件分发装置,所述装置应用于调度服务器,所述装置包括:获取模块,用于获取事件分发系统中多个处理节点上传的多个剩余负载信息;生成模块,用于基于所述多个剩余负载信息,生成第一负载权重表,所述第一负载权重表包括所述事件分发系统中多个处理节点当前的负载状况;发送模块,用于将所述第一负载权重表发送至所述多个处理节点,由所述多个处理节点基于所述第一负载权重表生成第一哈希环,并基于所述第一哈希环对多个事件进行分发。本发明实施例提供的技术方案带来的有益效果是:通过接收待分发的第一事件,根据第一事件,确定第一事件在第一哈希环上的位置,并将第一事件添加至第一哈希环的第一位置,使得无需按照事件的序号为事件进行排序,进一步地,处理节点无需按照序号处理事件,当存在进行故障切换的处理节点时,无需重新为处理节点分配事件,不会对分布式系统中的其他处理节点和事件之间的处理关系造成影响,提高了处理节点处理事件的稳定性。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的事件分发系统的架构图;图2a是本发明实施例提供的事件分发方法流程图;图2b是本发明实施例提供的事件分发方法示意图;图2c是本发明实施例提供的事件分发方法示意图;图2d是本发明实施例提供的事件分发方法流程图;图2e是本发明实施例提供的事件分发方法示意图;图3a是本发明实施例提供的事件分发装置结构示意图;图3b是本发明实施例提供的事件分发装置结构示意图;图3c是本发明实施例提供的事件分发装置结构示意图;图3d是本发明实施例提供的事件分发装置结构示意图;图4是本发明实施例提供的事件分发装置结构示意图;图5是本发明实施例提供的计算机设备500结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。在对本发明实施例进行详细的解释说明之前,先对本发明实施例涉及的事件分发系统的架构进行简单介绍。参见图1,事件分发系统中包括事件存储层和消费层。事件存储层部署有至少一个事件生成节点,至少一个事件生成节点中的每个事件生成节点用于根据待处理业务,生成多个第一事件,将多个第一事件分发至多个处理节点;消费层包括多个处理节点以及调度服务器,调度服务器用于获取事件分发系统中多个处理节点上传的多个剩余负载信息,基于多个剩余负载信息,生成第一负载权重表,将第一负载权重表发送至多个处理节点,第一负载权重表包括事件分发系统中多个处理节点当前的负载状况;处理节点用于接收多个第一事件,根据多个第一事件,确定多个第一事件在第一哈希环上的位置,将多个第一事件添加至第一哈希环的位置,按照各个事件在第一哈希环上的位置,依次处理处理节点到后一个处理节点之间的事件,第一哈希环上每两个处理节点之间的弧形线段用于指示两个处理节点中前一个处理节点的负载情况,位置用于指示第一事件的处理顺序。在实际应用的过程中,发布者可以向事件分发系统发布业务,并由至少一个事件生成节点生成需要将业务发布给哪些订阅者的多个事件;随后,事件分发系统中的处理节点便会获取多个事件,并根据事件中的内容,将业务发布给事件中指定的订阅者。例如,参见图1,发布者向事件分发系统发布的业务为业务a,且发布者对应于订阅者1和订阅者2,因此,事件存储层中的至少一个事件生成节点基于业务a可以生成的事件为两个,分别为queue1和queue2,queue1和queue2存储在事件分发系统中的至少一个事件生成节点中,其中,queue1中指定将业务a发布给订阅者1,queue2中指定将业务a发布给订阅者2。事件分发系统的消费层包括3个处理节点,分别为consumer1、consumer2和consumer3,消费层在事件存储层中获取queue1和queue2,并由consumer1处理queue1,由consumer2处理queue2。consumer1在queue1中读取业务a和订阅者1,将业务a发送给订阅者1,完成queue1的处理;consumer2在queue2中读取业务a和订阅者2,将业务a发送给订阅者2,完成queue2的处理。在实际应用的过程中,本发明实施例中的事件分发系统可为分布式事件处理系统。图2a是根据一示例性实施例示出的一种事件分发方法的流程图,为了便于描述,本发明实施例以事件分发系统中的一个处理节点为例进行说明,在实际应用的过程中,事件分发系统中的全部处理节点均会执行该流程,如图2a所示,该方法包括以下步骤。201、处理节点确定当前正在处理的全部事件,基于自身的额定负载以及正在处理的全部事件,确定剩余负载信息,将剩余负载信息发送至调度服务器。发明人认识到,对于事件分发系统来说,会持续有发布者向事件分发系统发布业务,进一步地,也会持续生成业务的事件,因此,事件分发系统需要进行分发及处理的事件数量发生变化是高频操作。而相对的,事件分发系统中的处理节点是固定的,且处理节点的部署也与发布者发布的业务无关,仅与事件分发系统的容量有关,因此,与事件数量的变化相比,处理节点发生变化是低频操作。为了使事件发生变化时,事件分发系统中的处理节点与其处理的事件之间的关系不被影响,可以事先根据事件分发系统中全部处理节点的剩余负载信息对事件分发系统中的处理节点进行部署,再为处理节点分发事件,使得后续当有新的事件需要处理时,直接将事件分发给已经部署完成的处理节点即可,也不会对处理节点的部署造成影响,事件分发系统的稳定性较高。由于事件分发系统中各个处理节点处理事件的能力不同,因此,为了使处理节点的部署合理,需要基于各个处理节点处理事件的能力进行部署,以便后续分发事件时可以根据处理节点的负载分发。其中,处理节点处理事件的能力可以用处理节点的剩余负载信息表示,也可以用处理节点的cpu(centralprocessingunit,中央处理器)表示,为了便于描述,在本发明实施例中,以处理节点的剩余负载信息表示处理节点处理事件的能力。对于每一个处理节点来说,其可以处理的事件个数是一个定量,也即处理节点均具有一个额定负载,因此,处理节点可以通过统计当前正在处理的全部事件和自身的额定负载确定当前处理节点还可以再处理多少个事件,也即确定处理节点的剩余负载信息,并将剩余负载信息发送至调度服务器,由调度服务器对全部处理节点的剩余负载信息进行统计,以便后续基于全部处理节点的剩余负载信息对事件分发系统中的处理节点进行部署。202、调度服务器基于多个处理节点上传的多个剩余负载信息,生成第一负载权重表,将第一负载权重表发送至多个处理节点,第一负载权重表包括事件分发系统中多个处理节点当前的负载状况。在本发明实施例中,调度服务器接收到多个处理节点上传的多个剩余负载信息后,便可以将处理节点的节点标识与该处理节点的剩余负载信息对应存储。其中,调度服务器在存储节点标识与剩余负载信息时,可以生成第一负载权重表。例如,可以生成表1所示的第一负载权重表。表1为了更加明确的表示处理节点处理事件的能力,可以基于剩余负载信息生成负载权重,并将节点标识与负载权重对应存储。其中,处理节点的负载权重与处理节点的剩余负载信息为正相关,也即处理节点的剩余负载越少,处理节点的负载权重越低,在极端的情况下,例如,处理节点发生宕机的情况时,处理节点不可用,则此时处理节点的负载权重可为0。在实际应用的过程中,调度服务器也可以直接将节点标识与剩余负载信息对应存储,而不生成第一负载权重表,本发明实施例对调度服务器存储节点标识与剩余负载信息的方式不进行具体限定。203、处理节点根据调度服务器发送的第一负载权重表,生成第一哈希环,第一哈希环上每两个处理节点之间的弧形线段用于指示两个处理节点中前一个处理节点的负载情况。在本发明实施例中,第一哈希环上包括事件分发系统中的全部处理节点,也即第一哈希环指示了事件分发系统中全部处理节点的部署,第一哈希环上每两个处理节点之间的弧形线段用于指示两个处理节点中前一个处理节点的负载情况,第一哈希环的实质可为处理节点组成的队列。对于第一哈希环上的任两个处理节点来说,两个处理节点之间的弧形线段可以表示顺时针方向的处理节点的负载情况,也可以表示逆时针方向的处理节点的负载情况。由于处理节点根据调度服务器发送的第一负载权重表生成的第一哈希环,且每个处理节点接收到的第一负载权重表均相同,因此,事件分发系统中每个节点生成的第一哈希环均是相同的,避免由于处理节点的哈希环不同造成对事件的分发错误。处理节点在根据第一负载权重表生成第一哈希环时,可以利用哈希算法进行计算,保证在部署处理节点时,可以根据各个处理节点的负载均衡部署。其中,为了实现对各个处理节点的负载均衡部署,哈希算法可以采用平衡性和分散性较好的hrw(高可能随机权重算法,rendezvoushash)。参见图2b,处理节点可以生成图2b所示的第一哈希环。由图2b所示的第一哈希环可以看出,事件分发系统中包括3个处理节点,分别为consumer1、consumer2和consumer3。其中,由于每个处理节点的负载情况是固定的,因此,第一哈希环上用于指示处理节点负载情况的弧形线段的长度也是固定的。而第一哈希环的大小不是固定的,为了使全部处理节点的部署均可以在第一哈希环上体现出来,可以生成周长较大的第一哈希环,这样就可能出现当全部的处理节点均体现在第一哈希环上后,第一哈希环上出现大段的空白弧线,因此,可以在第一哈希环上多次体现事件分发系统中的处理节点,实现对第一哈希环上空白弧线的填充。也即图2b中所示的第一哈希环上出现的重复的节点标志一致的处理节点实质为同一处理节点。204、至少一个事件生成节点根据待处理业务,生成多个第一事件,并将多个第一事件分发给处理节点。对于事件分发系统来说,发布者发布到事件分发系统中的业务可能需要执行不同的操作,例如,假设发布者发布到事件分发系统中的业务为3篇文章,分别为文章a、文章b以及文章c,发布者希望将文章a和文章c发送至订阅者1,将文章b发送至订阅者2,为了避免混淆这些操作,当发布者向事件分发系统发布业务后,事件分发系统中的至少一个事件生成节点便会将业务与发布者指定的操作结合起来,生成多个第一事件,并将多个第一事件分发给多个处理节点,以便处理节点对第一事件进行处理。需要说明的是,事件分发系统中可以为每个处理节点设置一个与其对应的事件生成节点,并由事件生成节点在生成事件后向与其对应的处理节点分发事件;事件分发系统中也可以仅存在一个事件生成节点,并由该事件生成节点在生成第一事件后向事件分发系统中的全部处理节点分发多个第一事件,本发明实施例对事件生成节点的个数不进行具体限定。在实际应用的过程中,事件分发系统中也可以不存在事件生成节点,这样,当发布者向事件分发系统发布任务后,事件分发系统便会自动将业务与操作结合起来,生成多个第一事件。205、处理节点接收待分发的第一事件,根据第一事件,确定第一事件在第一哈希环上的位置,将第一事件添加至第一哈希环的位置,位置用于指示第一事件的处理顺序。在本发明实施例中,当生成第一哈希环后,便可以将待分发的第一事件分发给各个处理节点进行处理。在进行第一事件的分发时,可以基于哈希算法和第一哈希环,计算第一事件在第一哈希环上的位置,也即根据事件分发系统中处理节点的负载情况为第一事件分配处理节点进行处理。其中,在确定第一事件在第一哈希环上的位置时,可以采用与生成第一哈希环相同的哈希算法,根据第一事件的事件信息,生成第一事件在所述第一哈希环上的位置;也可以采用与生成第一哈希环不同的哈希算法,根据第一事件的事件信息,生成第一事件在第一哈希环上的位置。本发明实施例对确定第一事件在第一哈希环上的位置的哈希算法不进行具体限定。在确定了第一事件在第一哈希环上的位置后,再将第一事件添加至第一哈希环中时,可将用于标识第一事件的事件标识添加至该位置上,使得当任一处理节点处理到该位置时,可以根据位置上的事件标识来获取该处理节点上的该第一事件进行处理。由于第一哈希环指示了处理节点的部署情况,因此,将第一事件添加至第一哈希环后,便可以直接明确处理第一事件的处理节点,也即明确了处理节点与第一事件之间的对应关系。在实际应用的过程中,当基于第一哈希环明确了处理节点与其需要处理的事件之间的对应关系后,可以采用诸如关系列表等方式将该对应关系记录下来,使处理节点基于记录的对应关系处理事件,而无需依赖第一哈希环记录处理节点与事件之间的对应关系。本发明实施例对记录处理节点与事件之间对应关系的方式不进行具体限定。在实际应用的过程中,第一事件可为一个或多个待处理的事件。上述步骤204中所示的过程可以用于事件分发系统中的处理节点生成第一哈希环后,首次进行事件分发时;也可以用于如果当前已经存在第一哈希环,且第一哈希环上的处理节点均在处理事件的过程中,而此时接收到发布者新的业务,并生成了新的事件需要添加至事件分发系统中进行处理。参见图2c,假设当前第一哈希环中存在一个正在处理的事件queue1,而此时接收到新的业务,且生成了新的事件为queue2,则基于哈希算法对queue2的事件信息进行计算,确定queue2在第一哈希环中的位置为consumer3和consumer2之间,则将queue2添加至该位置即可完成事件的分发。由于在上述增加新的事件的过程中,事件分发系统中的处理节点未受到影响,因此,第一哈希环不会发生变化,仅需将新的事件插入到第一哈希环中即可由相应的处理节点进行处理,使得事件分发系统中的业务变更并不会造成事件处理的抖动。206、处理节点按照各个事件在第一哈希环上的位置,依次处理处理节点到后一个处理节点之间的事件。在本发明实施例中,当各个事件均被添加至第一哈希环上后,对于第一哈希环上的任一处理节点来说,在用于指示其负载情况的弧形线段上可能会存在一个或多个事件,这些事件便是该处理节点需要处理的事件,处理节点可以按照事件在弧形线段上的顺序处理事件。由于事件分发系统可能会持续接收到新的业务,并相应生成新的事件,因此,对于事件分发系统中的任一处理节点来说,如果有新的事件插入到用于指示其负载情况的弧形线段上时,则该处理节点不必受到新的事件的影响,继续处理当前尚未完成处理的事件即可,并当处理到该新的事件时进行处理即可;相对的,如果有新的事件插入到其他处理节点的弧形线段上时,也即分发给其他处理节点处理时,该处理节点也可以继续处理尚未完成处理的事件即可,并不会受到新的事件的影响,因此,事件分发系统中事件的增加并不会对事件分发系统中的处理节点造成影响,提高了处理节点处理事件的稳定性。上述过程中所示的过程为事件分发系统中的处理节点在正常情况下生成第一哈希环,并基于第一哈希环完成待分发的事件的分发的过程,而在实际应用的过程中,事件分发系统中的处理节点可能会发生诸如宕机等故障,发生故障的处理节点无法再进行事件处理,因此,发生故障的处理节点需要进行故障切换,此时,需要重新生成第二哈希环,并基于第二哈希环对事件进行分发。图2d是根据一示例性实施例示出的一种事件分发方法的流程图,该方法用于当事件分发系统中存在发生故障切换的节点时,重新对事件进行分发的过程,如图2d所示,该方法包括以下步骤。需要说明的是,如果事件分发系统中不存在发生故障切换的节点,则可以不执行下述步骤。207、当调度服务器检测到多个处理节点中任一处理节点发生故障切换时,将处理节点在第一负载权重表中的对应的剩余负载信息的取值设置为0,生成第二负载权重表,并将第二负载权重表发送至多个处理节点。在本发明实施例中,当事件分发系统中的任一处理节点发生故障切换时,调度服务器便可以检测到该处理节点当前已经停止工作,需要重新生成哈希环,因此,需要重新生成第二负载权重表,以便处理节点生成新的哈希环。由于处理节点已经停止工作,因此,调度服务器在生成第二负载权重表时,可直接将停止工作的处理节点对应的剩余负载信息的取值设置为0。以上述所示的表1为例进行说明,如果consumer2发生故障切换,则调度服务器可生成表2所示的第二负载权重表。表2节点标识剩余负载信息consumer11000consumer20consumer31300……需要说明的是,如果第一负载权重表中存储的为各个处理节点的负载权重,则也可将发生故障切换的处理节点的节点标识对应的负载权重置为0,生成第二负载权重表。在实际应用的过程中,如果调度服务器没有采用第一负载权重表存储节点标识与剩余负载信息,则可将与发生故障切换的处理节点的节点标识对应存储的剩余负载信息改为0即可。208、当处理节点接收到调度服务器发送的第二负载权重表时,基于第二负载权重表重新生成第二哈希环。在本发明实施例中,处理节点生成第二哈希环的过程与上述步骤203中生成第一哈希环的过程一致,此处不再进行赘述。需要说明的是,由于发生故障切换的处理节点在第二负载权重表中对应的剩余负载信息为0,因此,发生故障切换的处理节点并不会体现在第二哈希环中。例如,以表2中所示的数据为例,如果consumer2在第二负载权重表中对应的剩余负载信息为0,则生成图2e所示的第二哈希环,consumer2并没有出现在第二哈希环中。209、处理节点根据第一哈希环中各个事件,重新生成各个事件在第二哈希环上的位置,将各个事件添加至第二哈希环。在本发明实施例中,处理节点将各个事件添加至第二哈希环中的过程与上述步骤204中所示的将各个事件添加至第一哈希环中的过程一致,此处不再进行赘述。210、处理节点按照各个事件在第二哈希环上的位置,依次处理处理节点到后一个处理节点之间的事件。在本发明实施例中,处理节点处理事件的过程与上述步骤205中所示的处理过程一致,此处不再进行赘述。本发明实施例提供的方法,通过接收待分发的第一事件,根据第一事件,确定第一事件在第一哈希环上的位置,并将第一事件添加至第一哈希环的第一位置,使得无需按照事件的序号为事件进行排序,进一步地,处理节点无需按照序号处理事件,当存在进行故障切换的处理节点时,无需重新为处理节点分配事件,不会对事件分发系统中的其他处理节点和事件之间的处理关系造成影响,提高了处理节点处理事件的稳定性。图3a是根据一示例性实施例示出的一种事件分发装置的框图。参照图3a,该装置包括接收模块301,位置确定模块302,添加模块303和处理模块304。该接收模块301,用于接收待分发的多个第一事件,多个第一事件由事件生成节点根据待处理业务生成的;该位置确定模块302,用于根据多个第一事件,确定多个第一事件在第一哈希环上的位置,第一哈希环上每两个处理节点之间的弧形线段用于指示两个处理节点中前一个处理节点的负载情况;该添加模块303,用于将多个第一事件添加至第一哈希环的位置,位置用于指示第一事件的处理顺序;该处理模块304,用于按照各个事件在第一哈希环上的位置,依次处理处理节点到后一个处理节点之间的事件。本发明实施例提供的装置,通过接收待分发的第一事件,根据第一事件,确定第一事件在第一哈希环上的位置,并将第一事件添加至第一哈希环的第一位置,使得无需按照事件的序号为事件进行排序,进一步地,处理节点无需按照序号处理事件,当存在进行故障切换的处理节点时,无需重新为处理节点分配事件,不会对分布式系统中的其他处理节点和事件之间的处理关系造成影响,提高了处理节点处理事件的稳定性。在另一个实施例中,该位置确定模块302,用于采用与生成第一哈希环相同的哈希算法,根据多个第一事件的事件信息,生成多个第一事件在第一哈希环上的位置;或,采用与生成第一哈希环不同的哈希算法,根据多个第一事件的事件信息,生成多个第一事件在第一哈希环上的位置;其中,哈希算法至少包括高可能随机权重算法hrw。在另一个实施例中,参见图3b,该装置还包括第一生成模块305。该第一生成模块305,用于根据第一负载权重表,生成第一哈希环,第一负载权重表包括事件分发系统中多个处理节点当前的负载状况。在另一个实施例中,参见图3c,该装置还包括事件确定模块306,负载确定模块307和发送模块308。该事件确定模块306,用于确定当前正在处理的全部事件;该负载确定模块307,用于基于自身的额定负载以及正在处理的全部事件,确定剩余负载信息;该发送模块308,用于将剩余负载信息发送至调度服务器,以使调度服务器基于剩余负载信息生成第一负载权重表。在另一个实施例中,参见图3d,该装置还包括第二生成模块309。该第二生成模块309,用于当接收到调度服务器发送的第二负载权重表时,基于第二负载权重表重新生成第二哈希环,第二负载权重表为事件分发系统中多个处理节点中任一处理节点发生故障切换时生成的;该位置确定模块302,还用于根据第一哈希环中各个事件,重新生成各个事件在第二哈希环上的位置,将各个事件添加至第二哈希环。图4是根据一示例性实施例示出的一种事件分发装置的框图。参照图4,该装置包括获取模块401,生成模块402和发送模块403。该获取模块401,用于获取事件分发系统中多个处理节点上传的多个剩余负载信息;该生成模块402,用于基于多个剩余负载信息,生成第一负载权重表,第一负载权重表包括事件分发系统中多个处理节点当前的负载状况;该发送模块403,用于将第一负载权重表发送至多个处理节点,由多个处理节点基于第一负载权重表生成第一哈希环,并基于第一哈希环对多个事件进行分发。本发明实施例提供的装置,通过接收待分发的第一事件,根据第一事件,确定第一事件在第一哈希环上的位置,并将第一事件添加至第一哈希环的第一位置,使得无需按照事件的序号为事件进行排序,进一步地,处理节点无需按照序号处理事件,当存在进行故障切换的处理节点时,无需重新为处理节点分配事件,不会对分布式系统中的其他处理节点和事件之间的处理关系造成影响,提高了处理节点处理事件的稳定性。在另一个实施例中,该生成模块402,用于当检测到多个处理节点中任一处理节点发生故障切换时,将处理节点在第一负载权重表中的对应的剩余负载信息的取值设置为0,生成第二负载权重表;该发送模块403,用于将第二负载权重表发送至多个处理节点,由多个处理节点基于第二负载权重表生成第二哈希环,并基于第二哈希环重新对第一哈希环中的各个事件进行分发。需要说明的是:上述实施例提供的事件分发的装置在事件分发时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事件分发装置与事件分发方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。图5是本公开实施例提供的一种计算机设备500的结构示意图。参见图5,该计算机设备500包括通信总线、处理器、存储器和通信接口,还可以包括、输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的视频数据处理方法。总线是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器通过总线从其它元素接收到命令,解密接收到的命令,根据解密的命令执行计算或数据处理。存储器可以包括程序模块,例如内核(kernel),中间件(middleware),应用程序编程接口(applicationprogramminginterface,api)和应用。该程序模块可以是有软件、固件或硬件、或其中的至少两种组成。输入输出接口转发用户通过输入输出设备(例如感应器、键盘、触摸屏)输入的命令或数据。显示设备显示各种信息给用户。通信接口将该计算机设备500与其它网络设备、用户设备、网络进行连接。例如,通信接口可以通过有线或无线连接到网络以连接到外部其它的网络设备或用户设备。无线通信可以包括以下至少一种:无线保真(wirelessfidelity,wifi),蓝牙(bluetooth,bt),近距离无线通信技术(nearfieldcommunication,nfc),全球卫星定位系统(globalpositioningsystem,gps)和蜂窝通信(cellularcommunication)(例如,长期演进技术(longtermevolution,lte),长期演进技术的后续演进(longtermevolution–advanced,lte-a),码分多址(codedivisionmultipleaccess,cdma),宽带码分多址(widebandcdma,wcdma),通用移动通信系统(universalmobiletelecommunicationsystem,umts),无线宽带接入(wirelessbroadband,wibro)和全球移动通讯系统(globalsystemformobilecommunication,gsm)。有线通信可以包括以下至少一种:通用串行总线(universalserialbus,usb),高清晰度多媒体接口(highdefinitionmultimediainterface,hdmi),异步传输标准接口(recommendedstandard232,rs-232),和普通老式电话业务(plainoldtelephoneservice,pots)。网络可以是电信网络和通信网络。通信网络可以为计算机网络、因特网、物联网、电话网络。计算机设备500可以通过通信接口连接网络,计算机设备500和其它网络设备通信所用的协议可以被应用、应用程序编程接口(applicationprogramminginterface,api)、中间件、内核和通信接口至少一个支持。本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行以完成上述的事件分发方法。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1