原文 :GitHub原文: github.com/wangzhiwubi…
更多文章關注:多執行緒/集合/分散式/Netty/NIO/RPC
- Java高階特性增強-集合
- Java高階特性增強-多執行緒
- Java高階特性增強-Synchronized
- Java高階特性增強-volatile
- Java高階特性增強-併發集合框架
- Java高階特性增強-分散式
- Java高階特性增強-Zookeeper
- Java高階特性增強-JVM
- Java高階特性增強-NIO
- RPC
- zookeeper
- JVM
- NIO
- 其他更多
RPC
1. RPC是什麼
RPC(Remote Procedure Call Protocol)——遠端過程呼叫協議,它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網路分散式多程式在內的應用程式更加容易。
RPC採用客戶機/伺服器模式。請求程式就是一個客戶機,而服務提供程式就是一個伺服器。首先,客戶機呼叫程式傳送一個有程式引數的呼叫資訊到服務程式,然後等待應答資訊。在伺服器端,程式保持睡眠狀態直到呼叫資訊到達為止。當一個呼叫資訊到達,伺服器獲得程式引數,計算結果,傳送答覆資訊,然後等待下一個呼叫資訊,最後,客戶端呼叫程式接收答覆資訊,獲得程式結果,然後呼叫執行繼續進行。
2. 為什麼要用RPC?
其實這是應用開發到一定的階段的強烈需求驅動的。
-
如果我們開發簡單的單一應用,邏輯簡單、使用者不多、流量不大,那我們用不著;
-
當我們的系統訪問量增大、業務增多時,我們會發現一臺單機執行此係統已經無法承受。此時,我們可以將業務拆分成幾個互不關聯的應用,分別部署在各自機器上,以劃清邏輯並減小壓力。此時,我們也可以不需要RPC,因為應用之間是互不關聯的。
-
當我們的業務越來越多、應用也越來越多時,自然的,我們會發現有些功能已經不能簡單劃分開來或者劃分不出來。此時,可以將公共業務邏輯抽離出來,將之組成獨立的服務Service應用 。而原有的、新增的應用都可以與那些獨立的Service應用 互動,以此來完成完整的業務功能。所以此時,我們急需一種高效的應用程式之間的通訊手段來完成這種需求,所以你看,RPC大顯身手的時候來了!
其實3描述的場景也是服務化 、微服務 和分散式系統架構 的基礎場景。即RPC框架就是實現以上結構的有力方式。
請戳GitHub原文: https://github.com/wangzhiwubigdata/God-Of-BigData
關注公眾號,內推,面試,資源下載,關注更多大資料技術~
大資料成神之路~預計更新500+篇文章,已經更新60+篇~
複製程式碼