RPC环境预设
<dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.6.Final</version>
</dependency>
在沒有RPC 框架以前,我們的服務調用是這樣的,如下圖:
從上圖可以看出接口的調用完全沒有規律可循,想怎么調,就怎么調。這導致業務發展到一定階段之后,對接口的維護變得非常困難。于是有人提出了服務治理的概念。所有服務間不允許直接調用,而是先到注冊中心進行登記,再由注冊中心統一協調和管理所有服務的狀態并對外發布,調用者只需要記住服務名稱,去找注冊中心獲取服務即可。
這樣,極大地規范了服務的管理,可以提高了所有服務端可控性。整個設計思想其實在我們生活中也能找到活生生的案例。例如:我們平時工作交流,大多都是用IM 工具,而不是面對面吼。大家只需要相互記住運營商(也就是注冊中心)提供的號碼(如:騰訊QQ)即可。再比如:我們打電話,所有電話號碼有運營商分配。我們需要和某一個人通話時,只需要撥通對方的號碼,運營商(注冊中心,如中國移動、中國聯通、中國電信)就會幫我們將信號轉接過去。
目前流行的RPC 服務治理框架主要有Dubbo 和Spring Cloud,下面我們以比較經典的Dubbo 為例。Dubbo 核心模塊主要有四個:Registry 注冊中心、Provider 服務端、Consumer 消費端、Monitor 監控中心,如下圖所示:
為了方便,我們將所有模塊全部放到一個項目中,主要模塊包括:
api:主要用來定義對外開放的功能與服務接口。
protocol:主要定義自定義傳輸協議的內容。
registry:主要負責保存所有可用的服務名稱和服務地址。
provider:實現對外提供的所有服務的具體功能。
consumer:客戶端調用。
monitor:完成調用鏈監控。
?
總結
- 上一篇: RPC 概述
- 下一篇: RPC创建API 模块