-
TCP close 高延遲,數(shù)據(jù)一致性
查看全部 -
# Web 實(shí)時通信方案 All In One
HTTP 輪詢, 單向通信,開銷大
HTTP 長輪詢, 單向通信,開銷較小
WebSocket,雙向通信,開銷最小
Server Push,單向通信,開銷較小
WebRTC 實(shí)時音頻,視頻,H5 直播
?
查看全部 -
查看全部
-
bio通信的特點(diǎn)
查看全部 -
使用的場景
查看全部 -
netty介紹
查看全部 -
BIO? 同步阻塞IO
偽異步IO通信(線程池處理)
NIO? 同步非堵塞IO
AIO? 異步非堵塞IO
查看全部 -
?一般來說I/O模型可以分為:同步阻塞,同步非阻塞,異步阻塞,異步非阻塞IO
同步阻塞IO:在此種方式下,用戶進(jìn)程在發(fā)起一個IO操作以后,必須等待IO操作的完成,只有當(dāng)真正完成了IO操作以后,用戶進(jìn)程才能運(yùn)行。JAVA傳統(tǒng)的IO模型屬于此種方式!
同步非阻塞IO:在此種方式下,用戶進(jìn)程發(fā)起一個IO操作以后邊可返回做其它事情,但是用戶進(jìn)程需要時不時的詢問IO操作是否就緒,這就要求用戶進(jìn)程不停的去詢問,從而引入不必要的CPU資源浪費(fèi)。其中目前JAVA的NIO就屬于同步非阻塞IO。
異步阻塞IO:此種方式下是指應(yīng)用發(fā)起一個IO操作以后,不等待內(nèi)核IO操作的完成,等內(nèi)核完成IO操作以后會通知應(yīng)用程序,這其實(shí)就是同步和異步最關(guān)鍵的區(qū)別,同步必須等待或者主動的去詢問IO是否完成,那么為什么說是阻塞的呢?因?yàn)榇藭r是通過select系統(tǒng)調(diào)用來完成的,而select函數(shù)本身的實(shí)現(xiàn)方式是阻塞的,而采用select函數(shù)有個好處就是它可以同時監(jiān)聽多個文件句柄,從而提高系統(tǒng)的并發(fā)性!
?異步非阻塞IO:在此種模式下,用戶進(jìn)程只需要發(fā)起一個IO操作然后立即返回,等IO操作真正的完成以后,應(yīng)用程序會得到IO操作完成的通知,此時用戶進(jìn)程只需要對數(shù)據(jù)進(jìn)行處理就好了,不需要進(jìn)行實(shí)際的IO讀寫操作,因?yàn)檎嬲腎O讀取或者寫入操作已經(jīng)由內(nèi)核完成了。目前Java中還沒有支持此種IO模型。??
BIO是一個連接一個線程。
NIO是一個請求一個線程。
AIO是一個有效請求一個線程。
查看全部 -
1111111
查看全部 -
1:BIO 服務(wù)端一個線程會負(fù)責(zé)一個連接,進(jìn)行請求的處理和響應(yīng),比較明顯,當(dāng)客戶端比較多的時候,服務(wù)端的線程可能就不夠了,這時候?qū)?yīng)的請求就沒法及時處理了?
客戶端個數(shù):服務(wù)端處理線程個數(shù)=1:1
IO類型:阻塞同步
API使用難度:簡單
調(diào)試難度:簡單
查看全部 -
WebSocket建立連接
客戶端發(fā)起握手請求
服務(wù)端響應(yīng)請求
連接建立
查看全部 -
NIO ? 所有的數(shù)據(jù)都是通過緩沖區(qū)處理的,通道Channel ?。Selector 輪詢Channel?
查看全部 -
WebSocket:H5協(xié)議規(guī)范、握手機(jī)制、解決客戶端與服務(wù)端實(shí)時通信而產(chǎn)生的技術(shù)
本質(zhì)上是基于TCP的協(xié)議
服務(wù)端與客戶端通過此TCP連接進(jìn)行實(shí)時通信,當(dāng)WebSocket客戶端與服務(wù)器端進(jìn)行通訊以后,此時就不再需要之前進(jìn)行握手請求的HTTP協(xié)議的參與了
查看全部 -
BIO通信:一個線程負(fù)責(zé)連接,一請求一應(yīng)答,缺乏彈性伸縮能力
客戶端的個數(shù)和服務(wù)端創(chuàng)建的線程數(shù)呈1:1的正比關(guān)系
偽異步IO通信:線程池負(fù)責(zé)連接,M請求N應(yīng)答,線程池阻塞
NIO通信:緩沖區(qū)Buffer,通道Channel,多路復(fù)用器Selector
通道Channel是雙向的,可用于讀、寫或同時進(jìn)行;流Stream只能在一個方向移動
AIO通信:連接注冊讀寫事件和回調(diào)函數(shù),讀寫方法異步,主動通知程序
提供兩種方式獲取操作結(jié)果:java.util.concurrent.Futrue類來表示異步操作都結(jié)果;執(zhí)行異步操作時傳入java.nio.channels.CompletionHandler接口都實(shí)現(xiàn)類作為操作完成回調(diào)
查看全部
舉報(bào)