首先说下关于RPC的几个常见问题git
PRC:Remote Procedure Call 远程过程调用 在分布式系统中,每一个节点之间的通讯都是靠RPC来完成 RPC是分布式应用的基本组件github
Apache的Thrift Google的gprc 阿里巴巴的dubbo等 dubbo应该是3这中最简单易用的了,但dubbo只支持Java语言,thrift和gprc都是支持跨语言的,而且dubbo内部帮你实现了对分布式注册中心zookeeper的使用,另外两个仍需本身实现对注册中心的操做。 thrift grpc等之因此支持跨语言,是由于他们本身定义了一套结构化数据存储格式,如Google的protobuf,用于编解码对象,做为各个语言通讯的中间协议。web
RPC是一个概念,普通web开发的curl rest接口,也能够算做一种基于HTTP协议的RPC调用 RPC的使用比起curl一个重要的点就是忽略底层细节,像使用本地服务同样调用远程服务 咱们将在RPC框架中使用动态代理来实现这个要求spring
本系列博客由浅到深,带你们打造一个支持跨语言,也支持zookeeper的RPC框架 目前先用Java实现json
下一篇博客中 将带你们用11个Java类 实现一个基于spring的Java RPC框架 暂时不使用一些常见设计模式,暂时不作zookeeper的支持和异常处理等细节问题设计模式
后续版本再对这个demo进行优化,并支持zookeeper 项目最终的代码放在了个人github上 MeiZhuoRPC 欢迎star,提issues网络