前言
主要是对下面文章书籍的学习总结:juejin.cn/book/704735…
整体流程图
分析
其实总体分为两大部分
netty实现数据的发送接收
netty相关知识
- bootstrap 当需要引导客户端或一些无连接协议时,需要使用 Bootstrap 类。Bootstrap 类负责创建管道给客户或应用程序,作为客户端,我们需要使用到 connect API 来连接到远程 服务端 blog.csdn.net/qq_31960623…
其中主要的几块功能
- 编码/解码类的编写
- RpcDecoder/RpcEncoder
- 简单的可以实现ByteToMessageDecoder+MessageToByteEncoder来做
- 这里面还需要解决粘包/拆包的问题
- 接收数据的handler编写
服务端:ServerHandler
客户端:ClientHandler
可以继承ChannelInboundHandlerAdapter类来实现 - client/server的编写
jdk/javassist代理封装底层逻辑
通过代理模式,将发送数据以及接收数据的逻辑封装在invocationHandler里面,业务层面只需要调用业务方法
留存的问题
正式的生产上,按理说人人都是生产者,人人也都是消费者;不会存在这么明显的客户端/服务端区别;后续如何优化?