HTTP消息推送原理
這里我們從系統(tǒng)結(jié)構(gòu)的層面來看消息推送系統(tǒng)(Push Server)的基本原理。
首先需要了解幾個基本的概念:
HTTP長連接
翻譯自http keep-alive connection和http?persistent connection,又叫http?connection reuse,網(wǎng)上也有反過來翻譯成http long connection。
下面這個圖來自wikipedia,講解了http長連接是在一個TCP連接的基礎(chǔ)之上,發(fā)送多個HTTP請求以及接收多個HTTP響應(yīng),這是為了避免每一次請求都去打開一個新的連接。在HTTP 1.1標準中,所有的請求都認為是長連接。
在這里的消息推送系統(tǒng)中,HTTP長連接的作用就是向服務(wù)器發(fā)送請求,然后一直等待服務(wù)器的返回數(shù)據(jù)。這就相當于客戶端在“監(jiān)聽”服務(wù)器了,可以隨時接收來自服務(wù)器的消息。OK,lolita is ready to be pushed!
同步與異步
同步:IO操作將導(dǎo)致請求進程阻塞,直到IO操作完成。也就是說客戶端在發(fā)送請求后,必須得在服務(wù)端有回應(yīng)后才發(fā)送下一個請求。
異步:IO操作不導(dǎo)致請求進程阻塞。也就是說客戶端在發(fā)送請求后,不必等待服務(wù)端的回應(yīng)就可以發(fā)送下一個請求。
同步與異步說的是客戶端與服務(wù)器端之間的一種通信方式。
阻塞與非阻塞
阻塞:服務(wù)器端的線程或者進程沒有處理完數(shù)據(jù)的時候,不會返回,線程或者進程回被掛起,不再響應(yīng)其他請求。
非阻塞:服務(wù)器端在沒有處理完的時候,會立即返回,不會掛起線程或者進程,可以繼續(xù)響應(yīng)其他請求。
阻塞與非阻塞說的是服務(wù)器端對請求的處理方式。
在消息推送系統(tǒng)中,客戶端+服務(wù)器端一起,使用的是異步非阻塞。
消息推送系統(tǒng)(Push Server)的結(jié)構(gòu)和原理
好了,接下來是就是消息推送系統(tǒng)(Push Server)的結(jié)構(gòu)和原理了:
基本原理就是這么簡單。
原文轉(zhuǎn)載于https://www.pureweber.com/article/push-server-principle/
總結(jié)
以上是生活随笔為你收集整理的HTTP消息推送原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: py将dicm格式图片转为jpg格式
- 下一篇: Cocoapods里Podfile与Po