1. 1.1.1RPC名词解释
    1. 全称Remote Process Call,即远程过程调用
    2. rpc的实现包括服务的调用方和服务的提供方
    3. 过程
      1. 服务调用方发送RPC请求到服务提供方,服务提供方根据调用方提供的参数执行请求方法,将执行的结果返回给调用方,一次RPC调用完成
    4. 使用原因
      1. 单台服务器处理能力有限,RPC可提升系统处理能力和吞吐量,也是实现分布式计算的基础
  2. 1.1.2对象序列化
    1. 序列化原因
      1. 任何形式的数据都需要转换成二进制流在网络传输
    2. 概念
      1. 对象序列化-将对象转换为二进制流的过程
      2. 对象反序列化-将二进制流恢复为对象的过程
    3. 解决方案
      1. Google的Protocal Buffers
      2. Java内置的序列化方式
      3. Hessian
        1. 引入二方包hession.jar
      4. JSON和XML
  3. 1.1.3基于TCP协议实现RPC
    1. 原理
      1. 基于java的反射机制和Socket API实现
      2. 方法的调用使用反射机制,消费者把需要调用的接口名称方法参数通过Socket通道传到服务端,服务端再通过反射机制调用对应的方法获取到值。然后再通过相同方式把结果返回给消费端
    2. 场景
      1. 服务消费者调用服务提供者的SayHelloService接口的sayHello()方法具体实现获取结果
    3. 关键代码
      1. 服务提供者
        1. String interfacename = SayHelloService.class.getName();//获取需要类名称
        2. Method method = SayHelloService.calss.getMethod("sayHello", String.class);//获取方法名称
        3. Socket socket = new Socket("127.0.0.1", 1234);//通过socket传输类,方法和参数等 ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream()); output.writeUTF(interfacename);//接口名称 output.writeUTF(method.getName());//方法名称 ...
      2. 服务提供者
    4. 总结
      1. 真实环境中,多个客户端多个请求,服务端需要同时接收和处理,设计并发、路由、负载均衡等问题,以上代码无法满足。