Hadoop 中RPC使用
2019獨角獸企業重金招聘Python工程師標準>>>
導入包:
理解:rpc是一種“遠程過程調用協議”
RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行。
?
具體使用:方面可以理解為,例如一個公司的后臺數據支持此公司多個平臺的使用,如果每個平臺都寫一套調用邏輯,如果后臺邏輯做調整則每個平臺都需要涉及;如果把各個平臺訪問后端的操作提前出來,放在服務端,來提供服務,則各個平臺都可以使用;并且對平臺開發也隱藏了后端。
開發注意:
rpc服務端和rpc客戶端的通信協議接口。服務端和客戶端都必須有,且路徑一致
實例如下:
一:建兩個項目:
客戶端項目:democlient
服務器端項目:demonamenode
在服務器端和客戶端開發都需要建相同的接口:網絡通信雙方都要遵循的協議
1>開發路徑一致;--hadoop.rpctest
2>名稱一致。 ? ? ? --DemoNamenodeProtocol.java
服務器端需要一個協議的實現類:例如DemoNamenodeImpl.java;
服務器端還需要把協議的實現發布到RPC服務上
這里測試實現:ServerPublisher.java
二:服務端項目實現后,需要 打包 ?Runnable JAR,并上傳到服務器上,
發布: ?java -jar ? ***.jar
?
三:服務器端發布后,則客戶端可以調用此服務。
?
代碼實現附上:
---------------------------------------------------------------------start
自定義協議接口:DemoNamenodeProtocol
--------------------------------------------------------------end
---------------------------------------------------------------------start
服務器端 實現類:DemoNamenodeImpl
--------------------------------------------------------------end
---------------------------------------------------------------------start
服務發布類:ServerPublisher
--------------------------------------------------------------end
客戶端訪問測試:DemoClient
package clienttest; import java.io.IOException; import java.net.InetSocketAddress; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC; import hadoop.rpctest.DemoNamenodeProtocol; public class DemoClient { public static void main(String[] args) throws IOException {//客戶端訪問rpc服務器代碼實現InetSocketAddress addr = new InetSocketAddress("hadoop02",10000);DemoNamenodeProtocol demoNamenodeImpl = RPC.getProxy(DemoNamenodeProtocol.class, 1L, addr, new Configuration());String MetaData = demoNamenodeImpl.getMetaData("獲取RPC服務:hello world");System.out.println(MetaData); } }?
轉載于:https://my.oschina.net/u/3420885/blog/1634814
總結
以上是生活随笔為你收集整理的Hadoop 中RPC使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input限制输入小数点后两位(vue版
- 下一篇: Sql 最简单的Sqlserver连接