Netty实战篇-手写DubboRpc框架

1. RPC 基本介绍

rpc是远程调用的一种行为,在数据传输过程中涉及到传输协议,http就是一种传输协议。

RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。

  • 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。
  • 两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样

Netty实战篇-手写DubboRpc框架_第1张图片

常见的 RPC 框架有:

  • 阿里的Dubbo
  • google的gRPC
  • Go语言的rpc
  • Apache的thrift
  • Spring旗下的 Spring Cloud。

2. RPC 调用流程

Netty实战篇-手写DubboRpc框架_第2张图片

说明:

  1. 服务消费方(client)以本地调用方式调用服务
  2. client stub 接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体
  3. client stub 将消息进行编码并发送到服务端
  4. server stub 收到消息后进行解码
  5. server stub 根据解码结果调用本地的服务
  6. 本地服务执行并将结果返回给 server stub
  7. server stub 将返回导入结果进行编码并发送至消费方
  8. client stub 接收到消息并进行解码】
  9. 服务消费方(client)得到结果

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

3. 实现 dubbo RPC(基于 Netty)

3.1 需求说明

  • dubbo 底层使用了 Netty 作为网络通讯框架,要求用 Netty 实现一个简单的 RPC 框架
  • 模仿 dubbo,消费者和提供者约定接口和协议,消费者远程调用提供者的服务,提供者返回一个字符串,消费者打印提供者返回的数据。底层网络通信使用 Netty 4.1.20
    io.netty    netty-all    4.1.20.Final

3.2 设计说明

  • 创建一个接口,定义抽象方法。用于消费者和提供者之间的约定。
  • 创建一个提供者,该类需要监听消费者的请求,并按照约定返回数据。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
  • 创建一个消费者,该类需要透明的调用自己不存在的方法,内部需要使用 Ne

你可能感兴趣的:(java,学习路线,面试,dubbo,rpc,java,redis,分布式)