一个mini的RPC框架
说明
这是一个实验性的RPC框架,麻雀虽小但是五脏俱全,基本上RPC的有的功能基础功能都实现了,比如注册发现,反向代理调用等。
在使用上也非常简单只需几行的代码:
我们先定义一个接口是实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public interface CalcService {
String getIp();
String hi(String name); }
|
然后实现它
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class CalcServiceImpl implements CalcService {
@Override public String getIp() { String ip = null; try { InetAddress ip4 = Inet4Address.getLocalHost(); ip = ip4.getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace(); }
return ip; }
@Override public String hi(String name) { return "Hi " + name; } }
|
现在就可以写我们的生产者和消费者了
生产者
1 2 3 4 5 6 7 8 9 10
| public class Server { public static void main(String[] args) { RpcServerConfig config = new RpcServerConfig(); config.setPort(8080);
RpcServer server = new RpcServer(config); server.register(CalcService.class, new CalcServiceImpl()); server.start(); } }
|
消费者
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Client { public static void main(String[] args) { List<Peer> servers = Collections.singletonList(new Peer("127.0.0.1", 8080)); RpcClientConfig config = new RpcClientConfig(); config.setServers(servers);
RpcClient client = new RpcClient(config); CalcService service = client.getProxy(CalcService.class);
String ip = service.getIp(); String hi = service.hi("美女"); System.out.println(hi + " 我顺着 " + ip + " 去找你!"); } }
|
启动生产者
运行消费者
具体实现可以参考源码。
GitHub:https://github.com/HWYWL/mini-rpc
问题建议