简单RPC系统设计

RPC是什么?

  • RPC即远程过程调用,即调用远程计算机上的服务,就像调用本地服务一样方便。RPC可以基于HTTP或者TCP协议,Web Service就是基于HTTP协议的RPC。为了支持高并发,java提供的BIO阻塞式io不合适,因此需要异步IO,即NIO,比较流行的NIO框架有Netty以及apache的Mina。

简单的RPC系统设计框架

  • 曾经在的公司使用的rpc系统是自己编写的,并没有使用阿里巴巴开源的dubbo,原理比较简单,使用netty作为服务器和客户端,使用zookeeper作为服务器注册中心,将服务全路径和服务地址注册到zookeeper中的永久节点中,然后客户端从zk永久节点中查询服务端的ip,随机返回ip地址,连接对应的ip,对应地址服务器使用反射调用本地方法,最后将结果返回去,完成了rpc调用过程,编码格式使用了protobuf来实现,提高了传输效率。简单流程图如下: