1、RPC 基本介绍

  RPC(Remote Procedure Call) 远程过程调用,是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序无需额外地为这个交互作用编程。

  两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样。

 

  RPC 调用流程

netty 详解(八)基于 Netty 模拟实现 RPC

 

  RPC调用流程说明:

  1)服务消费方(client)以本地调用方式调用服务;

  2)client stub 接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体

  3)client stub 将消息进行编码并发送到服务端

  4)server stub 收到消息后进行解码

  5)sever stub 根据解码结果调用本地的服务

  6)本地服务执行并将结果返回给 server stub

  7)server stub 将返回导入结果进行编码并发送至消费方

  8)client  stub 接收消息并进行解码

  9)服务消费方(client)得到结果

  小结:RPC 的目标即使将 2-8 这些步骤都封装起来,用户无需关心这些细节,可以像调用本地方法一样即可完成远程服务调用。

 

2、自己实现 dubbo RPC(基于Netty)

  dubbo 底层使用了 Netty 作为网络通信框架,要求用 Netty 实现一个简单的 RPC 框架

  模仿 dubbo,消费者和提供者约定接口和协议,消费者远程调用提供者的服务,提供者返回一个字符串,消费者打印提供者返回的数据,底层网络通信使用 Nett有 4.x。

 

  设计说明:

  • 创建一个接口,定义抽象方法,用于消费者和提供者之间的约定
  • 创建一个提供者,该类需要监听消费者的请求,并按照约定返回数据
  • 创建一个消费者,该类需要透明地调用自己不存在的方法,内部需要使用 Netty 请求提供者返回数据

netty 详解(八)基于 Netty 模拟实现 RPC

 

 

netty 详解(八)基于 Netty 模拟实现 RPC

   共用接口 HelloService

package com.oy.dubbo.api;

public interface HelloService {
    String hello(String message);
}
View Code

相关文章: