CN112148502B - 消息分发方法、电子设备和介质 - Google Patents
消息分发方法、电子设备和介质 Download PDFInfo
- Publication number
- CN112148502B CN112148502B CN202010951483.9A CN202010951483A CN112148502B CN 112148502 B CN112148502 B CN 112148502B CN 202010951483 A CN202010951483 A CN 202010951483A CN 112148502 B CN112148502 B CN 112148502B
- Authority
- CN
- China
- Prior art keywords
- receiving
- response time
- message
- receiving end
- average
- 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
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000004044 response Effects 0.000 claims abstract description 97
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明涉及一种消息分发方法、电子设备和介质,该方法包括步骤S1、获取每一接收端每次接收消息的响应时间,每隔预设时间,获取当前预设时间内每一所述接收端的平均响应时间;步骤S2、基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,为每个所述消息接收组对应设置一个用于分发消息的线程池,其中,M为大于等于2的正整数;步骤S3、每一所述线程池接收对应的消息接收组中的接收端的消息进行分发,并返回执行步骤S1。本发明基于接收端的响应时间进行动态分组,保证了接收端接收消息的连续性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种消息分发方法、电子设备和介质。
背景技术
消息分发中心面向多个下游用户分发消息过程中,当向其中一个用户发出一个消息时,需要收到该用户的响应,才能继续发送下一消息。但是,由于下游用户的接收端响应时间不统一,响应慢的下游用户将会直接影响到响应快的下游用户的消息接收,导致用户消息接收无法连续,出现消息断层。因此,如何提供一种消息分发技术,保证用户接收消息的连续性,成为亟待解决的技术问题。
发明内容
本发明目的在于,提供一种消息分发方法、电子设备和介质,基于接收端的响应时间进行动态分组,保证了接收端接收消息的连续性。
根据本发明第一方面,提供了一种消息分发方法,包括:
步骤S1、获取每一接收端每次接收消息的响应时间,每隔预设时间,获取当前预设时间内每一所述接收端的平均响应时间;
步骤S2、基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,为每个所述消息接收组对应设置一个用于分发消息的线程池,其中,M为大于等于2的正整数;
步骤S3、每一所述线程池接收对应的消息接收组中的接收端的消息进行分发,并返回执行步骤S1。
根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
根据本发明第三方面,提供一种计算机可读存储介质,所述计算机指令用于执行本发明第一方面所述的方法。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种消息分发方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
本发明能够基于接收端的响应时间进行动态分组,进而动态调整线程池所对应的接收端,避免接收端出现消息断层,保证了接收端接收消息的连续性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本发明实施例提供的消息分发方法流程图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种消息分发方法、电子设备和介质的具体实施方式及其功效,详细说明如后。
本发明实施例提供了一种消息分发方法,如图1所示,包括以下步骤:
步骤S1、获取每一接收端每次接收消息的响应时间,每隔预设时间,获取当前预设时间内每一所述接收端的平均响应时间;
其中,预设时间可以设置为1分钟,但可以理解的是,预设时间可根据数据量和分组耗时等因素来调整。响应时间指的是该消息从线程池中发出到线程池接收到对应的接收端发送的响应信号的时间。平均响应时间即该接收端在预设时间内所有的响应时间和除以接响应信息的次数所得到的值。
步骤S2、基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,为每个所述消息接收组对应设置一个用于分发消息的线程池,其中,M为大于等于2的正整数;
步骤S3、每一所述线程池接收对应的消息接收组中的接收端的消息进行分发,并返回执行步骤S1。
本发明实施例所述方法能够基于接收端的响应时间进行动态分组,进而动态调整线程池所对应的接收端,将响应时间相近的接收端划分为一个消息接收组,避免接收端出现消息断层,保证了接收端接收消息的连续性。
在消息分发系统的开启的初始时刻或者执行过程中有新的接收端接入时,所述方法还包括:步骤S0、检测是否接入新的接收端,若有,则将新接入的接收端的消息发送至临时线程池,进行分发,然后进入步骤S1。通过执行步骤S0进行第一段预设时间内的消息分发,从而通过步骤S1中可以获取到第一段预设时间内的接收端的平均响应时间进行第一次分组,然后循环执行步骤S1-步骤S3进行动态分组。当在循环执行步骤S1-步骤S3的过程中,有新的接收端加入时,可通过步骤S0进行当前预设时间内的消息分发,然后通过步骤S1获取新加入的接收端在当前预设时间内的平均响应时间,然后也随所有其他接收端的数据循环执行步骤S1-步骤S3进行动态分组。这样既能够实现,当有新的接收端加入或者现有接收端出现故障或者其他导致的响应时间延迟等情况时,均可以对当前的接收端进行重新分组,以避免响应时间长的接收端对响应时间短的接收端造成影响,从而保证接收端接收消息的连续性。
以下通过几个具体实施例对接收端的动态分组过程进行进一步说明:
实施例一、
所述步骤S2中,基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,可包括以下步骤:
步骤S21、从所有接收端的平均响应时间中选择M个中心响应时间;
步骤S22、遍历所述所有接收端的平均响应时间,将每个接收端的平均响应时间划分到最近的中心响应时间对应的数据集合中;
步骤S23、确定每个中心响应时间对应的数据集合中数据的平均值,并作为新的中心响应时间;
步骤S24、循环执行步骤S22-步骤S23,直至中心响应时间不再变化或者达到预设的执行次数,将每个数据集合中的平均响应时间所对应的接收端id,划分至一个消息接收组中,得到M个消息接收组。
需要说明的是,步骤S21中,M个中心响应时间可以随机选取,但也可以通过以下步骤进行自定义选取:
步骤S211、将所有接收端的平均响应时间按照从小到大的顺序排序;
步骤S212、获取当前接收端的数量N,在所述步骤S211排列的接收端的平均响应时间中,选取第[N/(M+1)],2[N/(M+1)],3[N/(M+1)]…M[N/(M+1)]个平均响应时间的值作为所述中心响应时间,其中,N为大于等于2的正整数。
通过步骤S211-步骤S212,能保证前后两段预设时间内所有接收端的平均响应时间基本没有变化时,分组结果仍与上一次分组结果一致,避免出现多余的分组变动。
实施例二、
所述步骤S2中,基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,可以包括以下步骤:
步骤S211、遍历所述接收端的平均响应时间,将所有大于预设响应时间的接收端id划分至中心响应时间最长的信息接收组中,进行噪点去除;
步骤S212、将除所述步骤S211中已划分的接收端之外的所有其他的接收端的平均响应时间执行所述步骤S21-步骤S24,得到M个消息接收组。
当部分接收端出现故障或其他原因导致响应时间过长时,通过步骤S211-步骤S213,可以将时间过长的接收端id先划分至临时分组中,待其他接收端id分组完毕后,再将临时分组中的接收端id合并至所述第M个消息接收组中。避免对仅将少量的响应时间过长的接收端id划分为一个消息接收组,从而使得其他组的接收端id变多,浪费计算资源。
实施例三、
所述步骤S2中,基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,可以包括以下步骤:
步骤S201、从所有接收端的平均响应时间中选择[M/2]个,作为中心响应时间;
步骤S202、遍历所述所有接收端的平均响应时间,将每个接收端的平均响应时间划分到最近的中心响应时间对应的数据集合中;
步骤S203、确定每中心响应时间对应的数据集合中数据的平均值,并作为新的中心响应时间;
步骤S204、循环执行步骤S202-步骤S203,直至中心响应时间不再变化或者达到预设的执行次数,将每个数据集合中的平均响应时间所对应的接收端id,划分至一个消息接收组中,得到[M/2]个分组;
步骤S205、将接收端id数量最多的数据集合对应的平均时间响应时间,按照步骤S201-步骤S204,进行第二次分组,得到M-[M/2]个分组。
通过步骤S201和步骤S205通过二次分组对接收端进行分组,通过步骤S201和步骤S205可以避免出现某一消息接收组的接收端数量明显大于其他消息接收组,避免出现线程池对应的接收端数量太大而延长接收端信息接收的时间,进一步保证了接收端接收消息的连续性。
作为一种示例,所述步骤S3中,所述每一所述线程池接收对应的消息接收组中的接收端的消息进行分发,包括以下步骤:
步骤S31、所述线程池接收对应的消息接收端的消息组成消息队列;
步骤S32、所述线程池包括多个线程,每一所述线程从所述线程池对应的消息队列重获取一条消息;
其中,线程池所设置的线程数量可以根据具体计算需求和服务器的配置等因素来决定,例如可配置为200个线程。
步骤S33、所述线程从所获取的消息中解析出对应的接收端id,并根据所述接收端id将所接收的消息发送至对应的接收端;
步骤S34、所述线程接收到接收端的响应信号后,重新从所述线程池对应的消息队列中获取一条新的消息进行发送。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明实施例所述的消息分发方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机指令用于执行本发明实施例所述的消息分发方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (8)
1.一种消息分发方法,其特征在于,包括:
步骤S1、获取每一接收端每次接收消息的响应时间,每隔预设时间,获取当前预设时间内每一所述接收端的平均响应时间;
步骤S2、基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,为每个所述消息接收组对应设置一个用于分发消息的线程池,其中,M为大于等于2的正整数;
所述步骤S2中,基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,包括:
步骤S21、从所有接收端的平均响应时间中选择M个中心响应时间;
步骤S22、遍历所述所有接收端的平均响应时间,将每个接收端的平均响应时间划分到最近的中心响应时间对应的数据集合中;
步骤S23、确定每个中心响应时间对应的数据集合中数据的平均值,并作为新的中心响应时间;
步骤S24、循环执行步骤S22-步骤S23,直至中心响应时间不再变化或者达到预设的执行次数,将每个数据集合中的平均响应时间所对应的接收端id,划分至一个消息接收组中;
步骤S3、每一所述线程池接收对应的消息接收组中的接收端的消息进行分发,并返回执行步骤S1。
2.根据权利要求1所述的消息分发方法,其特征在于,
所述方法还包括:步骤S0、检测是否接入新的接收端,若有,则将新接入的接收端的消息发送至临时线程池,进行分发,然后进入步骤S1。
3.根据权利要求1所述的消息分发方法,其特征在于,
所述步骤S2中,基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,包括:
步骤S211、遍历所述接收端的平均响应时间,将所有大于预设响应时间的接收端id划分至中心响应时间最长的信息接收组中;
步骤S212、将除所述步骤S211中已划分的接收端之外的所有其他的接收端的平均响应时间执行所述步骤S21-步骤S24,得到M个消息接收组。
4.根据权利要求1所述的消息分发方法,其特征在于,
所述步骤S21包括:
步骤S211、将所有接收端的平均响应时间按照从小到大的顺序排序;
步骤S212、获取当前接收端的数量N,在所述步骤S211排列的接收端的平均响应时间中,选取第[N/(M+1)],2[N/(M+1)],3[N/(M+1)]…M[N/(M+1)]个平均响应时间的值作为所述中心响应时间,其中,N为大于等于2的正整数。
5.根据权利要求1所述的消息分发方法,其特征在于,
所述步骤S2中,基于所述每一接收端的平均响应时间将所有接收端id分为M个消息接收组,包括:
步骤S201、从所有接收端的平均响应时间中选择[M/2]个,作为中心响应时间;
步骤S202、遍历所述所有接收端的平均响应时间,将每个接收端的平均响应时间划分到最近的中心响应时间对应的数据集合中;
步骤S203、确定每中心响应时间对应的数据集合中数据的平均值,并作为新的中心响应时间;
步骤S204、循环执行步骤S202-步骤S203,直至中心响应时间不再变化或者达到预设的执行次数,将每个数据集合中的平均响应时间所对应的接收端id,划分至一个消息接收组中,得到[M/2]个分组;
步骤S205、将接收端id数量最多的数据集合对应的平均时间响应时间,按照步骤S201-步骤S204,进行第二次分组,得到M-[M/2]个分组。
6.根据权利要求1所述的消息分发方法,其特征在于,
所述步骤S3中,所述每一所述线程池接收对应的消息接收组中的接收端的消息进行分发,包括:
所述线程池接收对应的消息接收端的消息组成消息队列;
所述线程池包括多个线程,每一所述线程从所述线程池对应的消息队列重获取一条消息;
所述线程从所获取的消息中解析出对应的接收端id,并根据所述接收端id将所接收的消息发送至对应的接收端;
所述线程接收到接收端的响应信号后,重新从所述线程池对应的消息队列中获取一条新的消息进行发送。
7.一种电子设备,其特征在于,包括:
至少一个处理器;
以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行前述权利要求1-6任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行前述权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010951483.9A CN112148502B (zh) | 2020-09-11 | 2020-09-11 | 消息分发方法、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010951483.9A CN112148502B (zh) | 2020-09-11 | 2020-09-11 | 消息分发方法、电子设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148502A CN112148502A (zh) | 2020-12-29 |
CN112148502B true CN112148502B (zh) | 2024-03-22 |
Family
ID=73890924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010951483.9A Active CN112148502B (zh) | 2020-09-11 | 2020-09-11 | 消息分发方法、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148502B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254838B (zh) * | 2021-06-18 | 2021-10-01 | 每日互动股份有限公司 | 一种基于网状级联的消息分发方法、电子设备及介质 |
CN113254839B (zh) * | 2021-06-18 | 2021-09-28 | 每日互动股份有限公司 | 一种逐层式的消息分发方法、电子客户端及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105208125A (zh) * | 2015-09-30 | 2015-12-30 | 百度在线网络技术(北京)有限公司 | 消息传输方法、装置及系统 |
CN105933369A (zh) * | 2015-12-24 | 2016-09-07 | 中国银联股份有限公司 | 一种消息转发方法及设备 |
CN108459917A (zh) * | 2018-03-15 | 2018-08-28 | 欧普照明股份有限公司 | 一种消息分配部件、消息处理系统以及消息分配方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060155862A1 (en) * | 2005-01-06 | 2006-07-13 | Hari Kathi | Data traffic load balancing based on application layer messages |
US9823951B2 (en) * | 2013-02-27 | 2017-11-21 | International Business Machines Corporation | Link optimization for callout request messages |
-
2020
- 2020-09-11 CN CN202010951483.9A patent/CN112148502B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105208125A (zh) * | 2015-09-30 | 2015-12-30 | 百度在线网络技术(北京)有限公司 | 消息传输方法、装置及系统 |
CN105933369A (zh) * | 2015-12-24 | 2016-09-07 | 中国银联股份有限公司 | 一种消息转发方法及设备 |
CN108459917A (zh) * | 2018-03-15 | 2018-08-28 | 欧普照明股份有限公司 | 一种消息分配部件、消息处理系统以及消息分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112148502A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148502B (zh) | 消息分发方法、电子设备和介质 | |
CN105677469B (zh) | 定时任务执行方法及装置 | |
CN110795284B (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
CN103763343A (zh) | 一种业务访问处理方法及装置 | |
CN110901461A (zh) | 一种充电系统功率分配的方法、系统及设备 | |
CN110933136A (zh) | 一种服务节点选择方法、装置、设备及可读存储介质 | |
CN110705893B (zh) | 一种业务节点管理方法、装置、设备以及存储介质 | |
CN111541762B (zh) | 数据处理的方法、管理服务器、设备及存储介质 | |
CN110365598B (zh) | 心跳消息发送的方法、装置、服务器、终端及存储介质 | |
CN114448989B (zh) | 调整消息分发的方法、装置、电子设备、存储介质及产品 | |
US20220166842A1 (en) | Data distribution method and electronic device | |
CN111163118B (zh) | 一种Kafka集群中的消息传输方法及装置 | |
CN112600905B (zh) | 交易广播和区块生成方法、设备和存储介质 | |
CN111124673A (zh) | 数据采集系统及方法 | |
CN113760468A (zh) | 分布式选举方法、装置、系统和介质 | |
CN109067864B (zh) | 通知消息推送方法、装置及电子设备 | |
CN110019054B (zh) | 日志去重方法和系统、内容分发网络系统 | |
CN112805657B (zh) | 频率处理方法、装置、设备和存储介质 | |
CN113822485A (zh) | 一种配电网调度任务优化方法及系统 | |
CN108595367B (zh) | 一种基于局域网内计算机集群的服务器系统 | |
CN112882940A (zh) | 用例任务调度方法、系统、装置、设备及存储介质 | |
CN112600877A (zh) | Dns服务器的分布式限速方法和系统 | |
CN108933709B (zh) | 测试服务器性能的方法、装置和计算机可读存储介质 | |
CN116366657B (zh) | 一种缓存服务器的数据请求调度方法及系统 | |
CN112019452B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 310012 Room 418, West District, Building A, 525 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province Applicant after: Daily interactive Co.,Ltd. Address before: 310012 Room 418, West District, Building A, 525 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province Applicant before: ZHEJIANG MEIRI INTERDYNAMIC NETWORK TECHNOLOGY Co.,Ltd. Country or region before: China |
|
GR01 | Patent grant | ||
GR01 | Patent grant |