遠程過程調用底層實現機制:java
1.生成調用端socket程序動態代理對象;node
2.經過proxy調用業務方法;linux
3.調用socket請求方法;windows
4.socket發送調用請求;框架
5.生成業務代理對像;socket
6.調用具體方法;ide
7.獲取調用結果;ui
8.socket返回調用結果;spa
9.返回結果;代理
RPC代碼實現
windows中java中的controller調用linux系統中的service
1.在linux系統中新建service的接口與實現類
public interface LoginServiceInterface{ public String login(String name,String passwod); }
public class LoginServiceImp implements LoginServiceInterface{ @override public String login(String name,String password){ return name + "登錄成功!" } }
2.新建一個框架把類發佈服務
public class starter{ public static void main(String args[]){ Builder builder = new RPC.Builder(new Configuration()); builder.setBindAddress("node002").setPort(10000).setProtocol(LoginServiceInterface.Class).setInstance(new LoginServiceImp()); Service service = builder.build(); service.start(); } }
3.windowsx下新建一個Controller,把LoginServiceInterface拷到此工程中
public class LoginController{ //獲取代理 LoginServiceInterface proxy = RPC.getProxy(LoginServiceInterface.class,1L,newInetSocketAddress("node002",10000),new Configuration()); String res = proxy.login("tom","111"); System.out.println(res); }