搜尋
首頁php框架Swoolephp的swoole和rpc差別

php的swoole和rpc差別

Dec 14, 2019 pm 02:17 PM
swoole

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具