分布式架构的基石,简单的 RPC 框架实现(JAVA)

  RPC架构

  RPC 的全称是 Remote Procedure Call,它是一种进程间通信方式。允许像调用本地服务一样调用远程服务。

 

  1.RPC 框架原理

  RPC 框架的目标就是让远程过程(服务)调用更加简单、透明,RPC框架负责屏蔽底层的传输方式TCP 或者 UDP)、序列化方式XML、JSON、二进制)和通信细节。

  框架使用者只需要了解谁在什么位置,提供了什么样的远程服务接口即可,开发者不需要关心底层通信细节和调用过程。

 

  2.最简单的 RPC 框架实现

·  下面通过 JAVA 原生的序列化TCP Socket通信、动态代理反射机制,实现最简单的 RPC 框架。它由三部分组成:

  • 服务提供者:它运行在服务端,负责提供服务接口定义和服务实现类。(EchoService 和 EchoServiceImpl
  • 服务发布者,它运行在 RPC 服务端,负责将本地服务发布成远程服务,供其他消费者调用。(RPCExporter
  • 本地服务代理,它运行在 RPC 客户端,通过代理调用远程服务提供者,然后将结果进行封装返回给本地消费者。(RPCImporter

 

  下面看具体代码,首先是服务端接口定义和服务实现类。

  代码清单 :EchoService 

复制代码
package com.rpc.test;  /**  * @Description - 调用接口  * @Author zww  * @Date 2018/12/10 17:29  */public interface EchoService {     String echo(String ping); }
复制代码

  代码清单:EchoServiceImpl

复制代码
package com.rpc.test;  /**  * @Description - 调用接口实现  * @Author zww  * @Date 2018/12/10 17:30  */public class EchoServiceImpl implements EchoService {     @Override     public String echo(String ping) {         return ping != null ? ping + "挺不错的。" : "挺不错的。";     } }
复制代码

  

  RPC 服务端发布者代码实现如下:

  代码清单:RPCExporter

复制代码
package com.rpc.test;  import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Method; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.Executor; import java.util.concurrent.Executors;  /**  * @Description - 服务端发布者(提供服务)  * @Author zww  * @Date 2018/12/10 17:33  */public class RPCExporter {     //线程池    static Executor executor = Executors.newFixedThreadPool(Runtime.getRuntime().avail
                    
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信