代理层开发

110 阅读1分钟

前言

主要是对下面文章书籍的学习总结:juejin.cn/book/704735…

整体流程图

image.png

分析

其实总体分为两大部分

netty实现数据的发送接收

netty相关知识

  1. bootstrap 当需要引导客户端或一些无连接协议时,需要使用 Bootstrap 类。Bootstrap 类负责创建管道给客户或应用程序,作为客户端,我们需要使用到 connect API 来连接到远程 服务端 blog.csdn.net/qq_31960623…

其中主要的几块功能

  • 编码/解码类的编写
  1. RpcDecoder/RpcEncoder
  2. 简单的可以实现ByteToMessageDecoder+MessageToByteEncoder来做
  3. 这里面还需要解决粘包/拆包的问题
  • 接收数据的handler编写 服务端:ServerHandler
    客户端:ClientHandler
    可以继承ChannelInboundHandlerAdapter类来实现
  • client/server的编写

jdk/javassist代理封装底层逻辑

通过代理模式,将发送数据以及接收数据的逻辑封装在invocationHandler里面,业务层面只需要调用业务方法

留存的问题

正式的生产上,按理说人人都是生产者,人人也都是消费者;不会存在这么明显的客户端/服务端区别;后续如何优化?