实现一个简易的PRC框架

了解了RPC的基本原理,学了netty之后心血来潮,相实现一个简易的RPC框架,想着挺简单的,但做的时候花费了一些功夫,感觉在做这个简易的框架最让我明白的道理就是,在做一个东西之前,首先应该明白这个框架的基本流程,只有搞明白这个之后在写才有方向,否则想也不想直接写的话会搞的自己一头雾水,总的来讲在做的时候收货颇多,理解的内部类,CountDownLatch等的

的妙用,spring解耦的强大能力等等。首先我写的这个项目是基于spring+zookeeper+Netty构建的,其中zookeeper用来当做注册中心使用,netty用作客户端到服务端的通信,spring则负责解耦工作。

整个流程是,服务端将服务预先注册到zookeeper上,客户端从服务端拉取到可用服务,通过netty相服务端发送调用强求,而服务端交由spring管理,在启用过程中,利用bean处理器,将每个模块的方法执行器预先加载,服务启动后根据客户端发送过来的消息调用相应的方法执行器并将所得结果返回,最后客户端收到服务端传来的消息完成调用:

首先先看一下注册中心结构图,在zookeeper上按此种方式分布

置于整个项目的话由于代码太多就不放这里了感兴趣的可以去我的github上下载https://github.com/skybluehhx/RPC.git 下面对我的包结构做一个简要的介绍

其中balance包中主要放的是负载均衡策略,client放的主要的客户端代码,encode是为了解决分包和粘包问题的编码器,Register用于向zookeeper上注册服务,RPCInfo用于封装请求和响应信息,seriable用于序列化对象便于传输,server是服务端的代码,Utils是一些工具类 。下载地址https://github.com/skybluehhx/RPC.git

猜你喜欢

转载自blog.csdn.net/qq_32459653/article/details/81414911