消息推送原理
来源:互联网 发布:大数据 crm 系统架构 编辑:程序博客网 时间:2024/06/13 19:26
这里我们从系统结构的层面来看消息推送系统(Push Server)的基本原理。
首先需要了解几个基本的概念:
HTTP长连接
翻译自http keep-alive connection和http persistent connection,又叫http connection reuse,网上也有反过来翻译成http long connection。
下面这个图来自wikipedia,讲解了http长连接是在一个TCP连接的基础之上,发送多个HTTP请求以及接收多个HTTP响应,这是为了避免每一次请求都去打开一个新的连接。在HTTP 1.1标准中,所有的请求都认为是长连接。
在这里的消息推送系统中,HTTP长连接的作用就是向服务器发送请求,然后一直等待服务器的返回数据。这就相当于客户端在“监听”服务器了,可以随时接收来自服务器的消息。OK,lolita is ready to be pushed!
同步与异步
同步:IO操作将导致请求进程阻塞,直到IO操作完成。也就是说客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。
异步:IO操作不导致请求进程阻塞。也就是说客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求。
同步与异步说的是客户端与服务器端之间的一种通信方式。
阻塞与非阻塞
阻塞:服务器端的线程或者进程没有处理完数据的时候,不会返回,线程或者进程回被挂起,不再响应其他请求。
非阻塞:服务器端在没有处理完的时候,会立即返回,不会挂起线程或者进程,可以继续响应其他请求。
阻塞与非阻塞说的是服务器端对请求的处理方式。
在消息推送系统中,客户端+服务器端一起,使用的是异步非阻塞。
消息推送系统(Push Server)的结构和原理
好了,接下来是就是消息推送系统(Push Server)的结构和原理了:
1. 客户端发出一个http长连接请求,然后等待服务器的响应。这个请求是异步的,所以客户端可以继续工作,比如发起其他ajax请求等等。这个时候客户端就是一个待推倒的小萝莉了。
2. 服务器接到请求之后,并不立即发送出数据,而是hold住这个connecton。这个处理是非阻塞的,所以服务器可以继续处理其他请求。
3. 在某个时刻,比如服务器有新数据了,服务器再主动把这个消息推送出去,即通过之前建立好的连接将数据推送给客户端。
4. 客户端收到返回。这个时候就可以处理数据,然后再次发起新的长连接。
基本原理就是这么简单。
但是在具体实现的时候,还有很多细节要处理,需要一些其他的技术。
- iphone消息推送原理
- iOS 消息推送原理
- iOS 消息推送原理
- IOS消息推送原理
- IOS消息推送原理
- iOS 消息推送原理
- iOS 消息推送原理
- 消息推送的原理
- 消息推送原理
- 消息推送机制原理
- HTTP消息推送原理
- Android 消息推送以及推送原理
- 消息推送(push原理)
- iOS 推送消息的原理
- (iOS消息推送原理) 详情
- Android的消息推送系列之消息推送原理
- ios消息推送机制原理与实现
- IOS 消息推送原理及其实现
- CentOS搭建LAMP服务器环境硬盘分区方案分享
- Android使用Linux mount获取SdCard存储目录
- [LeetCode][Java] Search Insert Position
- Balanced Lineup(RMQ)
- redhat7 systemctl的使用
- 消息推送原理
- 密码发生器
- iOS设计模式-原型
- 线段树扫描线算法
- C++矩阵处理库(比LAPACK更方便)——Eigen详细解析
- Mybatis框架实现功能的流程
- 【C++11】新特性——引入nullprt
- Codeforces Round #310 (Div. 1) C. Case of Chocolate stl应用
- 均方根值(RMS)+ 均方根误差(RMSE)+标准差(Standard Deviation)