天天看點

PHP - RPC架構 - 學習/實踐

1. 應用場景

了解學習實踐php的遠端調用機制,編寫高性能大規模應用.

2. 學習/操作

1. 介紹

什麼是RPC架構 ?

如果用一句話概括RPC就是:遠端方法調用(Remote Procedure Call)

那什麼是 遠端調用 ?

通常我們調用一個php中的方法,比如這樣一個函數方法: localAdd(10, 20),localAdd方法的具體實作要麼是使用者自己定義的,要麼是php庫函數中自帶的,也就說在localAdd方法的代碼實作在本地,它是一個本地調用!

遠端調用 意思就是:被調用方法的具體實作 不在 程式運作本地,而是在别的某個遠端地方。

2. 推薦閱讀

https://yq.aliyun.com/articles/727049?spm=a2c4e.11155472.0.0.47c24d39MMOjdF  //php rpc架構有哪些

文章内容:

什麼是RPC架構 ?

如果用一句話概括RPC就是:遠端調用架構(Remote Procedure Call)

那什麼是 遠端調用 ?

通常我們調用一個php中的方法,比如這樣一個函數方法: localAdd(10, 20),localAdd方法的具體實作要麼是使用者自己定義的,要麼是php庫函數中自帶的,也就說在localAdd方法的代碼實作在本地,它是一個本地調用!

遠端調用 意思就是:被調用方法的具體實作 不在 程式運作本地,而是在别的某個遠端地方。

遠端調用原理

比如 A (client) 調用 B (server) 提供的 remoteAdd 方法:

首先A與B之間建立一個TCP連接配接;

然後A把需要調用的方法名(這裡是remoteAdd)以及方法參數(10, 20)序列化成位元組流發送出去;

B接受A發送過來的位元組流,然後反序列化得到目标方法名,方法參數,接着執行相應的方法調用(可能是localAdd)并把結果30傳回;

A接受遠端調用結果,輸出30。

RPC架構就是把我剛才說的這幾點些細節給封裝起來,給使用者暴露簡單友好的API使用。

遠端調用的好處

解耦:當server需要對方法内實作修改時,client完全感覺不到,不用做任何變更;這種方式在跨部門,跨公司合作的時候經常用到,并且方法的提供者我們通常稱為:服務的暴露。

RPC與Socket有什麼差別?

通過上面的簡單闡述,好像RPC與Socket 好像啊。都是調用遠端的方法,都是client/server模式,

我之前也寫了一篇文章: 細說socket 那他們有啥差別呢?

RPC(遠端過程調用)采用客戶機/伺服器模式實作兩個程序之間互相通信。socket是RPC經常采用的通信手段之一,RPC是在Socket的基礎上實作的,它比socket需要更多的網絡和系統資源。除了Socket,RPC還有其他的通信方法,比如:http、作業系統自帶的管道等技術來實作對于遠端程式的調用。微軟的Windows系統中,RPC就是采用命名管道進行通信。

RPC與REST有什麼差別?

通過了解RPC後,我們知道是RPC是client/server模式的,調用遠端的方法,REST也是我們熟悉的一套API調用協定方法,它也是基于client/server模式的,調用遠端的方法的,那他倆又有啥差別呢?

REST API 和 RPC 都是在 Server端 把一個個函數封裝成接口暴露出去,以供 Client端 調用,不過 REST API 是基于 HTTP協定 的,REST緻力于通過http協定中的POST/GET/PUT/DELETE等方法和一個可讀性強的URL來提供一個http請求。而 RPC 則可以不基于 HTTP協定。是以,如果是後端兩種語言互相調用,用 RPC 可以獲得更好的性能(省去了 HTTP 報頭等一系列東西),應該也更容易配置。如果是前端通過 AJAX 調用後端,那麼用 REST API 的形式比較好(因為無論如何也避不開 HTTP 這道坎)。

php中流行的rpc架構有哪些?

既然php是世界上最好的語言,那php中流行的RPC架構有哪些呢?

先列舉下: phprpc , yar , thrift , gRPC , swoole , hprose

因為時間和精力有限,不可能一個一個的去學習和使用,我選幾個世面上用的最多的幾個用下吧。

因為RPC原理是一樣的,都是Client/Server模式,隻是每個架構的使用方式不一樣而已。

3. 實踐

TBD

後續補充

...

3. 問題/補充

TBD

4. 參考

https://yq.aliyun.com/articles/727049?spm=a2c4e.11155472.0.0.47c24d39MMOjdF  // php rpc架構有哪些

後續補充

...