CN105162807A - 一种大规模消息推送方法及系统 - Google Patents
一种大规模消息推送方法及系统 Download PDFInfo
- Publication number
- CN105162807A CN105162807A CN201510655182.0A CN201510655182A CN105162807A CN 105162807 A CN105162807 A CN 105162807A CN 201510655182 A CN201510655182 A CN 201510655182A CN 105162807 A CN105162807 A CN 105162807A
- Authority
- CN
- China
- Prior art keywords
- information
- route
- client
- online
- deferred
- 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.)
- Pending
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种大规模消息推送方法,所述推送方法包含:客户端发起连接请求,路由端接收所述连接请求后反馈节点地址;所述客户端根据所述节点地址与联机端建立长连接;所述客户端向所述路由端发送离线消息请求,所述路由端将所述离线消息请求透传至离线端,所述离线端根据所述离线消息请求从数据存储端获得离线消息;所述离线端将获得的离线消息反馈至所述路由端,所述路由端将所述离线消息传输给所述客户端;以及服务端将发布消息传输至所述路由端,所述路由端将所述发布消息传输至所述联机端,所述联机端将接收到的发布消息持久化处理到所述数据存储端;当所述客户端在线时,所述联机端将所述发布消息传输至所述客户端。
Description
技术领域
本发明包含数据推送领域,尤指一种大规模消息推送方法及系统。
背景技术
所谓信息推送,就是"web广播",是通过一定的技术标准或协议,在互联网上通过定期传送用户需要的信息来减少信息过载的一项新技术。推送技术通过自动传送信息给用户,来减少用于网络上搜索的时间。它根据用户的兴趣来搜索、过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息。从技术而言,信息推送是一项以数据挖掘、自然语言处理以及互联网等多门技术为基础的综合性方向。将合适的信息推送给合适的人,是一项极具挑战的工作。这个过程需要对信息作充分的分析,并对人的兴趣、行为做细致的刻画,并对两者进行有效匹配。一般情况下,客户端与服务器之间通讯客户端是主动的,但这就存在一个问题就是一旦服务器数据有更新或者服务器要下发通知给客户端只能等客户端连接的时候才能实现。这种方式使消息失去了实时性。有鉴于此,当前较好的消息推送方式均采用由服务端主动下发客户端的方式来使得推送消息更具实时性。
采用上述方式势必会涉及到面向多客户端的连接服务,在服务端的处理方式上,多是服务器fork子线程或者子进程进行一对一的请求服务;而一个进程或线程内存占用量就可能高达数兆,无论是进程还是线程,并发处理会涉及上下文切换,影响并发数目,这样在高并发的场景下并不实用,由此无法有效实现大规模消息的推送。
发明内容
为解决上述问题,本发明目的在于提供一种大规模消息推送方法及系统,以此克服服务端无法有效实现大规模消息推送的问题。
为达上述目的,本发明所提供的大规模消息推送方法具体包含:客户端发起连接请求,路由端接收所述连接请求后反馈节点地址;所述客户端根据所述节点地址与联机端建立长连接;所述客户端向所述路由端发送离线消息请求,所述路由端将所述离线消息请求透传至离线端,所述离线端根据所述离线消息请求从数据存储端获得离线消息;所述离线端将获得的离线消息反馈至所述路由端,所述路由端将所述离线消息传输给所述客户端;以及服务端将发布消息传输至所述路由端,所述路由端将所述发布消息传输至所述联机端,所述联机端将接收到的发布消息持久化处理到所述数据存储端;当所述客户端在线时,所述联机端将所述发布消息传输至所述客户端。
在上述大规模消息推送方法中,优选的还包含:所述路由端接收所述连接请求后反馈节点地址还包含对所述连接请求进行身份验证,当所述身份通过验证后,反馈所述节点地址。
在上述大规模消息推送方法中,优选的还包含:所述客户端根据所述节点地址与联机端建立长连接还包含:所述客户端与所述联机端按周期时间发送心跳包。
在上述大规模消息推送方法中,优选的还包含:所述周期时间为50秒。
在上述大规模消息推送方法中,优选的还包含:所述离线消息请求包含当前客户端离线时间与当前时间标识。
在上述大规模消息推送方法中,优选的还包含:所述离线端将获得的离线消息反馈至所述路由端包含:所述离线端根据所述离线消息请求提取有效的离线消息反馈至所述路由端。
在上述大规模消息推送方法中,优选的还包含:所述路由端将所述发布消息传输至所述联机端包含:所述路由端对所述服务端传输的发布消息进行身份验证,当所述身份通过验证后,将所述发布消息传输至所述联机端。
在上述大规模消息推送方法中,优选的还包含:所述路由端对外通信连接都为短连接通信。
本发明还提供一种大规模消息推送系统,所述推送系统具体包含:服务端、路由端、客户端、联机端、离线端和数据存储端;所述服务端用于输出发布消息;所述路由端与所述服务端相连,用于接收所述服务端输出的发布消息并输出,以及提供联机端节点地址和转传离线消息;所述联机端与所述路由端相连,用于接收路由端输出的所述发布消息,将所述发布消息持久化处理和/或输出;所述客户端与所述路由端相连,用于获取所述节点地址和/或接收所述离线消息;所述客户端还与所述联机端长相连,用于获取所述发布消息;所述离线端与所述路由端相连,用于根据离线消息请求获得离线消息,并将所述离线消息输出;所述数据存储端分别与所述联机端和所述离线端相连,用于保存持久化处理后的发布消息并输出。
在上述大规模消息推送系统中,优选的还包含:所述数据存储端周期清理过期发布消息。
本发明的有益技术效果在于:通过本发明所提供的大规模消息推送方法及系统在节约短信发送的成本,满足很多需要后台触发交易的流程处理的同时,还以单机的大并发节约硬件资源,降低硬件设备的成本。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明所提供的大规模消息推送方法的流程图;
图2为本发明所提供的大规模消息推送系统的框架图;
图3为本发明所提供的大规模消息推送方法中客户端与联机端长连接的框架图;
图4为本发明所提供的大规模消息推送系统中推送在线消息的框架图;
图5为本发明所提供的大规模消息推送系统中推送离线消息的框架图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
请参考图1所示,图1为本发明所提供的大规模消息推送方法的流程图,具体包含:S101客户端发起连接请求,路由端接收所述连接请求后反馈节点地址;S102所述客户端根据所述节点地址与联机端建立长连接;S103所述客户端向所述路由端发送离线消息请求,所述路由端将所述离线消息请求透传至离线端,所述离线端根据所述离线消息请求从数据存储端获得离线消息;S104所述离线端将获得的离线消息反馈至所述路由端,所述路由端将所述离线消息传输给所述客户端;以及S105服务端将发布消息传输至所述路由端,所述路由端将所述发布消息传输至所述联机端,所述联机端将接收到的发布消息持久化处理到所述数据存储端;S106当所述客户端在线时,所述联机端将所述发布消息传输至所述客户端。
在上述步骤S101中,优选的还包含:所述路由端接收所述连接请求后反馈节点地址还包含对所述连接请求进行身份验证,当所述身份通过验证后,反馈所述节点地址。上述身份验证包含对当前连接请求信息中的用户身份标识信息,客户端位址标识信息等进行验证,判断所述标识信息是否合法和/或所述标识信息为何类分组信息,根据判断结果反馈对应分配的节点地址;例如,当前用户身份标识信息中标记有VIP用户,则分配节点地址时,优选的分配较即时的节点为该用户提供消息推送服务,当客户端位址标识信息为本地客户端,那么优选的分配为本地用户推送本地消息的节点位址。
在上述步骤S102中,优选的还包含:所述客户端根据所述节点地址与联机端建立长连接还包含:所述客户端与所述联机端按周期时间发送心跳包。所述周期时间为50秒。
在上述大规模消息推送方法中,优选的还包含:所述离线消息请求包含当前客户端离线时间与当前时间标识。
在上述步骤S104中,优选的还包含:所述离线端根据所述离线消息请求提取有效的离线消息反馈至所述路由端。所述离线端分析当前离线消息请求后获得客户端离线时间,将该离线时间与数据存储端中的发布消息进行比对,获得用户缺失的离线消息;提前所述用户缺失的离线消息并反馈输出至所述路由端。
在上述步骤S105中,优选的还包含:所述路由端将所述发布消息传输至所述联机端包含:所述路由端对所述服务端传输的发布消息进行身份验证,当所述身份通过验证后,将所述发布消息传输至所述联机端。
在上述大规模消息推送方法中,优选的还包含:所述路由端对外通信连接都为短连接通信。
请参考图2所示,图2为本发明所提供的大规模消息推送系统,所述推送系统具体包含:服务端、路由端、客户端、联机端、离线端和数据存储端;所述服务端用于输出发布消息;所述路由端与所述服务端相连,用于接收所述服务端输出的发布消息并输出,以及提供联机端节点地址和转传离线消息;所述联机端与所述路由端相连,用于接收路由端输出的所述发布消息,将所述发布消息持久化处理和/或输出;所述客户端与所述路由端相连,用于获取所述节点地址和/或接收所述离线消息;所述客户端还与所述联机端长相连,用于获取所述发布消息;所述离线端与所述路由端相连,用于根据离线消息请求获得离线消息,并将所述离线消息输出;所述数据存储端分别与所述联机端和所述离线端相连,用于保存持久化处理后的发布消息并输出。
在实际工作中,上述大规模消息推送系统中各模块主要执行如下工作:
服务端为消息发布控制台,封装了一套消息发布的网页服务器,可以直接在网页界面上指定接受对象、消息内容和过期时间;服务端通过路由端提供的http接口,以短连接的方式把要发送的信息传给路由端,再由路由端负责分发;
客户端为现有的消息推送客户端即消息推送平台的信息订阅者,一个客户端由APPid和用户key唯一确定;客户端在订阅信息时必须先用短连接访问路由端,获取真正的服务节点即有效的联机端模块地址;
路由端:提供Web服务接口和路由功能,接受客户端和服务端发来的所有web短连接,都要先经过这里来进行身份验证和分流;身份验证的功能所用数据库数据从现有开放平台sap数据库中获取;分流的功能以zookeeper选举算法的结果来确定;其中Zookeeper是在FastPaxos算法的基础上优化生成的,具体包含:通过选举产生了一个leader,只有leader才能提交propose,具体算法可见FastPaxos。有多个可提供服务的节点,每次请求通过选举算法提供一个服务节点。
联机端:与客户端端建立长连接,发送在线消息;联机端模块的多点部署后,每个节点都会注册到zookeeper,真正的节点地址会由路由端发给客户端;
离线端:支持离线消息获取;上游为路由端接受到客户端发送的获取离线消息请求,下游为从数据存储端模块获取相应用户的离线消息;
数据存储端:存储持久化处理后的发布消息,联机端在推送消息前会先进行发布消息持久化处理,供用户上线时收取离线消息;底层数据库集群用keepalived+redis实现高可用。
请参考图3所示,图3为本发明所提供的大规模消息推送方法中客户端与联机端长连接的框架图;首先,客户端向路由端发起长连接请求;路由端在对该客户端进行身份验证且通过后,反馈所述客户端节点地址;客户端以此获取实际的节点地址;然后,客户端按照获取到节点地址,对联机端发送redis协议进行长连接的建立,其中客户端与联机端周期交互一次心跳包,优选的该周期为50s。
请参考图4所示,图4为本发明所提供的大规模消息推送系统中推送在线消息的框架图;在本发明中,所述大规模消息推送系统的在线消息推送主要为如下步骤:首先服务端把信息发布到路由端;路由端对该服务端进行身份验证且通过验证后,路由端把消息发给联机端,联机端获得该发布消息后即对所述发布消息进行数据持久化处理,此时,如果用户在线,所述联机端则根据预先配置的群发、组发、私信等类型的不同,选择性的把消息写入不同的长连接中。
请参考图5所示,图5为本发明所提供的大规模消息推送系统中推送离线消息的框架图;在本发明中,所述大规模消息推送系统的推送离线消息主要为如下步骤:首先当客户端上线时向路由端发起获取离线消息请求,路由端将接收到的离线消息请求转传到内部的离线端,离线端分析接收到的离线消息请求,根据分析结果从数据存储端获取到对应的离线消息,将获得的离线消息再一步步返回到客户端,其中路由端对外的链路的连接都是http协议短连接。
在上述实施例中,所述数据存储端周期清理过期发布消息。以此,使得数据存储端中的发布消息均有效,防止客户端获取离线消息过程中,反馈过期的消息给用户造成误导等情况。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种大规模消息推送方法,其特征在于,所述推送方法包含:
客户端发起连接请求,路由端接收所述连接请求后反馈节点地址;
所述客户端根据所述节点地址与联机端建立长连接;
所述客户端向所述路由端发送离线消息请求,所述路由端将所述离线消息请求透传至离线端,所述离线端根据所述离线消息请求从数据存储端获得离线消息;
所述离线端将获得的离线消息反馈至所述路由端,所述路由端将所述离线消息传输给所述客户端;以及
服务端将发布消息传输至所述路由端,所述路由端将所述发布消息传输至所述联机端,所述联机端将接收到的发布消息持久化处理到所述数据存储端;
当所述客户端在线时,所述联机端将所述发布消息传输至所述客户端。
2.根据权利要求1所述的大规模消息推送方法,其特征在于,所述路由端接收所述连接请求后反馈节点地址还包含对所述连接请求进行身份验证,当所述身份通过验证后,反馈所述节点地址。
3.根据权利要求1所述的大规模消息推送方法,其特征在于,所述客户端根据所述节点地址与联机端建立长连接还包含:所述客户端与所述联机端按周期时间发送心跳包。
4.根据权利要求3所述的大规模消息推送方法,其特征在于,所述周期时间为50秒。
5.根据权利要求1所述的大规模消息推送方法,其特征在于,所述离线消息请求包含当前客户端离线时间与当前时间标识。
6.根据权利要求1所述的大规模消息推送方法,其特征在于,所述离线端将获得的离线消息反馈至所述路由端包含:所述离线端根据所述离线消息请求提取有效的离线消息反馈至所述路由端。
7.根据权利要求1所述的大规模消息推送方法,其特征在于,所述路由端将所述发布消息传输至所述联机端包含:所述路由端对所述服务端传输的发布消息进行身份验证,当所述身份通过验证后,将所述发布消息传输至所述联机端。
8.根据权利要求1所述的大规模消息推送方法,其特征在于,所述路由端对外通信连接都为短连接通信。
9.一种大规模消息推送系统,其特征在于,所述推送系统包含:服务端、路由端、客户端、联机端、离线端和数据存储端;
所述服务端用于输出发布消息;
所述路由端与所述服务端相连,用于接收所述服务端输出的发布消息并输出,以及提供联机端节点地址和转传离线消息;
所述联机端与所述路由端相连,用于接收路由端输出的所述发布消息,将所述发布消息持久化处理和/或输出;
所述客户端与所述路由端相连,用于获取所述节点地址和/或接收所述离线消息;
所述客户端还与所述联机端长相连,用于获取所述发布消息;
所述离线端与所述路由端相连,用于根据离线消息请求获得离线消息,并将所述离线消息输出;
所述数据存储端分别与所述联机端和所述离线端相连,用于保存持久化处理后的发布消息并输出。
10.根据权利要求9所述的大规模消息推送系统,其特征在于,所述数据存储端周期清理过期发布消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510655182.0A CN105162807A (zh) | 2015-10-12 | 2015-10-12 | 一种大规模消息推送方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510655182.0A CN105162807A (zh) | 2015-10-12 | 2015-10-12 | 一种大规模消息推送方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105162807A true CN105162807A (zh) | 2015-12-16 |
Family
ID=54803561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510655182.0A Pending CN105162807A (zh) | 2015-10-12 | 2015-10-12 | 一种大规模消息推送方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105162807A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635280A (zh) * | 2015-12-30 | 2016-06-01 | 东软集团股份有限公司 | 提升消息推送效率的方法、装置及推送服务器 |
CN111371854A (zh) * | 2020-02-24 | 2020-07-03 | 南京甄视智能科技有限公司 | 物联网中的离线消息发送方法、装置、存储介质及服务器 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010122678A1 (en) * | 2009-04-23 | 2010-10-28 | Hitachi,Ltd. | Online storage service system and its data control method |
CN102271097A (zh) * | 2011-09-07 | 2011-12-07 | 南京云恒瑞通网络科技有限责任公司 | 一种统一发送消息含在线即时消息和离线短消息的方法 |
CN103200214A (zh) * | 2012-01-10 | 2013-07-10 | 深圳市快播科技有限公司 | 离线消息集中处理方法和系统 |
CN101917406B (zh) * | 2010-07-22 | 2013-07-10 | 广东威创视讯科技股份有限公司 | 数据传输方法及数据传输系统 |
CN103297934A (zh) * | 2013-03-04 | 2013-09-11 | 东莞宇龙通信科技有限公司 | 信息推送方法、系统和移动终端 |
CN103326925A (zh) * | 2012-03-23 | 2013-09-25 | 腾讯科技(深圳)有限公司 | 一种消息推送方法及装置 |
CN103501305A (zh) * | 2013-10-14 | 2014-01-08 | 中国联合网络通信集团有限公司 | 互联网业务的实现方法、应用服务器和呼叫代理服务器 |
CN104796495A (zh) * | 2015-05-08 | 2015-07-22 | 集怡嘉数码科技(深圳)有限公司 | 一种消息推送方法及系统 |
-
2015
- 2015-10-12 CN CN201510655182.0A patent/CN105162807A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010122678A1 (en) * | 2009-04-23 | 2010-10-28 | Hitachi,Ltd. | Online storage service system and its data control method |
CN101917406B (zh) * | 2010-07-22 | 2013-07-10 | 广东威创视讯科技股份有限公司 | 数据传输方法及数据传输系统 |
CN102271097A (zh) * | 2011-09-07 | 2011-12-07 | 南京云恒瑞通网络科技有限责任公司 | 一种统一发送消息含在线即时消息和离线短消息的方法 |
CN103200214A (zh) * | 2012-01-10 | 2013-07-10 | 深圳市快播科技有限公司 | 离线消息集中处理方法和系统 |
CN103326925A (zh) * | 2012-03-23 | 2013-09-25 | 腾讯科技(深圳)有限公司 | 一种消息推送方法及装置 |
CN103297934A (zh) * | 2013-03-04 | 2013-09-11 | 东莞宇龙通信科技有限公司 | 信息推送方法、系统和移动终端 |
CN103501305A (zh) * | 2013-10-14 | 2014-01-08 | 中国联合网络通信集团有限公司 | 互联网业务的实现方法、应用服务器和呼叫代理服务器 |
CN104796495A (zh) * | 2015-05-08 | 2015-07-22 | 集怡嘉数码科技(深圳)有限公司 | 一种消息推送方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105635280A (zh) * | 2015-12-30 | 2016-06-01 | 东软集团股份有限公司 | 提升消息推送效率的方法、装置及推送服务器 |
CN105635280B (zh) * | 2015-12-30 | 2018-11-06 | 东软集团股份有限公司 | 提升消息推送效率的方法、装置及推送服务器 |
CN111371854A (zh) * | 2020-02-24 | 2020-07-03 | 南京甄视智能科技有限公司 | 物联网中的离线消息发送方法、装置、存储介质及服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100490425C (zh) | 组播网络部署方法及组播网络 | |
US7882245B2 (en) | Presence service access device, presence service system and method for publishing and acquiring presence information | |
CN104080020B (zh) | Onu设备配置的自动下发方法及装置 | |
US20180372507A1 (en) | Information sharing method of smart electricity meter, smart electricity meter and acquisition router | |
CN103546362B (zh) | 进行信息推送的方法、系统及服务器 | |
EP3595325B1 (en) | Method for realizing multicast and relevant network device | |
CN106100914A (zh) | 一种云ac告警信息的推送方法及系统 | |
CN102984223B (zh) | 一种消息发送方法、网络设备及系统 | |
CN105933199A (zh) | 一种保持心跳连接的方法与网关及聊天服务器 | |
CN103532752A (zh) | 移动互联网络用户上网日志实现融合的管理装置和方法 | |
CN101599921B (zh) | 一种企业即时通信系统及其文件传输方法 | |
CN103685357A (zh) | 一种账号多开消息处理方法及系统 | |
WO2016070633A1 (zh) | 上网日志生成方法和装置 | |
CN104009960B (zh) | 一种实现手机客户端即时通信的方法及装置 | |
CN102664831B (zh) | 通过即时通信工具传输文件数据的方法、客户端及系统 | |
CN108650482A (zh) | 一种视频通话服务的响应方法及设备 | |
CN105162807A (zh) | 一种大规模消息推送方法及系统 | |
CN107920072A (zh) | 一种基于数据特征的多媒体共享方法及系统 | |
CN110635894B (zh) | 一种基于帧协议格式的量子密钥输出方法及其系统 | |
CN104468250A (zh) | Tr069测试中的消息处理方法和系统 | |
CN103442256B (zh) | 一种基于html5实现电子节目菜单的方法及系统 | |
CN113132487A (zh) | 一种精简的分布式长连接的数据传输方法及系统 | |
CN105049543A (zh) | 智能路由器间穿越非对称nat进行p2p通信的系统及方法 | |
CN104993970A (zh) | 一种面向分布式系统关键运行指标数据的集中监视方法 | |
CN102387062B (zh) | 动态桥接点改善p2p节点在跨网络时的传输速度的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151216 |