亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于TCP的RPC

2019-11-08 03:22:57
字體:
來源:轉載
供稿:網友

《大型分布式網站架構設計與實踐》

RPC名詞解釋

RPC即遠程過程調用,單臺服務器的處理能力受到硬件成本的限制,不可能無限制的提升。RPC就將原來的本地調用轉變為調用遠端服務器的方法,給系統的處理能力和吞吐量帶來了近似于無限提升的可能。

RPC的實現包括客戶端和服務端,即服務調用方、服務提供方。

隨著業務的增加,不同的服務之間需要進行分組以隔離不同的業務,避免相互影響,這樣,服務器的路由和負載均衡則成為必須要考慮的問題。


對象序列化

數據在網絡上進行傳輸就要轉化為二進制流。(這里使用java api)

import java.io.Serializable;/** * Created by yangenneng on 2017-02-17. * 功能說明: */public class Person implements Serializable { PRivate String name; private String passWord; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Person(){ this.name="zhangsan"; this.password="123456"; }}import java.io.*;/** * Created by yangenneng on 2017-02-17. * 功能說明: */public class ByteDemo { public static void main(String[] args) throws IOException, ClassNotFoundException { Person zhansan=new Person(); //字節數組輸出流 ByteArrayOutputStream os=new ByteArrayOutputStream(); ObjectOutputStream out=new ObjectOutputStream(os);//對象輸出流 out.writeObject(zhansan);//將對象寫入字節數組輸出,進行序列化 byte[] zhansanByte=os.toByteArray(); System.out.println("-------------------"+zhansanByte+"----------------------------"); //字節數組輸入流 ByteArrayInputStream is=new ByteArrayInputStream(zhansanByte); //執行反序列化,從流中讀取對象 ObjectInputStream in=new ObjectInputStream(is); Person lisi= (Person) in.readObject(); System.out.println("-------------------"+lisi.getName()+" "+lisi.getPassword()+"----------------------------"); }}

這里寫圖片描述


基于TCP協議實現RPC

客戶端想去的接口的名稱、需要調用的方法和需要傳遞的參數,并通過Socket將其發送到服務提供方,等待服務相應結果。 服務提供端事先將實例化好后放在serviers這個Map中,通過while循環,并不斷的接受收到的消息,得到所需要的方法,執行后將結果返回給服務的消費者。

package rpc;/** * Created by yangenneng on 2017-02-17. * 功能說明:問好的接口 */public interface SayHelloService { public String sayHello(String str);}package rpc;/** * Created by yangenneng on 2017-02-17. * 功能說明: */public class SayHelloServiceImpl implements SayHelloService { @Override public String sayHello(String str) { return str.equals("hello") ? "Hello" : "Bye"; }}package rpc;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.lang.reflect.Method;import java.net.Socket;/** * Created by yangenneng on 2017-02-17. * 功能說明:服務請求者 */public class Consumer { public static void main(String[] args) throws NoSuchMethodException, IOException, ClassNotFoundException { //接口名稱 String interfacename=SayHelloService.class.getName(); //需要遠程執行的方法 Method method=SayHelloService.class.getMethod("sayHello",java.lang.String.class); //需要傳遞到服務端的參數 Object[] arguments={"hello"}; Socket socket=new Socket("127.0.0.1",10001); //將方法名稱和參數傳遞到遠端 ObjectOutputStream output=new ObjectOutputStream(socket.getOutputStream()); output.writeUTF(interfacename);//接口名稱 output.writeUTF(method.getName());//方法名稱 output.writeObject(method.getParameterTypes()); output.writeObject(arguments); //從遠端讀取方法執行結果 ObjectInputStream input=new ObjectInputStream(socket.getInputStream()); Object result=input.readObject(); }}package rpc;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.net.ServerSocket;import java.net.Socket;import java.util.HashMap;import java.util.Map;/** * Created by yangenneng on 2017-02-17. * 功能說明:服務提供者 */public class Provider { public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalaccessException { ServerSocket server=new ServerSocket(10001); Map services=new HashMap(); services.put(SayHelloService.class.getName(),new SayHelloServiceImpl()); while (true){ Socket socket=server.accept(); //讀取服務信息 ObjectInputStream input=new ObjectInputStream(socket.getInputStream()); String interfacename=input.readUTF();//接口名稱 String methodName=input.readUTF();//方法名稱 Class<?>[] parameterTypes=(Class<?>[])input.readObject();//參數類型 Object[] arguments= (Object[]) input.readObject();//參數對象 //執行調用 Class serviceinterfaceclass=Class.forName(interfacename);//得到接口的class Object service=services.get(interfacename);//取得服務實現的對象 Method method=serviceinterfaceclass.getMethod(methodName,parameterTypes); Object result=method.invoke(service,arguments); ObjectOutputStream output=new ObjectOutputStream(socket.getOutputStream()); output.writeObject(result); } }}

在生產環境中,常常是多個客戶端同時發送多個請求到服務端,服務端 則需要同時接收和處理多個客戶端請求,涉及并發處理、服務路由、負載均衡等問題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产999精品久久久影片官网| 国产91久久婷婷一区二区| 久久久久久久久久久91| 亚洲欧美日韩国产成人| 日韩欧美在线中文字幕| 一道本无吗dⅴd在线播放一区| 精品色蜜蜜精品视频在线观看| 日韩中文在线视频| 上原亚衣av一区二区三区| 欧美日韩国产综合视频在线观看中文| 国产一区二区三区在线视频| 中文字幕欧美在线| 成人精品久久一区二区三区| 欧美成人精品在线观看| 69视频在线播放| 国产精品久久久久av| 茄子视频成人在线| 欧美成aaa人片在线观看蜜臀| 国产综合色香蕉精品| 日韩av免费在线看| 亚洲午夜色婷婷在线| 亚洲国产精品热久久| 色综合亚洲精品激情狠狠| 国产成人精品a视频一区www| 国产91|九色| 亚洲男人天堂古典| 成人激情在线播放| 最新国产精品拍自在线播放| 一区二区在线视频播放| 国产在线不卡精品| 最近2019中文免费高清视频观看www99| 精品福利一区二区| 91亚洲永久免费精品| 国产99久久精品一区二区| 亚洲视频视频在线| 国产精品免费在线免费| www.xxxx精品| 久久91精品国产91久久跳| 亚洲少妇激情视频| 中文字幕日韩专区| 日韩亚洲欧美中文在线| 久久人人爽人人爽人人片av高请| 国内精品400部情侣激情| 在线精品国产成人综合| 日韩在线视频线视频免费网站| 国产伦精品一区二区三区精品视频| 欧美成人精品在线观看| 法国裸体一区二区| 国产精品亚洲自拍| 亚洲精品一区在线观看香蕉| 久久久久北条麻妃免费看| 色综合亚洲精品激情狠狠| 欧美成人精品一区二区三区| 国产精品一区二区久久久久| 麻豆精品精华液| 亚洲情综合五月天| www欧美日韩| 久久精品一区中文字幕| 日产精品99久久久久久| 国产精品日韩一区| 亚洲一区二区三区成人在线视频精品| 欧美另类老肥妇| 国产日产久久高清欧美一区| 日韩精品日韩在线观看| 欧美尤物巨大精品爽| 92福利视频午夜1000合集在线观看| zzijzzij亚洲日本成熟少妇| 欧美性开放视频| 亚洲自拍高清视频网站| 国产精品视频不卡| 欧美电影免费观看电视剧大全| 国产精品日韩av| 在线观看亚洲区| 91热精品视频| 亚洲激情在线观看视频免费| 国产亚洲成精品久久| 欧美成人全部免费| 欧美激情第1页| 亚洲欧美国产va在线影院| 亚洲精品免费在线视频| 亚洲国产精品久久久久秋霞不卡| 黑人与娇小精品av专区| 亚洲网站在线看| 亚洲曰本av电影| 亚州欧美日韩中文视频| 欧美精品www在线观看| 国产精品久久91| 欧美在线观看网站| 97精品伊人久久久大香线蕉| 91久久久久久久久| 久久久久99精品久久久久| 国产成人中文字幕| 国产成人+综合亚洲+天堂| 精品动漫一区二区| 在线播放日韩av| 欧美日韩亚洲一区二| 亚洲欧美三级在线| 日韩欧美国产激情| 日韩中文字幕在线视频播放| 久久久久北条麻妃免费看| 性欧美办公室18xxxxhd| 精品高清一区二区三区| 日本欧美中文字幕| 中文一区二区视频| 国产91精品久久久久久| 久久亚洲国产精品| 精品久久久久久久久久久| 第一福利永久视频精品| 亚洲精品自拍第一页| 国产91网红主播在线观看| 国产在线精品一区免费香蕉| 国产91精品青草社区| 国产精品视频资源| 国产精品普通话| 丝袜亚洲另类欧美重口| 久久av.com| 欧美午夜视频一区二区| 国语自产在线不卡| 国产一区二中文字幕在线看| 91chinesevideo永久地址| 欧美日韩国产丝袜另类| 国产亚洲精品激情久久| 91精品久久久久久久| 欧美极品美女视频网站在线观看免费| 亚洲影院色无极综合| 亚洲一区二区三区乱码aⅴ蜜桃女| 日韩美女av在线免费观看| 欧美日韩免费区域视频在线观看| 亚洲成人网久久久| 欧美在线观看日本一区| 91在线视频导航| 国产欧美精品日韩精品| 亚洲色无码播放| 国产一区二区日韩| 国产精品成人免费电影| 国产精品久久久久久久久久久新郎| 久久香蕉精品香蕉| 精品国产自在精品国产浪潮| 久久国产一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 九九热这里只有在线精品视| 国产精品视频免费在线观看| 国产一区二区香蕉| 5566成人精品视频免费| 欧美wwwxxxx| 欧美极品少妇与黑人| 色偷偷9999www| 国产精品久久久久久久久久尿| 亚洲午夜精品久久久久久性色| 91久久精品国产91久久性色| 国产婷婷97碰碰久久人人蜜臀| 色综合视频网站| 亚洲高清久久网| 色噜噜狠狠狠综合曰曰曰88av| 欧美性猛交xxxxx水多| 亚洲精品天天看| 久久亚洲精品中文字幕冲田杏梨| 国产精品7m视频| 成人免费网站在线| 亚洲精品狠狠操| 成人亚洲欧美一区二区三区| 国产精品久久在线观看| 欧美日韩亚洲网| 中文字幕精品久久久久|