本申请提供了一种消息的分发方法、装置、电子设备及存储介质,涉及网络通信技术领域,应用于消息的分发系统,分发系统包括消息调度服务模块和执行服务模块,消息调度服务模块包括消息队列和服务注册中心,服务注册中心包括多个已注册的执行服务器标识;执行服务模块包括多个执行服务器;分发方法包括:针对每个会话任务,确定该会话任务中当前消息的类型,从而确定当前消息的下一条消息是否进行分发;若是,则在所有已注册的执行服务器标识对应的执行服务器中随机确定出一个目标执行服务器,将下一条消息更新为当前消息分发给目标执行服务器进行处理。采用本申请提供的技术方案能够保证同一会话内消息的顺序处理,提高消息处理性能。性能。性能。
【技术实现步骤摘要】
一种消息的分发方法、装置、电子设备及存储介质
[0001]本申请涉及网络通信
,尤其是涉及一种消息的分发方法、装置、电子设备及存储介质。
技术介绍
[0002]在消息分发的方式中常见的有两种技术方案,第一种技术方案,通过使用消息队列,比如rabbitMQ、NATS,来做消息和任务的分发,执行服务器通过自动领取消息队列中的任务,完成任务的处理;第二种技术方案,通过调度中心监控各个执行任务服务器资源的使用情况,把任务列表中的任务根据资源的使用情况分配给各个执行服务器。
[0003]目前,上述两种技术方案均存在一定的问题,第一个技术方案中各个执行服务器主动到消息中心领取任务,各个执行服务器之间是并行执行,不能保证消息的顺序执行,支持不了同一个会话中需要顺序处理的任务列表;第二个技术方案中调度中心对执行服务器上的监控项目较多,同样也不能保证消息的顺序执行;因此,如何对消息进行分发以保证消息的顺序执行,成为了亟待解决的问题。
技术实现思路
[0004]有鉴于此,本申请的目的在于提供一种消息的分发方法、装置、电子设备及存储介质,能够通过确定当前消息的类型来确定是否将下一条消息分发给已注册的任意一个执行服务器来执行,保证了在同一会话内消息的顺序处理,并且各个会话之间的消息处理互不影响,在保证必要消息顺序的条件下,极大的提高了消息处理性能。
[0005]本申请主要包括以下几个方面:第一方面,本申请实施例提供了一种消息的分发方法,应用于消息的分发系统,所述分发系统包括消息调度服务模块以及执行服务模块,所述消息调度服务模块中包括消息队列以及服务注册中心,所述服务注册中心中包括多个已注册的执行服务器标识;所述执行服务模块中包括多个执行服务器;所述分发方法包括:获取会话任务,将每个会话任务存储在消息队列中;其中,每个会话任务中均包括至少一个消息,每个会话任务中的消息按照接收到的时间顺序依次排列;针对所述消息队列中存储的每个会话任务,确定该会话任务中当前消息的类型;基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发;若是,则在所有已注册的执行服务器标识对应的执行服务器中随机确定出一个执行服务器作为目标执行服务器,将所述下一条消息更新为当前消息分发给所述目标执行服务器进行处理,并继续确定该会话任务中当前消息的下一条消息是否进行分发,直至该会话任务中所有消息分发完毕。
[0006]进一步的,所述基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发的步骤,包括:
若该会话任务中当前消息的类型为写类型,则将该会话任务中当前消息进行分发后,等待接收所述当前消息的任务执行完毕消息;在接收到所述当前消息的任务执行完毕消息后,将该会话任务中当前消息的下一条消息确定为进行分发。
[0007]进一步的,所述基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发的步骤,还包括:若该会话任务中当前消息的类型为读类型,则将该会话任务中的当前消息进行分发,并将该会话任务中当前消息的下一条消息确定为进行分发。
[0008]进一步的,所述将所述下一条消息更新为当前消息分发给所述目标执行服务器进行处理后,所述分发方法还包括:获取所述当前消息在所述目标执行服务器上进行处理的处理时间;其中,所述处理时间为从分发所述当前消息的时间到未接收到所述目标执行服务器反馈的针对当前消息的任务执行完毕消息的时间;若所述处理时间达到预设超时时间或者接收到所述目标执行服务器反馈的处理错误信息,则将所述目标执行服务器从所述服务注册中心注销,并生成告警信息以便提示运维人员进行处理,同时,在除了所述目标执行服务器之外的所有已注册的执行服务器标识对应的执行服务器中重新随机确定出一个执行服务器更新为目标执行服务器,并将所述当前消息重新分发给更新后的目标执行服务器进行处理。
[0009]进一步的,所述分发方法还包括:获取所述消息队列中每个会话任务的消息数量;将每个会话任务的消息数量的加和,确定为消息总数量;获取所述服务注册中心中已注册的执行服务器标识的总数量,并将所述已注册的执行服务器标识的总数量确定为执行进程总数量;将所述消息总数量与执行进程总数量的商值,确定为目标参数;若所述目标参数大于第一预设阈值,则增加执行服务器;若所述目标参数小于第二预设阈值,则释放空闲的执行服务器。
[0010]进一步的,所述分发方法还包括:针对每个执行服务器,获取该执行服务器的状态信息;基于该执行服务器的状态信息,确定是否将该执行服务器注册到所述服务注册中心;若是,则将该执行服务器对应的执行服务器标识添加到所述服务注册中心中,得到该执行服务器对应的已注册的执行服务器标识。
[0011]进一步的,通过以下步骤增加执行服务器:在预设扩容数量映射关系表包括的多个参数范围中确定目标参数所在的目标参数范围;在预设扩容数量映射关系表包括的参数范围与扩容数量的映射关系中确定出所述目标参数范围对应的目标扩容数量;在所述执行服务模块中增加N个执行服务器以进行扩容;其中,所述N为目标扩容数量。
[0012]第二方面,本申请实施例还提供了一种消息的分发装置,应用于消息的分发系统,所述分发系统包括消息调度服务模块以及执行服务模块,所述消息调度服务模块中包括消息队列以及服务注册中心,所述服务注册中心中包括多个已注册的执行服务器标识;所述执行服务模块中包括多个执行服务器;所述分发装置包括:获取模块,用于获取会话任务,将每个会话任务存储在消息队列中;其中,每个会话任务中均包括至少一个消息,每个会话任务中的消息按照接收到的时间顺序依次排列;检测模块,用于针对所述消息队列中存储的每个会话任务,确定该会话任务中当前消息的类型;确定模块,用于基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发;分发模块,用于在该会话任务中当前消息的下一条消息进行分发时,在所有已注册的执行服务器标识对应的执行服务器中随机确定出一个执行服务器作为目标执行服务器,将所述下一条消息更新为当前消息分发给所述目标执行服务器进行处理,并继续确定该会话任务中当前消息的下一条消息是否进行分发,直至该会话任务中所有消息分发完毕。
[0013]第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的消息的分发方法的步骤。
[0014]第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述的消息的分发方法的步骤。
[0015]本申请实施例提供的一种消息的分发方法、装置、电子设备及存储介质,应用于消息的分发系统,所述分发系统包括消息调度服务模块以及执行服务模块,所述消息调度服务模块中包括消息队列以及服务注册中心,所述服务注册中心中包括多个已注册的执行服务器标识;所述本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种消息的分发方法,其特征在于,应用于消息的分发系统,所述分发系统包括消息调度服务模块以及执行服务模块,所述消息调度服务模块中包括消息队列以及服务注册中心,所述服务注册中心中包括多个已注册的执行服务器标识;所述执行服务模块中包括多个执行服务器;所述分发方法包括:获取会话任务,将每个会话任务存储在消息队列中;其中,每个会话任务中均包括至少一个消息,每个会话任务中的消息按照接收到的时间顺序依次排列;针对所述消息队列中存储的每个会话任务,确定该会话任务中当前消息的类型;基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发;若是,则在所有已注册的执行服务器标识对应的执行服务器中随机确定出一个执行服务器作为目标执行服务器,将所述下一条消息更新为当前消息分发给所述目标执行服务器进行处理,并继续确定该会话任务中当前消息的下一条消息是否进行分发,直至该会话任务中所有消息分发完毕。2.根据权利要求1所述的分发方法,其特征在于,所述基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发的步骤,包括:若该会话任务中当前消息的类型为写类型,则将该会话任务中当前消息进行分发后,等待接收所述当前消息的任务执行完毕消息;在接收到所述当前消息的任务执行完毕消息后,将该会话任务中当前消息的下一条消息确定为进行分发。3.根据权利要求1所述的分发方法,其特征在于,所述基于该会话任务中当前消息的类型,确定该会话任务中当前消息的下一条消息是否进行分发的步骤,还包括:若该会话任务中当前消息的类型为读类型,则将该会话任务中的当前消息进行分发,并将该会话任务中当前消息的下一条消息确定为进行分发。4.根据权利要求1所述的分发方法,其特征在于,所述将所述下一条消息更新为当前消息分发给所述目标执行服务器进行处理后,所述分发方法还包括:获取所述当前消息在所述目标执行服务器上进行处理的处理时间;其中,所述处理时间为从分发所述当前消息的时间到未接收到所述目标执行服务器反馈的针对当前消息的任务执行完毕消息的时间;若所述处理时间达到预设超时时间或者接收到所述目标执行服务器反馈的处理错误信息,则将所述目标执行服务器从所述服务注册中心注销,并生成告警信息以便提示运维人员进行处理,同时,在除了所述目标执行服务器之外的所有已注册的执行服务器标识对应的执行服务器中重新随机确定出一个执行服务器更新为目标执行服务器,并将所述当前消息重新分发给更新后的目标执行服务器进行处理。5.根据权利要求1所述的分发方法,其特征在于,所述分发方法还包括:获取所述消息队列中每个会话任务的消息数量;将每个会话任务的消息数量的加和,确定为消息总数量;获取...
【专利技术属性】
技术研发人员:李钢江,马义,邢宏江,
申请(专利权)人:百家云集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。