MCPcopy Index your code
hub / github.com/dingwpmz/netty-learning

github.com/dingwpmz/netty-learning @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
379 symbols 793 edges 54 files 22 documented · 6%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

netty-learning

netty-learning主要由《让天下没有难学的Netty》免费专栏与Netty二次开发封装的框架构成。

1、《让天下没有难学的Netty》

《让天下没有难学的Netty》专栏将从通道篇、内存篇、性能篇、实战篇详细剖析Netty的实现原理、设计理念,同时通过抽取Apache顶级项目RocketMQ的网络通信模块,构建一个可直接使用的Netty网络通信框架。

1.1 网络通道篇

  1. Netty4 Channel 概述
  2. Netty4 ChannelHandler 概述
  3. Netty4 事件处理传播机制
  4. 图文并茂剖析Netty编解码以及背后的设计理念
  5. 一文揭晓通信协议设计的奥妙,直接"秒杀"面试官
  6. 面试官:Netty的线程模型可不是Reactor这么简单
  7. Netty进阶:手把手教你如何编写一个NIO客户端
  8. Netty进阶:手把手教你如何编写一个NIO服务端

连载中。。。

2、netty-framework

2.1 客户端类图设计

1

2.2 网络通信协议设计

通信协议主要是约定客户端、服务端协的通讯格式,目前主要是基于 请求头(Header) + 请求体(Body),并且通常Header长度固定,并且会包含一个请求体中长度。

在Netty中默认提供了 请求头 + Body 的封装实现,LengthFieldBasedFrameDecoder,在原理篇会详细介绍它的实现原理,我们来看一下RocketMQ中的通信协议格式:

2

2.3 事件处理模型

3

2.4 事件处理模型

4

业务处理线程池按照请求命令进行线程池隔离,即不同的业务使用单独的业务线程池。

2.5 网络组件交互设计

5

3、优质资源推荐

本项目由『中间件兴趣圈』公众号维护,Netty专栏是12个专栏的其中一个,所有专栏如下图所示:

7

其整个体系详情如下:

6

其中RocketMQ专栏如下图所示:

8

欢迎关注公众号『中间件兴趣圈』,回复 专栏 即可免费获得。

qrcode

Extension points exported contracts — how you extend this code

NettyRequestProcessor (Interface)
Common remoting command processor [1 implementers]
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyRequestProcessor.java
RemotingClient (Interface)
(no doc) [2 implementers]
netty-framework/src/main/java/com/prestigeding/remoting/RemotingClient.java
RemotingServer (Interface)
(no doc) [2 implementers]
netty-framework/src/main/java/com/prestigeding/remoting/RemotingServer.java
InvokeCallback (Interface)
(no doc) [2 implementers]
netty-framework/src/main/java/com/prestigeding/remoting/InvokeCallback.java
RemotingService (Interface)
(no doc) [2 implementers]
netty-framework/src/main/java/com/prestigeding/remoting/RemotingService.java

Core symbols most depended-on inside this repo

info
called by 57
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyLogger.java
warn
called by 44
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyLogger.java
error
called by 32
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyLogger.java
equals
called by 29
netty-framework/src/main/java/com/prestigeding/remoting/netty/RequestTask.java
parseChannelRemoteAddr
called by 23
netty-framework/src/main/java/com/prestigeding/remoting/common/RemotingHelper.java
toString
called by 16
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyEvent.java
closeChannel
called by 12
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyRemotingClient.java
getChannel
called by 10
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyRemotingClient.java

Shape

Method 316
Class 47
Interface 12
Enum 4

Languages

Java100%

Modules by API surface

netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyRemotingClient.java35 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyRemotingServer.java32 symbols
netty-framework/src/main/java/com/prestigeding/remoting/protocol/RemotingCommand.java28 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyRemotingAbstract.java26 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyClientConfig.java25 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyServerConfig.java24 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/ResponseFuture.java19 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/NettyLogger.java19 symbols
netty-framework/src/main/java/com/prestigeding/remoting/common/RemotingUtil.java11 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/TlsHelper.java10 symbols
netty-framework/src/main/java/com/prestigeding/remoting/netty/RequestTask.java9 symbols
reactor-nio/src/main/java/com/prestigeding/nio/reactor/NioTask.java8 symbols

For agents

$ claude mcp add netty-learning \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact