1.RPC框架的简单实现(参考dubbo框架的基本原理)

来源:互联网 发布:印尼语翻译软件 编辑:程序博客网 时间:2024/06/12 19:31

前段时间读了读dubbo框架的源码,粗略的读了暴露服务和引用服务的具体实现,dubbo是一个成熟的rpc框架,里面的功能点和配置很多,了解整个dubbo的代码实现细节的话还真得需要不少时间。为了更快的理解dubbo,参考dubbo的基本原理,自己写了一个简单的RPC框架,实现了远程方法的调用。


dubbo框架用到的技术点

  1. 1、provider,consumer的配置写在了spring的配置文件中,使用了自己的命名空间dubbo:xx,这里使用的是spring的schema扩展
  2. 2、 服务端和客户端通信直接用的TCP协议,异步非阻塞IO,使用的netty框架
  3. 3、涉及到点到点socket通信,对象在网络上传输就要用到序列化工具
  4. 4、客户端只有接口类,那注入到自己业务类中的dubbo服务bean如何实例化的,这里需要根据接口类生成一个代理类,客户端注入的bean是代理类。这里要用到Java的字节码技术,使用javassist框架

因此,要写一个简单的rpc框架需要用到的工具有:netty通信框架,序列化框架,javassist字节码框架,序列化我用的jboss的marshalling框架,maven依赖如下:

<dependencies>    <dependency>        <groupId>org.javassist</groupId>        <artifactId>javassist</artifactId>        <version>3.20.0-GA</version>    </dependency>    <dependency>        <groupId>io.netty</groupId>        <artifactId>netty-all</artifactId>        <version>4.1.14.Final</version>    </dependency>    <dependency>        <groupId>org.jboss.marshalling</groupId>        <artifactId>jboss-marshalling-serial</artifactId>        <version>1.3.19.GA</version>    </dependency></dependencies>

建好一个新的项目,添加上面3个maven依赖,然后就可以写自己的rpc框架了,既然模仿的dubbo框架,那这个domo rpc就叫 “ldubbo”了。