-
server stub 收到消息后进行解码
-
server stub 根据解码结果调用本地API
-
本地服务 执行并返回结果给 server stub
-
server stub 将返回结果导入进行编码并发送至消费方
-
client stub 接收到数据进行解码
-
服务消费方得到结果
RPC的目标就是将2~8的步骤封装起来,用户无需关注这些细节,可以像调用本地方法一样即可完成远程服务调用
图解
=============================================================================
代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。
Java中代理模式分为静态代理和动态代理模式
中午到了,小明很饿,于是在美团外卖上点了一份烤鸭,过了半个小时,外卖到了,小明下去拿外卖,顺利的吃上了烤鸭~
由程序员手动创建代理类或工具对象,从而实现调用服务
Subject类
package com.wanshi.netty.dubborpc.netty;
public interface Subject {
String buy(String msg);
}
SubjectImpl类
package com.wanshi.netty.dubborpc.netty;
public class SubjectImpl implements Subject{
@Override
public String buy(String msg) {
return “买了” + msg;
}
}
ProxySubject类
package com.wanshi.netty.dubborpc.netty;
public class ProxySubject {
private Subject subject;
{
subject = new SubjectImpl();
}
public void buy(String msg) {
System.out.println(“美团外卖,使命必达,跑腿代买!”);
String buy = subject.buy(msg);
System.out.println(buy);
}
}
测试类
public static void main(String[] args) {
ProxySubject subject = new ProxySubject();
subject.buy(“北京烤鸭”);
}
效果