RPC简易框架开发
為什么80%的碼農都做不了架構師?>>> ??
-
什么是rpc
- RPC,即 Remote Procedure Call(遠程過程調用),采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答通知。在服務端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務端獲得進程參數,進行業務操作,發送答復信息,等待下一個調用信息。最后,客戶端調用進程接受答復信息,獲得答復結果,然后繼續業務操作。
- 通俗一點就是,調用遠程計算機上的服務,就像調用本地服務一樣。
- RPC可基于HTTP或TCP協議實現,Web Service是基于HTTP 協議的RPC,它具有良好的跨平臺性,但其性能卻不如基于TCP 協議的 RPC。會兩方面會直接影響 RPC 的性能,一是傳輸方式,二是序列化。
- TCP是傳輸層協議,HTTP是應用層協議,傳輸層較應用層更為底層,在數據傳輸方面越底層越快。就序列化而言,Java提供了默認的序列化方式,但是在高并發場景下會帶來瓶頸, 現在也出現了好多優秀的序列化框架,從而提供更高效的性能,如protobuf、hessian、jackson等。
-
RPC的簡易結構
-
框架中使用的技術
Spring:它是最強大的依賴注入框架,也是業界的權威標準。
Netty:它使 NIO 編程更加容易,屏蔽了 Java 底層的 NIO 細節。
Protostuff:它基于 Protobuf 序列化框架,序列化更高效。
ZooKeeper:提供服務注冊與發現功能,開發分布式系統的必備選擇,同時它也具備天生的集群能力。 -
工程目錄結構
-
目錄結構結構說明
rpc-client:創建netty客戶端,通過動態代理調用對象,服務發現。
rpc-common:序列化、編碼、解碼
rpc-registry:服務注冊、服務發現
rpc-sample-app:模擬遠程調用的應用端
rpc-sample-interfaces:服務接口
rpc-sample-service:服務實現,具體業務邏輯編寫
rpc-server:netty服務端,將業務實現發布為遠程服務 -
源碼
gitee地址:https://gitee.com/riseee/rpc-sample
轉載于:https://my.oschina.net/riseee/blog/1586122
總結
- 上一篇: 自动化测试(转)
- 下一篇: 线程安全的ConcurrentQueue