一、Server端
Server端我们借助Hadoop已经帮我们实现的RPC框架。
1、编写接口服务Mybusiness
/**
* @author 吴明辉
* @date 2020/8/31-${TIEM}
*/
public interface MyBussiness extends VersionedProtocol {
//定义签名信息
public static long versionID = 1;
//定义业务方法
public String sayHello(String s);
}
签名信息:
客户端会传过来一个签名信息,服务端每个类都有一个不同的签名信息。也就是说,签名信息就是表示客户端将要实现的是哪一个类。传过来的签名信息不同,服务器所要传递的代理对象也就不一样。
2、编写实现类Mybusinessimpl
注册签名信息与返回签名信息,注意理解
public class MyBussinessImpl implements MyBussiness {
@Override
public String sayHello(String s) {
System.out.println("我是服务端");
return "我是:"+s;
}
@Override
public long getProtocolVersion(String s, long l) throws IOException {
//返回签名ID
return MyBussiness.versionID;
}
@Override
public ProtocolSignature getProtocolSignature(String s, long l, int i) throws IOException {
//定义签名信息
return new ProtocolSignature(MyBussiness.versionID,null);
}
}
3、编写main方法,启动服务
public class RpcServer {
public static void main(String[] args) throws Exception {
//实例化RPC构建builder
RPC.Builder builder = new RPC.Builder(new Configuration());
//指定端口和IP地址
builder.setBindAddress("localhost");
builder.setPort(1234);
//指定接口服务和示例类
builder.setProtocol(MyBussiness.class);
builder.setInstance(new MyBussinessImpl());
//构建成服务并开启服务
Server server = builder.build();
server.start();
}
}
主要四个过程:
1、实例化RPC构建builder
2、指定端口和IP地址
3、指定接口服务和示例类
4、构建成服务并开启服务
二、Client端
编写客户端RPCClient
注意要提前实现一个与Mybusiness一样的接口,在这里可以进行粘贴
public class RpcClient {
public static void main(String[] args) throws Exception {
// 获得RPC代理对象
MyBussiness proxy = RPC.getProxy(MyBussiness.class,
MyBussiness.versionID,
new InetSocketAddress("localhost",1234),
new Configuration());
String s = proxy.sayHello("toem");
System.out.println(s);
}
}