RPC是遠程過程調用(Remote Procedure Call)的縮寫形式。php
SAP系統RPC調用的原理其實很簡單,有一些相似於三層構架的C/S系統,第三方的客戶程序經過接口調用SAP內部的標準或自定義函數,得到函數返回的數據進行處理後顯示或打印。node
推薦學習(swoole教程)服務器
進程間通訊(IPC)是在多任務操做系統或聯網的計算機之間運行的程序和進程所用的通訊技術。有兩種類型的進程間通訊(IPC)。swoole
本地過程調用(LPC)LPC用在多任務操做系統中,使得同時運行的任務能互相會話。這些任務共享內存空間使任務同步和互相發送信息。網絡
遠程過程調用(RPC)RPC相似於LPC,只是在網上工做。RPC開始是出如今Sun微系統公司和HP公司的運行UNⅨ操做系統的計算機中。架構
Swoole框架提供的RPC服務器支持了單鏈接併發、PHP-FPM下長鏈接維持等特性。在車輪互聯大規模應用,構建了4層架構的服務化架構。併發
不少企業使用Http Rest實現RPC通訊,實現簡單能夠利用到不少現成的工具和方案。可是Http通訊協議存在2個嚴重的缺陷。框架
Http不支持單鏈接併發,若是要同時併發不少請求,必須建立大量TCP鏈接。若是php-fpm開啓500個進程,每次須要128個併發,那麼就須要建立64000個TCP鏈接。ide
Http對長鏈接支持不夠好,不少Http程序都是設計爲短鏈接的,在請求時建立TCP鏈接、請求結束時close,這會帶來額外的網絡通訊消耗函數
Swoole框架的RPC客戶端使用16字節固定包頭+包體的通訊方式,支持單鏈接併發、支持在php-fpm開啓長鏈接。
php-fpm長鏈接
在php-fpm中維持TCP長鏈接主要藉助swoole擴展提供的SWOOLE_KEEP選項,客戶端設置此選項後,在請求結束時不會關閉鏈接,新的請求到來後能夠複用TCP鏈接。另外底層內置了長鏈接檢測的能力。
在執行$client->connect()自動檢測鏈接是否可用,若是複用的鏈接已經失效,底層會從新建立一個新的TCP長鏈接。
在執行$client->connect()自動清理垃圾數據,避免上一次客戶端超時殘留的數據致使服務異常
有須要學習交流的友人請加入交流羣的我們一塊兒,有問題一塊兒交流,一塊兒進步!前提是你是學技術的。感謝閱讀!