RPC、基於netty的長連接和websocket


1 RPC

RPC也采用C/S的編程模式,以模塊調用的簡單性忽略通訊的具體細節,以便程序員不用關心C/S之間的通訊協議,集中精力對付實現過程.這就決定了 RPC生成的通訊包不可能對每種應用都有最恰當的處理辦法,與Socket方法相比,傳輸相同的有效數據,RPC占用更多的網絡帶寬.

RPC實在socket的基礎上實現的,但是它比socket需要更多的網絡和資源系統。

2 基於netty的長連接

異步、高性能

Boss線程(一個服務器端口對於一個)---接收到客戶端連接---生成Channel---交給Work線程池(多個Work線程)來處理。

具體的Work線程---讀完已接收的數據到ChannelBuffer---觸發ChannelPipeline中的ChannelHandler鏈來處理業務邏輯。

執行ChannelHandler鏈的整個過程是同步的,如果業務邏輯的耗時較長,會將導致Work線程長時間被占用得不到釋放,從而影響了整個服務器的並發處理能力。

3 websocket

WebSocket連接服務器和客戶端,這個鏈接是一個實時的長連接,服務器端一旦與客戶端建立了雙向鏈接,就可以將數據推送到Socket中,客戶端只要有一個Socket綁定的地址和端口與服務器建立聯系,就可以接收推送來的數據。

WebSocket 還是一個雙通道的連接,在同一個 TCP 連接上既可以發也可以收信息.

讓服務器和客戶端能夠發送 Ping/Pong Frame。這種 Frame 是一種特殊的數據包,它只包含一些元數據而不需要真正的 Data Payload,可以在不影響 Application 的情況下維持住中間網絡的連接狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM