[发明专利]事件分发系统、方法及装置有效
申请号: | 201710844525.7 | 申请日: | 2017-09-15 |
公开(公告)号: | CN109510855B | 公开(公告)日: | 2020-07-28 |
发明(设计)人: | 梁俊杰 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 刘映东 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 事件 分发 系统 方法 装置 | ||
本发明公开了一种事件分发系统、方法及装置,属于计算机技术领域。所述事件分发系统包括:调度服务器用于获取处理节点的多个剩余负载信息,生成第一负载权重表,将第一负载权重表发送至处理节点;事件生成节点用于生成第一事件,将第一事件分发至处理节点;处理节点用于确定第一事件在第一哈希环上的位置,按照各个事件在第一哈希环上的位置,处理事件。本发明通过确定第一事件在第一哈希环上的位置,并将第一事件添加至第一哈希环,使得无需按照事件的序号为事件进行排序,进一步地,当存在进行故障切换的处理节点时,无需重新为处理节点分配事件,不会对其他处理节点和事件之间的处理关系造成影响,提高了处理节点处理事件的稳定性。
技术领域
本发明涉及计算机技术领域,特别涉及一种事件分发系统、方法及装置。
背景技术
近年来,随着计算机技术日益成熟,互联网处理事件及业务所依赖的服务器的规模也越来越大。由于用户的事件正在不断的扩展,为了减轻服务器的处理负担,往往需要采用分布式系统处理用户的多个事件。发布者将多个事件发布至分布式系统中,由分布式系统中的多个处理节点对多个事件进行分发并分别处理,处理节点可为分布式系统中的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在进行事件处理时的稳定性。
发明内容
为了解决现有技术中处理节点进行故障切换时,导致处理节点与时间之间的对应关系发生整体位移,影响处理节点在进行事件处理时的稳定性的问题,本发明实施例提供了一种事件分发系统、方法及装置。所述技术方案如下:
第一方面,提供了一种事件分发系统,所述事件分发系统包括调度服务器、至少一个事件生成节点以及多个处理节点;
所述调度服务器用于获取所述事件分发系统中多个处理节点上传的多个剩余负载信息,基于所述多个剩余负载信息,生成第一负载权重表,将所述第一负载权重表发送至所述多个处理节点,所述第一负载权重表包括所述事件分发系统中多个处理节点当前的负载状况;
所述至少一个事件生成节点中的每个事件生成节点用于根据待处理业务,生成多个第一事件,将所述多个第一事件分发至所述多个处理节点;
所述多个处理节点中的每个处理节点用于接收所述多个第一事件,根据所述多个第一事件,确定所述多个第一事件在第一哈希环上的位置,将所述多个第一事件添加至所述第一哈希环的位置,按照各个事件在所述第一哈希环上的位置,依次处理所述处理节点到后一个处理节点之间的事件,所述第一哈希环上每两个处理节点之间的弧形线段用于指示所述两个处理节点中前一个处理节点的负载情况,所述位置用于指示所述第一事件的处理顺序。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710844525.7/2.html,转载请声明来源钻瓜专利网。