CN111555965B - 一种适用于iOS客户端的消息推送方法及系统 - Google Patents
一种适用于iOS客户端的消息推送方法及系统 Download PDFInfo
- Publication number
- CN111555965B CN111555965B CN202010391771.3A CN202010391771A CN111555965B CN 111555965 B CN111555965 B CN 111555965B CN 202010391771 A CN202010391771 A CN 202010391771A CN 111555965 B CN111555965 B CN 111555965B
- Authority
- CN
- China
- Prior art keywords
- message
- ios
- online
- service
- terminal
- 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
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/226—Delivery according to priorities
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种适用于iOS客户端的消息推送方法,包括:通过APNS服务向离线iOS终端发送离线消息;通过MQTT服务向在线iOS终端发送在线消息,并且本发明在MQTT协议中增加了负载均衡功能,每个服务节点的负载还可以根据实际情况进行动态调整,相较于现有技术本发明可以大幅提高消息的送达率。
Description
技术领域
本发明属于消息推送技术领域,尤其涉及一种适用于iOS客户端的即时消息推送方法。
背景技术
消息推送是指运营人员过自己的产品或第三方工具从服务端主动实时发送信息到移动终端,该过程包括服务端、推送渠道和移动终端三个关键环节。在多数应用场景中,服务端即消息推送服务,为了业务数据安全,消息推送服务也大多部署于信息内网。移动终端主要指手机、平板或其他定制化移动设备,主要系统类型为Android和iOS,其工作的网络环境可能是内网,也可能是外网,工作状态分为在线和离线。
目前的iOS系统的消息推送目前主要使用苹果公司提供的APNS(Apple PushNotification Service)消息推送技术。该技术只能工作于信息外网,随着APNS技术的广泛应用和用户量的增大,其本身的技术缺陷也逐渐体现出来。首先,APNS的存储-转发能力太弱:APNs向iOS设备发送了4条推送消息,iOS设备因网络状况不佳在APNS下线了,这时APNS到设备的链路上有4条任务堆积,APNS只保留并推送最后一条消息,丢弃前三条消息。其次,不能保证消息的达到率,当发送消息频次较高或消息字段较长时其丢包率会明显上升。此外,APNS没有推送到达的回执和统计,不方便产品运营统计。最后,iOS设备上线之后APNS不会主动向消息推送服务器上报。
发明内容
针对现有技术存在的问题,本发明提供了一种适用于IOS客户端的即时消息推送方法,能够提高在线消息的送达率。
实现本发明的技术方案为:
第一方面,一种适用于iOS客户端的消息推送方法,包括:
通过APNS服务向离线iOS终端发送离线消息;
通过MQTT服务向在线iOS终端发送在线消息。
结合第一方面,进一步的,在使用MQTT服务向iOS终端发送消息前需要将iOS终端在MQTT服务上注册,MQTT服务会向iOS终端分配唯一序列号,序列号中包括iOS终端所处内、外网标识。
结合第一方面,进一步的,所述通过MQTT服务向在线终端发送在线消息包括:
对于内网iOS终端,若其在线则MQTT服务直接向其发送消息,若其不在线,则先将消息缓存到消息队列,待iOS终端上线后再通过MQTT服务将缓存的消息向其发送,对于外网iOS终端,若其在线则直接通过MQTT服务向其发送消息。
结合第一方面,进一步的,在通过MQTT服务向在线终端发送在线消息的时候通过负载均衡把负载分摊到多个服务节点上执行。
结合第一方面,进一步的,在进行负载均衡的时候服务节点根据负载情况进行动态扩充和缩减。
结合第一方面,进一步的,所述动态扩充和缩减包括:
初始默认只启动一个MQTT服务节点,当该服务节点短时占用率达到80%时,再启动一个服务,以此类推;当一个MQTT服务节点的短时占用率降低到20%,且其他服务短时占用率也低于60%时,关闭当前服务节点,并将未完成任务均摊到其他服务节点,最后只保留最初启动的服务节点。
第二方面,提供了一种适用于iOS客户端的消息推送系统,包括:
离线模块:用于通过APNS服务向离线iOS终端发送离线消息;
在线模块:用于通过MQTT服务向在线终端发送在线消息。
结合第二方面,进一步的,所述在线模快包括注册模块,用于在使用MQTT服务向iOS终端发送消息前需要将iOS终端在MQTT服务上注册,MQTT服务会向iOS终端分配唯一序列号,序列号中包括iOS终端所处内、外网标识。
结合第二方面,进一步的,所述在线模快还包括负载均衡模块,用于在通过MQTT服务向在线终端发送在线消息的时候通过负载均衡把负载分摊到多个服务节点上执行。
结合第二方面,进一步的,所述负载均衡模块还包括动态扩减模块,用于在进行负载均衡的时候服务节点根据负载情况进行动态扩充和缩减。
有益效果:本发明针对MQTT设计了判断移动终端内外网、负载均衡和动态扩容缩容的功能,并将其与APNS技术结合,当接收消息的iOS终端在线时使用MQTT机制推送消息,iOS终端不在线时使用APNS推送消息,减少通过APNS发送的消息数量,解决APNS在消息并发量大、消息字段过长时存储-转发能力弱、送达率不满足要求的问题。并设计实现适用于不同系统类型、不同网络环境、在线或离线状态移动终端的消息推送策略,部署于内网的MQTT推送服务先判断目标终端为内网终端或外网终端,再判断目标终端是否在线,若目标终端在线,则直接通过MQTT推送服务发送消息,若不在线再根据内外网状态选择对应的消息推送策略。当推送消息的并发量较大,或者网络资源不充足时,MQTT推送服务动态负载均衡整体上扩展网络设备和服务器的带宽、增加吞吐量、加强对消息推送数据处理能力、提高资源利用率。
附图说明
图1为现有技术中的APNS工作机制示意图;
图2为本发明现有技术中的MQTT协议结构框图;
图3为本发明提出的消息推送方法整体结构框图;
图4为发明中信息内外网移动终端消息推送的流程图。
具体实施方式
下面结合说明书附图,对本发明作进一步的说明。
如图1-4所示,为了解决APNS(Apple Push Notification service,苹果推送通知服务)在实际应用中存在的问题,考虑到APNS本身的局限性和苹果公司的管控,首先结合实际情况分析,iOS终端不在线情况占比通常低于一成,即离线消息数量较少,主要都是在线消息,重中之重是解决给iOS终端发送在线消息。
以下为本发明提供了一种适用于iOS客户端的消息推送方法
本发明引入了MQTT协议(Message Queuing Telemetry Transport,消息队列遥测传输协议)。MQTT是由IBM公司开发的一个轻量级的即时通讯协议,是基于客户端-服务器的消息发布/订阅消息的传输协议。它工作在TCP/IP协议族上,是为计算能力有限,且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的协议。MQTT协议实现方式如图2所示。
MQTT协议包括客户端和服务器端,MQTT客户端是一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。MQTT服务器即消息代理,可以是一个应用程序或一台设备,位于消息发布者和订阅者之间。MQTT传输的消息分为主题和负载两部分,主题可以理解为消息的类型,负载可以理解为消息的内容,订阅者订阅主题后,就会收到该主题的消息内容。
MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次服务质量等级QoS(Quality of Service):
QoS0:至多一次,发送方发送一次消息,接收方至多能收到一次,接收方可能接收成功也可能失败;
QoS1:至少一次,发送方发送一次消息,接收方至少能收到一次;如果发送失败,发送方会继续重发,接收方可能会收到重复的消息;
QoS2:确保只有一次,发送方发送一条消息,接收方确保收到且只有一条。如果发送失败,发送方会重新发送,同时确保接收方不会因为消息重传而收到重复的消息。
MQTT是一对多的消息推送机制,即一台MQTT消息推送服务器可以同时给多个MQTT客户端发送消息,再结合QoS2,保证了消息密度大甚至高并发时的送达率,其支持的消息长度也能满足大部分使用场景的需求。MQTT传输协议解除应用程序耦合,发布者与订阅者只需要知道同一个消息代理,不需要直接交互。MQTT可以双向通信,支持服务端反向控制设备,当离线设备上线后,MQTT会同步更新设备状态。基于此功能,在推送消息时,可以统计消息的送达情况。
然而,在进一步的实际应用中,当推送消息的并发量较大,或者网络资源不充足时,会出现延时大、丢包、送达率低等问题,影响用户的正常使用。此外,接收消息的移动终端的工作场景包括信息内网和信息外网,不同网络环境的终端的消息推送策略不同,这也需要在推送前做出判断。
为此,本发明在MQTT协议中添加了负载均衡功能,通过软件负载均衡把负载(工作任务)分摊到多个服务节点上执行,服务节点根据负载情况和容量需求动态的扩充或缩减,避免过载。在具体的应用中,默认只启动一个MQTT服务,当该服务短时(5秒内)占用率达到80%时,再启动一个服务,以此类推。当一个MQTT服务的短时占用率降低到20%,且其他服务短时占用率也低于60%时,关闭当前服务,并将未完成任务均摊到其他服务,最后只保留最初启动的服务。该方案建立在现有网络结构之上,无需额外安装负载均衡软件或者硬件负载均衡,通过动态扩容解决高并发时因网络资源不足带来的问题,动态缩容降低MQTT服务空载概率,整体上扩展网络设备和服务器的带宽、增加吞吐量、加强对消息推送数据处理能力、提高资源利用率。
另外,MQTT服务中增加了对接收消息的移动终端内外网的判断,移动终端第一次注册到MQTT服务时,会分配一个唯一的序列号,该序列号还包括iOS移动终端处于内网或者外网的标识,在推送消息时根据移动终端的序列号判断内外网。
本发明将消息推送策略与实际应用相结合,提出了一种适用于不同移动终端系统类型、工作网络环境和工作状态的消息推送策略,将改进后的MQTT与APNS应用于信息内外网消息推送系统。
管理员在Web控制台编辑消息,包括消息的接收者、消息标题、消息内容等,打包后发送到MQTT推送服务,MQTT推送服务根据目标iOS终端的序列号判断其为内网终端或外网终端,再判断目标终端是否在线。若目标终端在线,则直接通过MQTT推送服务发送消息。对于内网终端,若MQTT判断终端不在线则将消息缓存到消息队列,等待设备上线,再次推送;对于外网终端,若MQTT判断终端不在线,则通过APNS推送消息。只要目标终端在线,不管工作于内网还是外网,都能通过MQTT发送消息。推送消息给外网终端时,不管终端是否在线,消息都要通过隔离装置跨网推送,保证内网数据安全性。
本发明还提供了一种适用于iOS客户端的消息推送系统,包括:
离线模块:用于通过APNS服务向离线iOS终端发送离线消息;
在线模块:用于通过MQTT服务向在线终端发送在线消息。
所述在线模快包括注册模块,用于在使用MQTT服务向iOS终端发送消息前需要将iOS终端在MQTT服务上注册,MQTT服务会向iOS终端分配唯一序列号,序列号中包括iOS终端所处内、外网标识。
所述在线模快还包括负载均衡模块,用于在通过MQTT服务向在线终端发送在线消息的时候通过负载均衡把负载分摊到多个服务节点上执行。
所述负载均衡模块还包括动态扩减模块,用于在进行负载均衡的时候服务节点根据负载情况进行动态扩充和缩减。
为了对本发明的优越性进行验证,以下设计两组针对性实验,并在测试环境下执行,记录实验数据。
了两组针对性的试验,并在测试环境下执行,记录实验数据。
首先测试带宽对消息推送的影响:由于测试环境消息推送服务器部署在云服务,这里带宽选择:1M,2M,5M,10M,结合实际应用,同时给100000个不同类型的终端发送消息,消息大小为1KB,网络延时20ms(ms:毫秒),通过隔离装置耗时4ms。在并发量较大时,MQTT推送服务通过计算,自动扩容或缩容,选择当前最优推送策略。试验中统计了总共送达次数、送达率、总耗时和折算到单位带宽(这里取1M)每条推送消息的平均耗时,具体实验数据如下表1:
带宽 | 送达次数 | 送达率 | 总耗时(/ms) | 单位带宽每条推送消息平均耗时(/ms) |
1M | 99335 | 99.34% | 2208 | 0.0221 |
2M | 99526 | 99.53% | 1090 | 0.0218 |
5M | 99769 | 99.77% | 539 | 0.0216 |
10M | 99987 | 99.99% | 206 | 0.0206 |
结论:当并发量需要的带宽为实际带宽的100倍或10倍时,消息推送的送达率均能达到在99%以上;当带宽不足时,MQTT推送服务会自动扩容,启动更多的MQTT服务,共同完成推送任务。结合总耗时和单位带宽每条推送消息平均耗时数据,在实际应用中,用该策略推送消息的送达率受带宽的影响较小。
其次测试消息长度对消息推送的影响:
参考带宽实验结果选择带宽为2M,根据实际情况选择消息长度分别为以下表格第一列所示,给1000个工作于外网的iOS移动终端用户同时推送消息,网络延时20ms,通过隔离装置耗时4ms,记录送达次数、送达率和耗时如下表2:
消息长度 | 送达次数 | 送达率 | 耗时(/ms) |
<=0.5K | 1000 | 100% | 26 |
0.5K-1K | 1000 | 100% | 25 |
1K-5K | 1000 | 100% | 60 |
5K-10K | 999 | 99.9% | 92 |
10K-20K | 999 | 99.9% | 191 |
20K-50K | 997 | 99.7% | 413 |
从以上可以看出当带宽满足消息推送并发需求时,送达率可以保证为100%;随着消息长度的增大,推送并发需要的带宽也增大,但由于MQTT推送服务动态扩容,送达率虽有所下降但仍能保证在99.9%以上;当消息大小达到20K-50K时,并发消息需要的总带宽为实际带宽的5-10倍时,消息送达率仍然在99%以上。结合经验数据分析,实际应用中消息长度多集中在2K以下,该方案能满足实际需求。
Claims (9)
1.一种适用于iOS客户端的消息推送方法,其特征在于,包括:
通过APNS服务向离线iOS终端发送离线消息;
通过MQTT服务向在线iOS终端发送在线消息,包括: 对于内网iOS终端,若其在线则MQTT服务直接向其发送消息,若其不在线,则先将消息缓存到消息队列,待iOS终端上线后再通过MQTT服务将缓存的消息向其发送,对于外网iOS终端,若其在线则直接通过MQTT服务向其发送消息。
2.根据权利要求1所述的适用于iOS客户端的消息推送方法,其特征在于,在使用MQTT服务向iOS终端发送消息前需要将iOS终端在MQTT服务上注册,MQTT服务会向iOS终端分配唯一序列号,序列号中包括iOS终端所处内、外网标识。
3.根据权利要求1所述的适用于iOS客户端的消息推送方法,其特征在于,
在通过MQTT服务向在线终端发送在线消息的时候通过负载均衡把负载分摊到多个服务节点上执行。
4.根据权利要求3所述的适用于iOS客户端的消息推送方法,其特征在于,在进行负载均衡的时候服务节点根据负载情况进行动态扩充和缩减。
5.根据权利要求4所述的适用于iOS客户端的消息推送方法,其特征在于,所述动态扩充和缩减包括:
初始默认只启动一个MQTT服务节点,当该服务节点短时占用率达到80%时,再启动一个服务,以此类推;当一个MQTT服务节点的短时占用率降低到20%,且其他服务短时占用率也低于60%时,关闭当前服务节点,并将未完成任务均摊到其他服务节点,最后只保留最初启动的服务节点。
6.一种适用于iOS客户端的消息推送系统,其特征在于,包括:
离线模块:用于通过APNS服务向离线iOS终端发送离线消息;
在线模块:用于通过MQTT服务向在线终端发送在线消息,包括: 对于内网iOS终端,若其在线则MQTT服务直接向其发送消息,若其不在线,则先将消息缓存到消息队列,待iOS终端上线后再通过MQTT服务将缓存的消息向其发送,对于外网iOS终端,若其在线则直接通过MQTT服务向其发送消息。
7.根据权利要求6所述的适用于iOS客户端的消息推送系统,其特征在于,所述在线模快包括注册模块,用于在使用MQTT服务向iOS终端发送消息前需要将iOS终端在MQTT服务上注册,MQTT服务会向iOS终端分配唯一序列号,序列号中包括iOS终端所处内、外网标识。
8.根据权利要求6所述的适用于iOS客户端的消息推送系统,其特征在于,所述在线模快还包括负载均衡模块,用于在通过MQTT服务向在线终端发送在线消息的时候通过负载均衡把负载分摊到多个服务节点上执行。
9.根据权利要求8所述的适用于iOS客户端的消息推送系统,其特征在于,所述负载均衡模块还包括动态扩减模块,用于在进行负载均衡的时候服务节点根据负载情况进行动态扩充和缩减。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010391771.3A CN111555965B (zh) | 2020-05-11 | 2020-05-11 | 一种适用于iOS客户端的消息推送方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010391771.3A CN111555965B (zh) | 2020-05-11 | 2020-05-11 | 一种适用于iOS客户端的消息推送方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111555965A CN111555965A (zh) | 2020-08-18 |
CN111555965B true CN111555965B (zh) | 2022-05-27 |
Family
ID=72004474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010391771.3A Active CN111555965B (zh) | 2020-05-11 | 2020-05-11 | 一种适用于iOS客户端的消息推送方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111555965B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112333115B (zh) * | 2020-08-19 | 2024-02-09 | 深圳Tcl新技术有限公司 | 数据传输方法、终端设备、服务器及存储介质 |
CN113067882A (zh) * | 2021-03-31 | 2021-07-02 | 建信金融科技有限责任公司 | 一种消息处理方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412101A (zh) * | 2016-10-28 | 2017-02-15 | 浪潮软件集团有限公司 | 一种基于mqtt协议的面向用户的消息推送的方法 |
CN110661889A (zh) * | 2019-11-06 | 2020-01-07 | 杭州涂鸦信息技术有限公司 | 一种iOS端的推送消息同步与补偿方法及系统 |
CN111131501A (zh) * | 2019-12-31 | 2020-05-08 | 郑州信大捷安信息技术股份有限公司 | 一种基于mqtt协议的消息推送系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10630731B2 (en) * | 2015-10-08 | 2020-04-21 | Verizon Patent And Licensing Inc. | Establishing media sessions via MQTT and SIP |
-
2020
- 2020-05-11 CN CN202010391771.3A patent/CN111555965B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106412101A (zh) * | 2016-10-28 | 2017-02-15 | 浪潮软件集团有限公司 | 一种基于mqtt协议的面向用户的消息推送的方法 |
CN110661889A (zh) * | 2019-11-06 | 2020-01-07 | 杭州涂鸦信息技术有限公司 | 一种iOS端的推送消息同步与补偿方法及系统 |
CN111131501A (zh) * | 2019-12-31 | 2020-05-08 | 郑州信大捷安信息技术股份有限公司 | 一种基于mqtt协议的消息推送系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111555965A (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
De Caro et al. | Comparison of two lightweight protocols for smartphone-based sensing | |
US8068821B2 (en) | Method and apparatus for providing content to users using unicast and broadcast wireless networks | |
US20060120328A1 (en) | Resource utilization efficiency during hand-off in mobile communication systems | |
CN102177697B (zh) | 互联网业务控制方法及相关设备和系统 | |
US20080040443A1 (en) | Methods and systems for providing application level presence information in wireless communication | |
CN106953797B (zh) | 一种基于动态连接的rdma数据传输的方法与装置 | |
CN111555965B (zh) | 一种适用于iOS客户端的消息推送方法及系统 | |
CN111092802A (zh) | 一种消息交互方法、发送设备及接收设备 | |
CN106027599B (zh) | 一种数据传输通道建立方法、系统和服务器 | |
CN106101468B (zh) | 传输链路的确定方法及装置 | |
CN102368767B (zh) | 一种基于hfc网络的加速互联网上网方法及系统 | |
CN113259874A (zh) | 消息处理方法、电子设备及存储介质 | |
CN113412478B (zh) | 消息收发方法、通信装置以及程序 | |
US7689223B1 (en) | Method and system for delaying retransmission of data traffic to a wireless terminal | |
CN115037785B (zh) | 即时通讯系统及方法 | |
JP2010067015A (ja) | ファイル送信装置、ファイル受信装置、ファイル送受信システム及びそのプログラム | |
CN114979982B (zh) | 消息的下发方法、装置、电子设备及存储介质 | |
CN109120578B (zh) | 一种实现链路连接处理的方法及装置 | |
US10299286B2 (en) | Method and apparatus for managing uplink traffic from a client device in a communication network | |
CN109379443B (zh) | 一种面向物联网的分布式消息队列的实现方法 | |
Huang et al. | A message push method for iOS mobile terminals | |
CN107222299A (zh) | 一种数据传输方法、系统和电子设备 | |
CN101305623A (zh) | 用于确定具有控制功能的pt服务器的方法和装置 | |
US20230020573A1 (en) | Transmission tunnel changing method, access network device, and core network device | |
CN115550877B (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 |