专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

消息推送架构是什么(如何设计一个百万级的推送)

来源:小易整编  作者:小易  发布时间:2020-04-02 11:21
摘要:推送消息是通过 Apple 和 Google 掌控的互联网服务器发送的,推送消息从根本上就是设计用于与应用程序通信的,它们可以发送文本、多媒体文件和特定于应用程序的数据。那么,消息推送的的设计原理和规则是什么? 随着 iPhone 和安卓 手机 这类超级手机的兴起,现在完全...

推送消息是通过 Apple 和 Google 掌控的互联网服务器发送的,推送消息从根本上就是设计用于与应用程序通信的,它们可以发送文本、多媒体文件和特定于应用程序的数据。那么,消息推送的的设计原理和规则是什么?

消息推送设计原理和规则

随着 iPhone 和安卓手机这类超级手机的兴起,现在完全可以绕过运营商,通过标准 TCP/IP 网络直接向这些手机发送消息,这些消息就称为推送消息。

推送消息是通过 Apple 和 Google 掌控的互联网服务器发送的,推送消息从根本上就是设计用于与应用程序通信的,它们可以发送文本、多媒体文件和特定于应用程序的数据,例如:警告声音和显示在应用程序图标上的标记等。

推送通知非常适合智能手机应用,但与基于运营商的移动消息传递相比,它们的普及性和可靠性都较差。

消息推送的分类和方式等,如下图:

消息推送设计原理和规则

(1)消息提醒的流程

输入消息》进入消息仓库》发送消息》消息流水》消息详情

(2)消息发送的时间

  • 一般为上午9点-10点
  • 中午12点-14点
  • 下午5点-6点
  • 晚上21点-22点

(3)消息推送的类型

  • 优惠券到期通知
  • 客服即时消息
  • 抽奖商品到期通知
  • 收藏降价通知
  • 抽奖机会提醒
  • 订单发货提醒
  • 订单退货提醒
  • 购物车商品过期通知
  • 拼团到期通知
  • 各大活动通知

(4)消息推送的规则

移动端获得消息通知主要有两种方式:pull(拉)方式和push(推)方式,下面分别对这两种方式做简要介绍。

pull方式:

pull方式即“拉方式”,这种方式中手机上的应用程序在启动时及经过一定周期会定时连接应用的服务端来获得服务器需要传递给终端的消息,因为此处是终端从服务端主动获得消息,因此称为拉方式。 此方式服务端实现简单,只需要在终端连接上之后把需要发送的消息发送给终端即可,但是此方式有如下弊端:

每个应用终端都需要建立到自己服务器的socket连接,移动终端需要维护多个socket连接,较为耗电,不易于管理。

采用拉的方式,应用在启动的时候会从应用的服务器上拉取消息;启动之后,应用会周期性的连接服务器去检查是否有消息需要拉取,这种方式并不实时,需要等到终端主动拉取的时候服务器才能把消息传递到终端。如果应用频繁检查是否有消息需要拉取,那么耗电会增加,如果检查周期过长,那么会影响消息的实时性

综上,采用pull方式进行通知消息的传递并不是一个很好的方法。

push方式:

  • 采用push方式,移动终端只需要和推送服务器之间保持一个长连接即可。这样移动终端用于推送的socket连接数量就与需要推送服务的应用数量无关了,只需要维持一个终端与推送服务器之间的长连接即可,所有应用的服务端都是直接连接推送服务器并通过推送服务器来把消息推送到终端。而终端也只与推送服务器进行连接即可获得推送的通知消息。
  • 推送服务器通过长连接,在消息到来的时候可以立即把消息推送到连接上来的终端上,实时性比较高
消息推送示意图

消息推送设计原理和规则

消息推送系统逻辑设计图

消息推送设计原理和规则

此图中,推送应用1,2,3为推送应用的服务端,其负责把需要推送的消息放入推送系统。这些应用服务端通过负载均衡服务器来连接到具体的推送服务器。

服务端是Socket.io的集群,供客户端(Web、移动端)连接。集群后面是一个Redis服务器,保存集群中每个节点(我们称之为Cluster)连接的客户端ID。同时Redis里面为每一个Cluster分配了一个队列,保存推送到这个Cluster的消息。

当有消息从某个客户端发出后,所连接的Cluster从Redis里面获取这个消息的目标客户端ID(由于我们同时支持一对一私聊和群组,因此一条消息可能会被推送到多个客户端),然后把消息Push到每个Cluster的消息队列里面。

每一个Cluster都会以阻塞方式读取它所对应的消息队列,一旦发现有消息,就获取并且查看其目标客户端ID是不是连接在这个Cluster上。如果是,就通过Socket.io发送,如果不是就丢弃。然后继续阻塞读取,直到下一条消息到达。

总结

其实粗略来讲,即时通讯-消息推送只是一种实现,比如:你可以用第三方产品,很轻易的就可以实现点对点、甚至点对多的消息收发。

但是在用户需求很个性化,比如:我要对用户的聊天内容进行监控,涉及到敏感的关键字不让消息推送出去、或者我要对开通会员的用户给予“尊贵的身份”。

相比于免费用户,可以在云端保存时效更久的聊天记录或者可以添加的好友数、群数更多或者无上限,这时候对定制化的要求就非常高,毕竟数据是宝贵的。这时候我们就需要自行开发不能依赖第三方服务。


本文地址:问答解惑频道 https://www.hkm168.com/live/128820.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


问答解惑
小编:小易整编
相关文章相关阅读
  • 祝福老师句子大全,教师节送礼必备(感恩教育恩人)

    祝福老师句子大全,教师节送礼必备(感恩教育恩人)

    祝福老师句子大全,教师节送礼必备(感恩教育恩人)教师节是每年的9月10日,这一天是我们向教育恩人表达感激之情和祝福的日子。在这个特殊的日子里,送上一句祝福老师的话语,表达我们对教育工作者的敬意和感激之情,成为了每位学生们献给老师的最好礼物。...

  • 贺知章名句赏析,诗人风采展示(品味优美诗歌)

    贺知章名句赏析,诗人风采展示(品味优美诗歌)

    贺知章名句赏析,诗人风采展示(品味优美诗歌)贺知章,唐代诗人,被誉为“豪放派”代表之一。他的诗歌生动有力,意境深远,语言通俗易懂,充满浓郁的民族气息。他留下了许多优美的诗句,让人感慨万千,不得不赞叹其诗才与风采。其中,著名的“海内存知己,天...

  • 纸飞机折法,制作简单易学(挑战手工艺术)

    纸飞机折法,制作简单易学(挑战手工艺术)

    纸飞机折法,制作简单易学(挑战手工艺术)纸飞机是一款低成本、简单易学的手工艺品,因其制作过程简单易懂,大家可以尝试在家,不需要太多专业工具。首先准备一张A4大小的白纸,将其折成一半,然后再打开,将两边的边角对齐,再次往中间折叠。在折叠的位置...

  • 中超赛程表,看球购票攻略(跟随绿茵场之旅)

     中超赛程表,看球购票攻略(跟随绿茵场之旅)

    中超赛程表,看球购票攻略(跟随绿茵场之旅)中超联赛一直以来都备受球迷关注,每个赛季都会有无数的球迷前往现场观看比赛。为了让广大球迷更好地安排自己的观赛计划,我们在这里为大家介绍一下中超赛程表和看球购票的攻略。中超赛程表中超联赛一般从3月份开...

  • 春节习俗大全,传统文化策源地(领略浓郁年味)

    春节习俗大全,传统文化策源地(领略浓郁年味)

    春节习俗大全,传统文化策源地(领略浓郁年味)春节是中国最重要的传统节日,也被称作“年节”、“新春节”等,是一个具有重大历史意义和文化内涵的节日。说到春节,就不得不提到具有浓郁地域特色和文化内涵的习俗,这些习俗既体现了中华民族的优秀文化传统,...

  • “水”字旁常用字,快速记忆方法(提高汉字识别能力)

    “水”字旁常用字,快速记忆方法(提高汉字识别能力)

    “水”字旁常用字,快速记忆方法(提高汉字识别能力)汉字是中国文化的重要组成部分,对于中文学习者而言,汉字的认识和记忆是非常重要的。其中“水”字是汉字中的一个旁常用字。在学习这个字时,我们可以采用一些快速记忆方法,提高汉字识别能力。首先,我们...

  • 做梦梦见很多蛇,分析梦境内涵(看懂心理暗示)

    做梦梦见很多蛇,分析梦境内涵(看懂心理暗示)

    做梦梦见很多蛇,分析梦境内涵(看懂心理暗示)做梦时梦见很多蛇是一种比较常见的梦境,对于这种梦境的解释和分析是非常重要的。从心理学的角度来看,这种梦境不仅反映了我们潜意识中的想法和情感,也可以为我们指引未来的行动。首先,梦见很多蛇可能说明我们...

  • 制作铃声详解,打造个性化手机(表现自我风格)

    制作铃声详解,打造个性化手机(表现自我风格)

    制作铃声详解,打造个性化手机(表现自我风格)随着移动设备的普及,手机不仅是通信工具,也成为了一种个性化的表现方式。而铃声则是手机个性化中最直接的表现形式之一。制作一个个性化的铃声,不仅可以让你的手机更具有个性化的特色,同时还可以让你展现出自...

  • 周排行
  • 月排行
  • 年排行

精彩推荐