CN109698799B - 一种消息推送方法、装置和移动终端 - Google Patents
一种消息推送方法、装置和移动终端 Download PDFInfo
- Publication number
- CN109698799B CN109698799B CN201910033163.2A CN201910033163A CN109698799B CN 109698799 B CN109698799 B CN 109698799B CN 201910033163 A CN201910033163 A CN 201910033163A CN 109698799 B CN109698799 B CN 109698799B
- Authority
- CN
- China
- Prior art keywords
- push
- message
- client
- preset
- module
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种消息推送方法、装置和移动终端,该方法应用于消息推送系统,该系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,该方法包括:推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息后,进一步确定所述推送消息的推送顺序;推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;所述连接管理模块根据接收到所述推送消息,获取所述推送消息中的客户端标识后,发送至所述接入服务模块;所述接入服务模块根据所述客户端标识连接所述客户端并根据所述推送顺序将所述推送消息发送至所述客户端,解决了推送消息因时间冲突、消息拥堵造成信息丢失的问题。
Description
技术领域
本发明涉及消息推送的技术领域,特别是涉及一种消息推送方法、装置和移动终端。
背景技术
随之网络科技的发展,尤其是移动互联网的广泛普及,各应用向移动终端推送消息,这样各种应用平台的推送消息高达上亿级别,可能在同一时间发生海量消息同时传输造成拥堵的现象。
现有技术中,针对各个应用平台的推送消息没有一个统一的管理架构,造成各自应用平台在连接大量移动终端客户端,并向移动终端客户端同时推送消息时,由于时间冲突、消息拥堵造成信息丢失的问题。
发明内容
本发明公开了一种消息推送方法、装置和移动终端,以解决推送消息由于时间冲突、消息拥堵造成信息丢失的问题。
第一个方面,本发明提供了一种消息推送方法,应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,所述的方法包括:
推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;
推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;
推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;
所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;
所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;
所述接入服务模块根据所述客户端标识连接所述客户端;
所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端。
优选地,推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息,包括:
如果推送服务模块接收到所述业务模块发送的推送消息小于或等于预设阈值,则根据接收到所述推送消息的顺序,确定所述推送消息的优先级信息。
优选地,推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息,包括:
如果推送服务模块接收到所述业务模块发送的推送消息大于预设阈值,则推送服务模块将所述推送消息缓存在多个预设消息队列中;
推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息;
推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息。
优选地,推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息之前,还包括:
根据预设随机数标记各所述预设消息队列,所述预设随机数属于预设随机数区间;
根据所述预设随机数的大小和数目,确定所述预设消息队列的优先级信息,
其中,所述预设消息队列标记为从小到大的随机数,
标记所述随机数的数量多的预设消息队列的预设优先级高于标记所述随机数的数量少的预设消息队列的预设优先级,所述随机数属于预设随机数区间。
优选地,推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息,包括:
推送服务模块在所述预设优先级数值区间中获取一个随机数;
推送服务模块根据所述随机数对应的预设消息队列,提取所述预设消息队列中的所述推送消息。
优选地,推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块,包括:
推送服务模块根据所述推送顺序,按照预设消息数目将所述推送消息进行打包,生成推送消息包;
推送服务模块将所述推送消息包发送至所述连接管理模块。
优选地,所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识,包括:
所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息的推送标识;
所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息。
优选地,所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块,包括:
所述连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,生成客户端消息包;
所述连接管理模块按照将所述客户端消息包发送至所述接入服务模块。
优选地,还包括:
根据客户端的登陆信息,更新所述客户端标识中的所述客户端名称信息与所述客户端连接信息,生成更新的客户端标识;
将所述更新的客户端标识存储在所述预设连接信息存储数据库中。
优选地,所述预设连接信息存储数据库包括:所述客户端名称和所述客户端连接信息的映射存储关系,或,所述设备名称和所述客户端连接信息的映射存储关系。
优选地,所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息,包括:
所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的所述客户端名称,或,所述设备名称;
根据所述客户端名称,或,所述设备名称,在预设连接信息存储数据库中的映射关系中,获取对应所述推送标识的客户端连接信息。
第二个方面,本发明提供了一种消息推送装置,应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,所述的装置包括:
优先级信息确定模块,用于推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;
推送顺序确定模块,用于推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;
推送消息第一发送模块,用于推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;
客户端标识获取模块,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;
推送消息第二发送模块,用于所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;
客户端连接模块,用于所述接入服务模块根据所述客户端标识连接所述客户端;
推送消息第三发送模块,用于所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端。
优选地,所述优先级信息确定模块,包括:
优先级信息第一确定子模块,用于如果推送服务模块接收到所述业务模块发送的推送消息小于或等于预设阈值,则根据接收到所述推送消息的顺序,确定所述推送消息的优先级信息。
优选地,所述优先级信息确定模块,包括:
队列子模块,用于如果推送服务模块接收到所述业务模块发送的推送消息大于预设阈值,则推送服务模块将所述推送消息缓存在多个预设消息队列中;
策略子模块,用于推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息;
优先级信息第二确定子模块,用于推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息。
优选地,还包括:
预设消息队列标记子模块,用于根据预设随机数标记各所述预设消息队列,所述预设随机数属于预设随机数区间;
优先级信息第三确定子模块,用于根据所述预设随机数的大小和数目,确定所述预设消息队列的优先级信息,
其中,所述预设消息队列标记为从小到大的随机数,
标记所述随机数的数量多的预设消息队列的预设优先级高于标记所述随机数的数量少的预设消息队列的预设优先级,所述随机数属于预设随机数区间。
优选地,所述策略子模块,包括:
随机数获取单元,用于推送服务模块在所述预设优先级数值区间中获取一个随机数;
推送消息提取单元,用于推送服务模块根据所述随机数对应的预设消息队列,提取所述预设消息队列中的所述推送消息。
优选地,所述推送消息第一发送模块,包括:
推送消息包生成子模块,用于推送服务模块根据所述推送顺序,按照预设消息数目将所述推送消息进行打包,生成推送消息包;
推送消息包发送子模块,用于推送服务模块将所述推送消息包发送至所述连接管理模块。
优选地,所述客户端标识获取模块,包括:
推送标识获取子模块,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息的推送标识;
客户端连接信息获取子模块,用于所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息。
优选地,所述推送消息第二发送模块,包括:
客户端消息包生成子模块,用于所述连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,生成客户端消息包;
客户端消息包发送子模块,用于所述连接管理模块按照将所述客户端消息包发送至所述接入服务模块。
优选地,还包括:
更新的客户端标识生成子模块,用于根据客户端的登陆信息,更新所述客户端标识中的所述客户端名称信息与所述客户端连接信息,生成更新的客户端标识;
预设连接信息存储数据库更新子模块,用于将所述更新的客户端标识存储在所述预设连接信息存储数据库中。
优选地,所述预设连接信息存储数据库包括:所述客户端名称和所述客户端连接信息的映射存储关系,或,所述设备名称和所述客户端连接信息的映射存储关系。
优选地,所述客户端连接信息获取子模块,包括:
名称获取单元,用于所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的所述客户端名称,或,所述设备名称;
客户端连接信息获取单元,用于根据所述客户端名称,或,所述设备名称,在预设连接信息存储数据库中的映射关系中,获取对应所述推送标识的客户端连接信息。
第三方面,本发明提供了一种移动终端,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现所述的消息推送方法的步骤。
第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现所述的消息推送方法的步骤。
相对于现有技术,本发明实施例包括以下优点:
在本发明实施例中,应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,通过推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;所述接入服务模块根据所述客户端标识连接所述客户端;所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端。可以实现海量消息推送时按照消息优先级进行流量控制,保证服务高可用,提高消息推送成功率。
附图说明
图1是本发明的一种消息推送方法的步骤流程图;
图1A是本发明的消息推送架构整体框架示意图;
图1B是本发明的推送服务模块结构示意图;
图1C是本发明的连接管理服务模块结构示意图;
图1D是本发明的连接信息存储方式示意图;
图1E是本发明的连接信息存储另一方式示意图;
图2是本发明的一种消息推送装置的结构框图;
图3为实现本发明各个实施例的一种移动终端的硬件结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种消息推送方法的步骤流程图,所述方法应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,具体可以包括如下步骤:
步骤101,推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;
本发明实施例中,如图1A所示,整个消息推送系统架构中包括业务模块(如业务系统)、推送服务模块(如推送服务集群)、连接管理模块(如连接管理服务集群)、接入服务模块以及客户端(如接入器集群),其中接入服务模块与客户端相连,这些服务都是以集群的方式部署,以保证服务高可用。
其中,推送服务是推送通道中的其中一个服务,内部采用各种高可用技术,能保证能推送通道实时、高效、稳定。
在本发明的一个优选实施例中,步骤101可以包括如下子步骤:
子步骤S10,如果推送服务模块接收到所述业务模块发送的推送消息小于或等于预设阈值,则根据接收到所述推送消息的顺序,确定所述推送消息的优先级信息。
具体地,如图1B所示,消息推送模块中包括接口模块,该模块主要用于接收上游各个业务系统的推送请求,再把请求交给队列模块处理。该模块主要采用了应用本地队列、池化技术和线程池隔离技术。
其中,每个接口有一条本地队列,用于缓存I/O线程从网络获得的请求,并提供给相应的接口线程池处理,在大并发量场景下,能起到高速缓存请求的作用。
除此之外,为了能快速地消费本地队列中的请求,采用线程池并发处理,能提高处理效率。
再者,为了避免各接口之间的相互影响,采用线程池隔离技术处理。
例如:有A、B两个接口,如果共用一个线程池处理请求,则当A接口的请求处理耗时较长时,线程池里的线程会全部用在处理A接口的请求上,而导致B接口的请求获取不到线程处理,最终B接口的请求会一直失败或超时。
所以,经过上述接口接收到推送消息后,根据接收到消息的数量来进行队列存储,例如,如果推送消息小于或等于预设阈值,那么就按照接收到推送消息的顺序存储在队列模块中。
在本发明的另一个优选实施例中,步骤101可以包括如下子步骤:
子步骤S11,如果推送服务模块接收到所述业务模块发送的推送消息大于预设阈值,则推送服务模块将所述推送消息缓存在多个预设消息队列中;
具体地,如果短时间内出现大量消息推送的情况,即推送消息大于预设阈值,为保证整条推送链路的稳定性。主要采用多优先级队列、持久化磁盘、顺序读写等方案,优先级高的队列,消息优先推送。
其中,队列存储方案包括:
方案A,内存型队列
消息的插入和拉取动作,都在内存中完成,效率极高,耗时极少,缺点是受限于机器内存大小。
方案B,磁盘型队列
磁盘顺序写的性能很高,TPS可达百万条/每秒,队列拉取的速度也很高,耗时很少,而且市面上磁盘的容量都是TB甚至PB级别,可支持海量消息的存储,非常适用于高吞吐量的场景。由于是持久化到磁盘,所以即使发生断电等故障,在电力恢复后,依然可以继续从磁盘中拉取断电前的消息进行处理,有效地保证了消息的安全性和稳定性。
子步骤S12,推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息;
具体地,根据上述描述,推送消息一边从服务方不断的接收推送消息,另一边将存储在队列中的推送消息提取后,进行下一步分发,分发策略根据当前接收到的推送消息是否超过预设阈值而设定的预设频率,从不同的队列中提取。
在本发明的一个优选实施例中,子步骤S12可以包括如下子步骤:
子步骤A1,推送服务模块在所述预设优先级数值区间中获取一个随机数;
子步骤A2,推送服务模块根据所述随机数对应的预设消息队列,提取所述预设消息队列中的所述推送消息。
具体地,可以描述如下:
若可以对随时数划分10个区间,队列的优先级设置对应如下:
优先级1--[1]
优先级2--[2,3]
优先级3--[4,5,6]
优先级4--[7,8,9,10]
优先级5--[11,12,13,14,15]
优先级6--[16,17,18,19,20,21]
优先级7--[22,23,24,25,26,27,28]
优先级8--[29,30,31,32,33,34,35,36]
优先级9--[37,38,39,40,41,42,43,44,45]
优先级10--[46,47,48,49,50,51,52,53,54,55]
那么随机数区间为[1,55],在该区间中随机选取一个数,例如[46],那么就从对应的优先级为10的消息队列中提取对应46的推送消息。
可以理解地,包含随机数越多的队列,被抽取到推送消息的概率越大,所有一般为优先级高的队列设置数量多的随机数。
优选地,还包括:
子步骤S13,根据预设随机数标记各所述预设消息队列,所述预设随机数属于预设随机数区间;
其中,在进行推送消息在预设消息队列存储钱,设置一定数目的消息队列,并为每个队列设定优先级,将不同优先级的推送消息存储在相应的队列中,优先级越高的队列,队列中的消息被推送的机率越大。
例如,假设优先级分为1至10级,并一一与队列对应。数字越大,表示优先级越高。
在每次从队列拉取消息之前,先计算出一个1至55区间内的随机数,得出的的数字属于哪个区间,则从哪个队列拉取消息。区间包含的数字越多,命中的概率越大。
当然,随机数区间不限于上述描述的1至55,在实际应用找那个根据推送消息数目大小和队列多少而设置,本发明实施例对此不加以限制。
子步骤S14,根据所述预设随机数的大小和数目,确定所述预设消息队列的优先级信息,
其中,所述预设消息队列标记为从小到大的随机数,标记所述随机数的数量多的预设消息队列的预设优先级高于标记所述随机数的数量少的预设消息队列的预设优先级,所述随机数属于预设随机数区间。
具体地,以上步骤可以描述为:
每一个优先级代表一个队列标记,为提升随机数的计算效率,采用独立一个线程池定时计算一批随机数到一个容器中,并保证该容器中的随机数的数量不低于指定值,如果低于指定值,则再生成一批随机数放到容器中。另一个线程池在从队列拉取消息之前,先从容器中取出一批随机数,再根据这批随机数从对应的队列中拉取消息。
子步骤S15,推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息。
其中,从哪个队列拉取消息,则该消息则标记为对应的优先级。
当然,上述的生成的随机数具有离散分布的特性,但是在消息量少的时候,离散分布不够均衡,会引起低先级低的区间长期不能命中,而“保底”策略主要是用于避免推送优先级低的消息一直在队列中堆积,长期得不到推送。
“保底”策略的实现方式:每秒统计各优先级队列中消息的提取数量,如果发现某条队列的消息拉取数量低于指定阀值,则使用线程池并发拉取,并提交给推送模块。
步骤102,推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;
具体地,根据上述确定的推送消息优先级,确定推送顺利,通常优先级高的先推送。
步骤103,推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;
具体地,推送模块用于把策略模块提交的消息,通过TCP长连接,发送给连接管理服务集群。这里采用数据打包的方式,即把多条消息打包后再发送(推送消息包),以减少网络交互的次数,另外采用AIO异步非阻塞的网络通信模型进行通信,提高网络通信效率。
在本发明的另一个优选实施例中,步骤103可以包括如下子步骤:
子步骤A1,推送服务模块根据所述推送顺序,按照预设消息数目将所述推送消息进行打包,生成推送消息包;
具体地,将消息推送模块根据所述推送顺序,进行打包为推送消息包,每个消息包中包含预设数目的推送消息。
子步骤A2,推送服务模块将所述推送消息包发送至所述连接管理模块。
具体地,如图1A所示将打包好的推送消息包再分发到连接管理模块进行下一步处理。
步骤104,所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;
具体地,如图1C所示,连接管理服务模块主要用于维护和管理客户端的连接信息。在推送消息时,查询接入器及客户端的连接信息;在客户端上线(用户打开APP)或下线(用户退出APP)时,更新和删除客户端的连接信息。
其中,在连接管理服务模块中有连接信息存储,连接管理服务模块根据接收到推送消息,在连接信息存储中获取推送消息对应的客户端标识。
在本发明的另一个优选实施例中,步骤104可以包括如下子步骤:
子步骤S41,所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息的推送标识;
具体地,向客户端推送消息时,一般是按用户id或是设备标识(例如设备id、设备token等)进行推送,所以该模块会对外提供多个接口,方便上游服务调用。
其中,每个接口有一条本地队列,用于缓存I/O线程从网络获得的请求,并提供给接口线程池处理,在大并发量场景下,能起到高速缓存请求的作用。
其中,为了能快速地消费本地队列中的请求,采用线程池并发处理,能提高处理效率。并且,为避免各接口之间的相互影响,采用线程池隔离技术处理。
例如:有A、B两个接口,如果共用一个线程池处理请求,则当A接口的请求处理耗时较长时,线程池会全部都在处理A接口的请求,而导致B接口的请求获取不到线程处理,最终B接口的请求会一直失败或超时。
子步骤S42,所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息。
具体地,查询模块用于从存储集群中,根据推送标识(例如用户id或设备id等)查询出客户端的连接信息。再把推送消息以及连接信息交给分发模块处理。
该模块采用命令集合的方式(command pipeline),访问存储集群,可以有效减少命令的交互次数(例如把10个命令打包成一个,提交到存储集群,比分别提交10个命令的效率要高几十倍)。
在本发明的另一个优选实施例中,步骤S42可以包括如下子步骤:
子步骤B1,所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的所述客户端名称,或,所述设备名称;
子步骤B2,根据所述客户端名称,或,所述设备名称,在预设连接信息存储数据库中的映射关系中,获取对应所述推送标识的客户端连接信息。
具体地,如图1D所示,预设连接信息存储数据库中的信息存储方式一包括冗余存储,即按用户id和设备id(或设备其他标识)维度对数据进行存储。在推送消息时,可以明确地向哪个维度的存储进行查询,并且查询的时间复杂度为O(1),所以可以支持海量消息的查询操作。
数据结构设计如下:
按用户id维度存储时:key=用户id,value=连接信息
按设备id维度存储时:key=设备id,value=连接信息
此外,预设连接信息存储数据库中的信息存储方式二包括映射存储,即如果连接信息中,需要包含更多的信息,例如登录信息、用户/设备的某些状态信息等,则单条连接信息的数据量会比较大,当存储海量连接信息时,如果采用冗余存储,则会占用很大的存储空间,此时可以采用映射存储方案。
如图1E所示,按用户id以及设备id存储的数据量会比较小,数据量最大的是按连接信息id维度存储。
采用映射存储,可以有效减少连接信息的存储空间,以支持存储更多的数据。
数据结构设计如下:
按用户id维度存储时:key=用户id,value=连接信息id
按设备id维度存储时:key=设备id,value=连接信息id
按连接id维度存储时:key=连接信息id,value=连接信息
具体地,根据上述不同的信息存储方式查询对应各推送消息的客户端标识,在提升查询效率的方案:采用水平切分和主从读写分离方案。
水平切分(以按用户id为维度存储为例说明):
按用户id取模或按一致性哈希算法,把连接信息分散到多个空间存储。以减少单个空间的存储量。因为数据量少了,查询时检索的数量也少了,查询效率自然就变高了。另外,这些存储空间可以分散到不同的物理机器,进一步提升查询性能。
主从分离:
为了减少读和写的相互影响,采用一主一从和一主多从的设计。写时,操作主库,读时访问的是从库。另外,主库和从库可以部署在不同的机器上,进一步减少读和写之间的相互影响,也进一步提升单个库的读或写的性能。
步骤105,所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;
如图1C所示,所述连接管理模块通过分发模块将查询模块查到的连接信息及消息(即推送消息以及上述步骤中获取的对应的客户端标识),通过TCP长连接,发送给接入器集群。
在本发明的另一个优选实施例中,步骤105可以包括如下子步骤:
子步骤S51,所述连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,生成客户端消息包;
具体地,连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,即把多条消息打包后再发送,以减少网络交互的次数,另外采用AIO异步非阻塞的网络通信模型进行通信,提高网络通信效率。
子步骤S52,所述连接管理模块按照将所述客户端消息包发送至所述接入服务模块。
子步骤S53,根据客户端的登陆信息,更新所述客户端标识中的所述客户端名称信息与所述客户端连接信息,生成更新的客户端标识;
具体地,当客户端上下线、用户登陆、退出登录时,可以更新客户端的连接信息。
子步骤S54,将所述更新的客户端标识存储在所述预设连接信息存储数据库中。
具体地,生成更新的客户端标识后存储在预设连接信息存储数据库中。
其中,所述预设连接信息存储数据库包括:所述客户端名称和所述客户端连接信息的映射存储关系,或,所述设备名称和所述客户端连接信息的映射存储关系。
具体地,在常用的推送场景中,一般是向用户(例如已登录的用户)或向设备(不管用户有没有登录)推送消息。为了能支持高并发的数据查询场景,需要对连接信息存储做特殊的设计。
其中,连接信息,需要包含接入器的连接信息以及客户端的连接信息,即[接入器连接id,客户端连接id]。
另外,连接管理服务会根据接入器连接id,找到相应的接入器发送消息。
其中,接入器会根据客户端连接id,找到相应的TCP长连接,把消息推送给客户端。
步骤106,所述接入服务模块根据所述客户端标识连接所述客户端;
步骤107,所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端。
其中,如图1A所示,接入服务模块根据所述客户端标识通过接入器接入客户端后,将上述步骤中分发的推送消息根据客户端地址再次分发到各连接客户端。
其中,客户端连接过程中进行的海量长连接中,服务器通常监听一个本地端口等待客户端的连接,在不考虑端口重用的情况下,本地监听的端口是独占的。而TCP是一个四元组,即包括[本地ip,本地端口,远程ip,远程端口],所以服务器的TCP连接四元组中,只有远程ip(即客户端ip)和远程端口(即客户端端口)是可变的。所以理论上,单台服务器支持的客户端连接数=远程ip数x远程端口数,即2^32x2^16=2^48,即单台服务端机器最大的TCP连接数约为2的48次方,即为281474976710656。
在实际应用中,最大连接数受限于内存、操作系统等的限制。在Uninx和Linux系统下,最大连接数主要受内存和文件句柄的数量限制。
要支持海量的长连接,要采用以下方案来实践:
A,修改单个进程的文件句柄限制
Linux系统会限制单个进程能打开的文件句柄数量,可以通过以下方式修改最大限制数:
修改/etc/security/limits.conf文件(例如把软限制和硬限制改为一百万):
soft nofile 1000000
soft nofile 1000000
B,修改整个系统的文件句柄限制
Linux系统还会限制整个系统总的文件句柄数量,可以通过以下方式修改最大限制数:
修改/etc/sysctl.conf文件(例如把最大限制数改为一百万):
fs.file-max=1000000
net.ipv4.ip_conntrack_max=1000000
net.ipv4.netfilter.ip_conntrack_max=1000000
C,采用AIO异步非阻塞网络模型
采用AIO异步非阻塞网络模型,可实现单台服务端支持百万级的连接数。
D,接入层支持水平扩展
接入器采用集群方式部署,支持水平横向扩展,所以当客户端数量增多时,可以增加部署多台接入器,即可支持海量的客户端连接。
当然,海量长链接的接入方式不限于上述描述,本发明实施例不加限制。
在本发明实施例中,应用于消息推送系统,该系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,该方法包括:推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;所述接入服务模块根据所述客户端标识连接所述客户端;所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端,可以解决因时间冲突、消息拥堵造成信息丢失的问题。
参照图2,示出了本发明的一种消息推送装置的结构框图,所述装置应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,所述的装置具体可以包括如下模块:
优先级信息确定模块201,用于推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;
在本发明的另一个优选实施例中,所述优先级信息确定模块201,可以包括:
优先级信息第一确定子模块M11,用于如果推送服务模块接收到所述业务模块发送的推送消息小于或等于预设阈值,则根据接收到所述推送消息的顺序,确定所述推送消息的优先级信息。
在本发明的另一个优选实施例中,所述优先级信息确定模块201,可以包括:
队列子模块M12,用于如果推送服务模块接收到所述业务模块发送的推送消息大于预设阈值,则推送服务模块将所述推送消息缓存在多个预设消息队列中;
策略子模块M13,用于推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息;
优选地,所述策略子模块M13,包括:
随机数获取单元,用于推送服务模块在所述预设优先级数值区间中获取一个随机数;
推送消息提取单元,用于推送服务模块根据所述随机数对应的预设消息队列,提取所述预设消息队列中的所述推送消息。
优先级信息第二确定子模块M14,用于推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息。
优选地,所述优先级信息确定模块201,还包括:
预设消息队列标记子模块,用于根据预设随机数标记各所述预设消息队列,所述预设随机数属于预设随机数区间;
优先级信息第三确定子模块,用于根据所述预设随机数的大小和数目,确定所述预设消息队列的优先级信息,
其中,所述预设消息队列标记为从小到大的随机数,
标记所述随机数的数量多的预设消息队列的预设优先级高于标记所述随机数的数量少的预设消息队列的预设优先级,所述随机数属于预设随机数区间。
推送顺序确定模块202,用于推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;
推送消息第一发送模块203,用于推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;
在本发明的另一个优选实施例中,所述推送消息第一发送模块203,包括:
推送消息包生成子模块M31,用于推送服务模块根据所述推送顺序,按照预设消息数目将所述推送消息进行打包,生成推送消息包;
推送消息包发送子模块M32,用于推送服务模块将所述推送消息包发送至所述连接管理模块。
客户端标识获取模块204,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;
在本发明的另一个优选实施例中,所述客户端标识获取模块204,包括:
推送标识获取子模块M41,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息的推送标识;
客户端连接信息获取子模块M42,用于所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息。
在本发明的另一个优选实施例中,所述客户端连接信息获取子模块M42,包括:
名称获取单元,用于所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的所述客户端名称,或,所述设备名称;
客户端连接信息获取单元,用于根据所述客户端名称,或,所述设备名称,在预设连接信息存储数据库中的映射关系中,获取对应所述推送标识的客户端连接信息。
推送消息第二发送模块205,用于所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;
在本发明的另一个优选实施例中,所述推送消息第二发送模块205,包括:
客户端消息包生成子模块M51,用于所述连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,生成客户端消息包;
客户端消息包发送子模块M52,用于所述连接管理模块按照将所述客户端消息包发送至所述接入服务模块。
在本发明的另一个优选实施例中,所述推送消息第二发送模块205,还包括:
更新的客户端标识生成子模块,用于根据客户端的登陆信息,更新所述客户端标识中的所述客户端名称信息与所述客户端连接信息,生成更新的客户端标识;
预设连接信息存储数据库更新子模块,用于将所述更新的客户端标识存储在所述预设连接信息存储数据库中。
优选地,所述预设连接信息存储数据库包括:所述客户端名称和所述客户端连接信息的映射存储关系,或,所述设备名称和所述客户端连接信息的映射存储关系。
客户端连接模块206,用于所述接入服务模块根据所述客户端标识连接所述客户端;
推送消息第三发送模块207,用于所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端。
本发明实施例提供的装置能够实现图1的方法实施例中的各个过程,为避免重复,这里不再赘述。
在本发明实施例中的一种消息推送装置应用于消息推送系统,该系统包括业务模块、推送服务模块、连接管理模块、接入服务模块以及客户端,该装置包括:优先级信息确定模块,用于推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;推送顺序确定模块,用于推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;推送消息第一发送模块,用于推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;客户端标识获取模块,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息中的客户端标识;推送消息第二发送模块,用于所述连接管理模块将所述推送消息以及所述客户端标识,发送至所述接入服务模块;客户端连接模块,用于所述接入服务模块根据所述客户端标识连接所述客户端;推送消息第三发送模块,用于所述接入服务模块根据所述推送顺序将所述推送消息发送至所述客户端。,可以解决因时间冲突、消息拥堵造成信息丢失的问题。
图3为实现本发明各个实施例的一种移动终端的硬件结构示意图。
该移动终端300包括但不限于:射频单元301、网络模块302、音频输出单元303、输入单元304、传感器305、显示单元306、用户输入单元307、接口单元308、存储器309、处理器310、以及电源311等部件。本领域技术人员可以理解,图3中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,移动终端包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。
应理解的是,本发明实施例中,射频单元301可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器310处理;另外,将上行的数据发送给基站。通常,射频单元301包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元301还可以通过无线通信系统与网络和其他设备通信。
移动终端通过网络模块302为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元303可以将射频单元301或网络模块302接收的或者在存储器309中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元303还可以提供与移动终端300执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元303包括扬声器、蜂鸣器以及受话器等。
输入单元304用于接收音频或视频信号。输入单元304可以包括图形处理器(Graphics Processing Unit,GPU)3041和麦克风3042,图形处理器3041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元306上。经图形处理器3041处理后的图像帧可以存储在存储器309(或其它存储介质)中或者经由射频单元301或网络模块302进行发送。麦克风3042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元301发送到移动通信基站的格式输出。
移动终端300还包括至少一种传感器305,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板3061的亮度,接近传感器可在移动终端300移动到耳边时,关闭显示面板3061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器305还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。
显示单元306用于显示由用户输入的信息或提供给用户的信息。显示单元306可包括显示面板3061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板3061。
用户输入单元307可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元307包括触控面板3071以及其他输入设备3072。触控面板3071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板3071上或在触控面板3071附近的操作)。触控面板3071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器310,接收处理器310发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板3071。除了触控面板3071,用户输入单元307还可以包括其他输入设备3072。具体地,其他输入设备3072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板3071可覆盖在显示面板3061上,当触控面板3071检测到在其上或附近的触摸操作后,传送给处理器310以确定触摸事件的类型,随后处理器310根据触摸事件的类型在显示面板3061上提供相应的视觉输出。虽然在图3中,触控面板3071与显示面板3061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板3071与显示面板3061集成而实现移动终端的输入和输出功能,具体此处不做限定。
接口单元308为外部装置与移动终端300连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元308可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端300内的一个或多个元件或者可以用于在移动终端300和外部装置之间传输数据。
存储器309可用于存储软件程序以及各种数据。存储器309可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器309可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器310是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器309内的软件程序和/或模块,以及调用存储在存储器309内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器310可包括一个或多个处理单元;优选的,处理器310可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器310中。
移动终端300还可以包括给各个部件供电的电源311(比如电池),优选的,电源311可以通过电源管理系统与处理器310逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
另外,移动终端300包括一些未示出的功能模块,在此不再赘述。
优选的,本发明实施例还提供一种移动终端,包括处理器310,存储器309,存储在存储器309上并可在所述处理器310上运行的计算机程序,该计算机程序被处理器310执行时实现上述消息推送方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述消息推送方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (24)
1.一种消息推送方法,其特征在于,应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入器集群以及客户端,其中,所述连接管理模块用于维护和管理客户端的连接信息,且所述连接管理模块对外提供多个接口;所述接入器集群中各接入器具有最大连接数,所述最大连接数与该接入器的内存和文件句柄的数量相关;所述的方法包括:
推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;
推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;
推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;
所述连接管理模块根据所述推送顺序接收到所述推送消息,并在已有的连接信息存储数据库中获取所述推送消息对应的连接信息,所述连接信息包括接入器连接信息以及客户端连接信息;
所述连接管理模块将所述推送消息以及所述客户端连接信息,发送至所述接入器连接信息对应的接入器中;
所述接入器根据所述客户端连接信息连接所述客户端;
所述接入器根据所述推送顺序将所述推送消息发送至所述客户端。
2.根据权利要求1所述的方法,其特征在于,推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息,包括:
如果推送服务模块接收到所述业务模块发送的推送消息小于或等于预设阈值,则根据接收到所述推送消息的顺序,确定所述推送消息的优先级信息。
3.根据权利要求1所述的方法,其特征在于,推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息,包括:
如果推送服务模块接收到所述业务模块发送的推送消息大于预设阈值,则推送服务模块将所述推送消息缓存在多个预设消息队列中;
推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息;
推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息。
4.根据权利要求3所述的方法,其特征在于,推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息之前,还包括:
根据预设随机数标记各所述预设消息队列,所述预设随机数属于预设随机数区间;
根据所述预设随机数的大小和数目,确定所述预设消息队列的优先级信息,
其中,所述预设消息队列标记为从小到大的随机数,
标记所述随机数的数量多的预设消息队列的预设优先级高于标记所述随机数的数量少的预设消息队列的预设优先级,所述随机数属于预设随机数区间。
5.根据权利要求4所述的方法,其特征在于,推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息,包括:
推送服务模块在所述预设优先级数值区间中获取一个随机数;
推送服务模块根据所述随机数对应的预设消息队列,提取所述预设消息队列中的所述推送消息。
6.根据权利要求1所述的方法,其特征在于,推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块,包括:
推送服务模块根据所述推送顺序,按照预设消息数目将所述推送消息进行打包,生成推送消息包;
推送服务模块将所述推送消息包发送至所述连接管理模块。
7.根据权利要求1所述的方法,其特征在于,所述连接管理模块根据所述推送顺序接收到所述推送消息,并在已有的连接信息存储数据库中获取所述推送消息对应的连接信息,包括:
所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息的推送标识;
所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息。
8.根据权利要求7所述的方法,其特征在于,所述连接管理模块将所述推送消息以及所述客户端连接信息,发送至所述接入器连接信息对应的接入器中,包括:
所述连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,生成客户端消息包;
所述连接管理模块按照将所述客户端消息包发送至所述接入器。
9.根据权利要求7所述的方法,其特征在于,还包括:
根据客户端的登陆信息,更新所述客户端标识中的所述客户端名称信息与所述客户端连接信息,生成更新的客户端标识;
将所述更新的客户端标识存储在所述预设连接信息存储数据库中。
10.根据权利要求7所述的方法,其特征在于,所述预设连接信息存储数据库包括:所述客户端名称和所述客户端连接信息的映射存储关系,或,设备名称和所述客户端连接信息的映射存储关系。
11.根据权利要求8所述的方法,其特征在于,所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息,包括:
所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的所述客户端名称,或,设备名称;
根据所述客户端名称,或,设备名称,在预设连接信息存储数据库中的映射关系中,获取对应所述推送标识的客户端连接信息。
12.一种消息推送装置,其特征在于,应用于消息推送系统,所述系统包括业务模块、推送服务模块、连接管理模块、接入器集群以及客户端,其中,所述连接管理模块用于维护和管理客户端的连接信息,且所述连接管理模块对外提供多个接口;所述接入器集群中各接入器具有最大连接数,所述最大连接数与该接入器的内存和文件句柄的数量相关;所述的装置包括:
优先级信息确定模块,用于推送服务模块接收到所述业务模块发送的推送消息,并确定所述推送消息的优先级信息;
推送顺序确定模块,用于推送服务模块根据所述优先级信息,确定所述推送消息的推送顺序;
推送消息第一发送模块,用于推送服务模块根据所述推送顺序将所述推送消息发送至所述连接管理模块;
客户端标识获取模块,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并在已有的连接信息存储数据库中获取所述推送消息对应的连接信息,所述连接信息包括接入器连接信息以及客户端连接信息;
推送消息第二发送模块,用于所述连接管理模块将所述推送消息以及所述客户端连接信息,发送至所述接入器连接信息对应的接入器中;
客户端连接模块,用于所述接入器根据所述客户端连接信息连接所述客户端;
推送消息第三发送模块,用于所述接入器根据所述推送顺序将所述推送消息发送至所述客户端。
13.根据权利要求12所述的装置,其特征在于,所述优先级信息确定模块,包括:
优先级信息第一确定子模块,用于如果推送服务模块接收到所述业务模块发送的推送消息小于或等于预设阈值,则根据接收到所述推送消息的顺序,确定所述推送消息的优先级信息。
14.根据权利要求12所述的装置,其特征在于,所述优先级信息确定模块,包括:
队列子模块,用于如果推送服务模块接收到所述业务模块发送的推送消息大于预设阈值,则推送服务模块将所述推送消息缓存在多个预设消息队列中;
策略子模块,用于推送服务模块根据预设频率从各所述预设消息队列中提取所述推送消息;
优先级信息第二确定子模块,用于推送服务模块根据所述预设消息队列的预设优先级,确定所述推送消息的优先级信息。
15.根据权利要求14所述的装置,其特征在于,还包括:
预设消息队列标记子模块,用于根据预设随机数标记各所述预设消息队列,所述预设随机数属于预设随机数区间;
优先级信息第三确定子模块,用于根据所述预设随机数的大小和数目,确定所述预设消息队列的优先级信息,
其中,所述预设消息队列标记为从小到大的随机数,
标记所述随机数的数量多的预设消息队列的预设优先级高于标记所述随机数的数量少的预设消息队列的预设优先级,所述随机数属于预设随机数区间。
16.根据权利要求15所述的装置,其特征在于,所述策略子模块,包括:
随机数获取单元,用于推送服务模块在所述预设优先级数值区间中获取一个随机数;
推送消息提取单元,用于推送服务模块根据所述随机数对应的预设消息队列,提取所述预设消息队列中的所述推送消息。
17.根据权利要求12所述的装置,其特征在于,所述推送消息第一发送模块,包括:
推送消息包生成子模块,用于推送服务模块根据所述推送顺序,按照预设消息数目将所述推送消息进行打包,生成推送消息包;
推送消息包发送子模块,用于推送服务模块将所述推送消息包发送至所述连接管理模块。
18.根据权利要求12所述的装置,其特征在于,所述客户端标识获取模块,包括:
推送标识获取子模块,用于所述连接管理模块根据所述推送顺序接收到所述推送消息,并获取所述推送消息的推送标识;
客户端连接信息获取子模块,用于所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的客户端连接信息。
19.根据权利要求18所述的装置,其特征在于,所述推送消息第二发送模块,包括:
客户端消息包生成子模块,用于所述连接管理模块将所述推送消息根据所述客户端名称以及所述客户端连接信息进行打包处理,生成客户端消息包;
客户端消息包发送子模块,用于所述连接管理模块按照将所述客户端消息包发送至所述接入器。
20.根据权利要求18所述的装置,其特征在于,还包括:
更新的客户端标识生成子模块,用于根据客户端的登陆信息,更新所述客户端标识中的所述客户端名称信息与所述客户端连接信息,生成更新的客户端标识;
预设连接信息存储数据库更新子模块,用于将所述更新的客户端标识存储在所述预设连接信息存储数据库中。
21.根据权利要求18所述的装置,其特征在于,所述预设连接信息存储数据库包括:所述客户端名称和所述客户端连接信息的映射存储关系,或,设备名称和所述客户端连接信息的映射存储关系。
22.根据权利要求19所述的装置,其特征在于,所述客户端连接信息获取子模块,包括:
名称获取单元,用于所述连接管理模块根据所述推送标识在预设连接信息存储数据库中,获取对应所述推送标识的所述客户端名称,或,设备名称;
客户端连接信息获取单元,用于根据所述客户端名称,或,设备名称,在预设连接信息存储数据库中的映射关系中,获取对应所述推送标识的客户端连接信息。
23.一种移动终端,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至11中任一项所述的消息推送方法的步骤。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11中任一项所述的消息推送方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910033163.2A CN109698799B (zh) | 2019-01-14 | 2019-01-14 | 一种消息推送方法、装置和移动终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910033163.2A CN109698799B (zh) | 2019-01-14 | 2019-01-14 | 一种消息推送方法、装置和移动终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109698799A CN109698799A (zh) | 2019-04-30 |
CN109698799B true CN109698799B (zh) | 2020-06-02 |
Family
ID=66233419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910033163.2A Active CN109698799B (zh) | 2019-01-14 | 2019-01-14 | 一种消息推送方法、装置和移动终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109698799B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110300050B (zh) * | 2019-05-23 | 2023-02-07 | 中国平安人寿保险股份有限公司 | 消息推送方法、装置、计算机设备及存储介质 |
CN110719221B (zh) * | 2019-10-16 | 2022-11-08 | 北京蚂蜂窝网络科技有限公司 | 即时通信方法、装置、设备及存储介质 |
CN113141319B (zh) * | 2020-01-17 | 2024-05-03 | 阿里巴巴集团控股有限公司 | 消息处理方法、装置、电子设备及存储介质 |
CN112256954A (zh) * | 2020-09-08 | 2021-01-22 | 国网宁夏电力有限公司经济技术研究院 | 一种消息推送的处理方法及相关系统 |
CN112202914B (zh) * | 2020-10-13 | 2023-02-24 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种消息推送方法及装置 |
CN113839987B (zh) * | 2021-08-24 | 2024-04-30 | 广州市瑞立德信息系统有限公司 | 一种基于消息队列的消息分发方法、门禁系统及存储介质 |
CN115277595B (zh) * | 2022-07-26 | 2023-04-25 | 深圳证券通信有限公司 | 数据发送方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468819A (zh) * | 2014-12-24 | 2015-03-25 | 福建江夏学院 | 一种物联网消息推送系统及其方法 |
CN105872111A (zh) * | 2016-06-20 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 一种信息推送的控制方法以及服务器 |
CN107147504A (zh) * | 2017-03-31 | 2017-09-08 | 北京奇艺世纪科技有限公司 | 一种消息推送方法及装置 |
CN107819823A (zh) * | 2017-09-26 | 2018-03-20 | 深圳市诚壹科技有限公司 | 一种信息处理方法、服务器及计算机可读存储介质 |
CN108390950A (zh) * | 2018-05-28 | 2018-08-10 | 中国建设银行股份有限公司 | 一种消息推送方法、装置及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101167329B (zh) * | 2005-04-28 | 2011-09-07 | 艾利森电话股份有限公司 | Ip多媒体子系统中的消息处理方法和服务器 |
CN103259847B (zh) * | 2013-04-15 | 2016-07-06 | 中国联合网络通信集团有限公司 | 文件推送方法、桌面云平台和服务器 |
CN107733967B (zh) * | 2017-07-24 | 2020-01-07 | 深圳壹账通智能科技有限公司 | 推送信息的处理方法、装置、计算机设备和存储介质 |
CN108228361A (zh) * | 2017-11-24 | 2018-06-29 | 五八有限公司 | 一种消息推送方法、终端及计算机可读存储介质 |
-
2019
- 2019-01-14 CN CN201910033163.2A patent/CN109698799B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104468819A (zh) * | 2014-12-24 | 2015-03-25 | 福建江夏学院 | 一种物联网消息推送系统及其方法 |
CN105872111A (zh) * | 2016-06-20 | 2016-08-17 | 腾讯科技(深圳)有限公司 | 一种信息推送的控制方法以及服务器 |
CN107147504A (zh) * | 2017-03-31 | 2017-09-08 | 北京奇艺世纪科技有限公司 | 一种消息推送方法及装置 |
CN107819823A (zh) * | 2017-09-26 | 2018-03-20 | 深圳市诚壹科技有限公司 | 一种信息处理方法、服务器及计算机可读存储介质 |
CN108390950A (zh) * | 2018-05-28 | 2018-08-10 | 中国建设银行股份有限公司 | 一种消息推送方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109698799A (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109698799B (zh) | 一种消息推送方法、装置和移动终端 | |
CN108509299B (zh) | 消息处理方法、设备及计算机可读存储介质 | |
CN109768926B (zh) | 一种数据处理方法、终端设备及计算机可读存储介质 | |
KR20210024647A (ko) | Pucch 충돌의 처리 방법 및 단말 | |
CN111078172B (zh) | 一种显示流畅度的调整方法、装置、电子设备及存储介质 | |
US20220086798A1 (en) | Notification message processing method and terminal | |
US20220278950A1 (en) | Information display method, information sending method, and electronic device | |
CN109413726B (zh) | 功耗控制方法及移动终端 | |
CN108600330A (zh) | 离线消息推送方法、设备及计算机可读存储介质 | |
CN109885257A (zh) | 一种磁盘文件读写方法及装置 | |
CN107506396A (zh) | 一种数据缓存初始化方法、移动终端以及计算机可读存储介质 | |
US20220394634A1 (en) | Power adjustment method and electronic device | |
WO2021169965A1 (zh) | 缓存状态上报方法、中继终端设备及计算机可读存储介质 | |
CN108601048B (zh) | 一种流量控制方法及移动终端 | |
CN111444237A (zh) | 服务器系统、数据传输方法及电子设备 | |
CN110719319A (zh) | 一种资源共享方法、装置、终端设备及存储介质 | |
CN111309205A (zh) | 一种应用分享方法、第一电子设备及计算机可读存储介质 | |
CN110856219A (zh) | 一种上行数据传输方法及装置 | |
CN115237618A (zh) | 请求处理方法、装置、计算机设备及可读存储介质 | |
CN109831359A (zh) | 一种数据网络连接状态的检测方法及其终端设备 | |
CN110225136B (zh) | 一种离线缓存方法及移动终端 | |
CN108089935B (zh) | 一种应用程序的管理方法及移动终端 | |
CN109889613B (zh) | 一种消息推送方法、装置和移动终端 | |
CN111083009B (zh) | 一种抓包方法、装置和移动终端 | |
CN109992430B (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 |