首頁 >php框架 >Swoole >php的swoole和rpc差別

php的swoole和rpc差別

(*-*)浩
(*-*)浩原創
2019-12-14 14:17:012479瀏覽

php的swoole和rpc差別

RPC是遠端過程呼叫(Remote Procedure Call)的縮寫形式。

SAP系統RPC呼叫的原理其實很簡單,有些類似三層架構的C/S系統,第三方的客戶程式透過介面呼叫SAP內部的標準或自訂函數,獲得函數傳回的資料進行處理後顯示或列印。                       (建議學習: swoole視訊教學

#處理之間通訊(IPC)是使用多任務作業系統或連網的電腦之間執行的程式和進程所使用的技術。有兩種類型的進程間通訊(IPC)。

本地過程呼叫(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連線。

Http對長連線支援不夠好,很多Http程式都是設計為短連接的,在請求時創建TCP連接、請求結束時close,這會帶來額外的網路通訊消耗

Swoole框架的RPC客戶端使用16位元組固定包頭包體的通訊方式,支援單一連接並發、支援在php-fpm開啟長連線。

php-fpm長連線

在php-fpm中維持TCP長連線主要藉助swoole擴充提供的SWOOLE_KEEP選項,客戶端設定此選項後,在請求結束時不會關閉連接,新的請求到來後可以重複使用TCP連接。另外底層內建了長連接偵測的能力。

在執行$client->connect()自動偵測連線是否可用,如果重複使用的連線已經失效,底層會重新建立一個新的TCP長連線。

在執行$client->connect()自動清理垃圾數據,避免上一次客戶端逾時殘留的資料導致服務異常

$socket = new \swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP, WOOLE_SOCK_SYNC);
$socket->set(array(
    'open_length_check' => true,
    'package_max_length' => $this->packet_maxlen,
    'package_length_type' => 'N',
    'package_body_offset' => RPCServer::HEADER_SIZE,
    'package_length_offset' => 0,
));

以上是php的swoole和rpc差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn