消息通知系统详解1---通讯方式

什么是消息通知系统

消息通知系统,顾名思义即通知消息的传达处理系统。目的是为了让用户获得需要得到的消息及提醒并进行处理。
消息通知微服务的定位是“平台内”的“消息”功能,分为全员消息,订阅类消息,点对点消息。例如系统通知,私信,@类消息

  • 全员消息

系统通知,活动通知,管理员公告等全部用户都会收到的消息

  • 订阅类消息

关注某一类数据的用户,该类数据有更新时向用户发送的消息。例如关注某位大v的微博,公众号,订阅某位知名作家的专栏

  • 点对点消息

某位用户对另外一位用户进行操作后,系统向被操作的用户发送的消息。例如点赞,发红包。

系统特性

消息通知
传输的内容 以文字,超链接为主,辅以图片,不能再多了。
核心需求点 要求消息的高送达率,也就是说“这件事儿一定要想尽办法通知到对方”。对延时要求不高。
系统建设成本 一般只保存文本消息,存储成本低。可根据用户量自由调整服务器集群配置。
交互方式 消息一般被设计为“仅通知,不需要回复”

通讯方式

这里先不考虑后端整体实现,前端与后端之间通讯方式如何选型,如何实现实时/准实时数据交互:
需要介绍下三种通讯方式:

短连接

客户端和服务器每进行一次通讯,就建立一次连接,通讯结束就中断连接。
短连接流程
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。HTTP/1.0使用的TCP默认是短连接。

长连接

是指在建立连接后可以连续多次发送数据,直到双方断开连接。
在这里插入图片描述
HTTP从1.1版本起,底层的TCP使用的长连接。
使用长连接的HTTP协议,会在响应头加入代码:Connection:keep-alive

短连接和长连接的区别

通讯流程

短连接:创建连接 -> 传输数据 -> 关闭连接 ​ 长连接:创建连接 -> 传输数据 -> 保持连接 -> 传输数据 -> …… -> 关闭连接

适用场景

短连接:并发量大,数据交互不频繁情况
长连接:数据交互频繁,点对点的通讯

扫描二维码关注公众号,回复: 10628233 查看本文章

websocket协议

什么是websocket协议

  • WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
  • 何谓全双工:全双工(Full
    Duplex)是通讯传输的一个术语。双方在通信时允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合。全双工指可以同时进行信号的双向传输。指A→B的同时B→A,就像是双向车道。
  • 单工就就像是汽车的单行道,是在只允许甲方向乙方传送信息,而乙方不能向甲方传送 。
  • 参考资料:https://baike.baidu.com/item/%E5%85%A8%E5%8F%8C%E5%B7%A5/310007?fr=aladdin
  • 服务器向客户端发送数据的功能是websocket协议的典型使用场景

三种通信方式的优缺点

优缺点如下:

短轮询 长轮询 WebSocket
浏览器支持 几乎所有现代浏览器 几乎所有现代浏览器 IE 10+ Edge Firefox 4+ Chrome 4+ Safari 5+ Opera 11.5+
服务器负载 较少的CPU资源,较多的内存资源和带宽资源 与传统轮询相似,但是占用带宽较少 无需循环等待(长轮询),CPU和内存资源不以客户端数量衡量,而是以客户端事件数衡量。三种方式里性能最佳。
客户端负载 占用较多的内存资源与请求数 与传统轮询相似 同Server-Sent Event
延迟 非实时,延迟取决于请求间隔 同传统轮询 实时
实现复杂度 非常简单 需要服务器配合,客户端实现非常简单 需要Socket程序实现和额外端口,客户端实现简单

在 WebSocket中,浏览器和服务器只需要完成一次握手,就可以创建持久性的连接,并进行双向数据传输。
在推送功能的实现技术上,相比使用Ajax 定时轮询的方式(setInterval),WebSocket 更节省服务器资源和带宽。
在这里插入图片描述
出于服务器性能和实时性考虑,前后端通讯方式采用WebSocket协议实现。

发布了41 篇原创文章 · 获赞 47 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/u014526891/article/details/105386185
今日推荐