Netty
DLTMOLI
这个作者很懒,什么都没留下…
展开
-
Netty故障排查技巧
接收不到消息如果业务的 ChannelHandler 接收不到消息,可能的原因如下:1)业务的解码 ChannelHandler 存在 BUG,导致消息解码失败,没有投递到后端;2)业务发送的是畸形或者错误码流(例如长度错误),导致业务解码 ChannelHandler 无法正确解码出业务消息;3)业务 ChannelHandler 执行了一些耗时或者阻塞操作,导致 Netty 的 NioEventLoop 被挂住,无法读取消息;4)执行业务 ChannelHandler 的线程池队.原创 2020-06-04 12:01:53 · 945 阅读 · 0 评论 -
Netty组件及其运行流程
1.Netty特性传输服务 支持BIO和NIO 容器集成 支持OSGI、JBossMC、Spring、Guice容器 协议支持 HTTP、Protobuf、二进制、文本、WebSocket等一系列常见协议都支持。 还支持通过实行编码解码逻辑来实现自定义协议 Core核心 可扩展事件模型、通用通信API、支持零拷贝的ByteBuf缓冲对象2.模块组件①Bootstrap、Server...原创 2020-03-05 11:59:52 · 211 阅读 · 0 评论 -
Netty工作原理架构
Netty服务端过程1 初始化创建2个NioEventLoopGroup,其中boosGroup用于Accetpt连接建立事件并分发请求, workerGroup用于处理I/O读写事件和业务逻辑2 基于ServerBootstrap(服务端启动引导类),配置EventLoopGroup、Channel类型,连接参数、配置入站、出站事件handler3 绑定端口,开始工作 ...原创 2020-01-04 15:29:30 · 232 阅读 · 0 评论 -
【面试题】Netty相关
1.BIO、NIO和AIO的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通...转载 2019-12-31 10:26:32 · 151 阅读 · 0 评论 -
netty使用DelimiterBasedFrameDecoder处理tcp粘包
1.tcp产生粘包问题的原因有应用程序write写入的字节大小大于套接字发送缓冲区的大小。 进行MSS(TCP的数据部分)大小的TCP分段。 以太网帧的payload大于MTU进行IP分片2.解决方案消息定长,例如每个报文的大小固定,例如固定为100字节,如果长度不够,可以用空白填充。 在包尾增加回车换行符进行分割,例如FTP协议。 将消息分为消息头和消息体,消息头中包含表示消息...原创 2019-12-30 11:38:04 · 458 阅读 · 0 评论 -
Netty即是服务端又是客户端,服务端和客户端相互对应
Netty即是服务端又是客户端,服务端和客户端相互对应。具体功能细节是:上游有一个服务,会主动发送消息给我中间件平台。中间件平台既有服务端也有客户端。通过下游客户端连接进来的客户端和中间件传下去的通道id是一样的,实现互相对应的一种通道,保证知道传输的消息是走的同一条路。那么就要自己具备同时是一个服务端和一个客户端,下游客户端连接服务端。也就是达到一种透传的功能,中间件平台只充当消息转换的...原创 2019-12-23 15:40:07 · 4670 阅读 · 5 评论