Netty
文章平均质量分 72
Netty
响彻天堂丶
那万一赢了呢?
展开
-
Netty实战 基于Netty实现 RPC 框架 (兼容Spring)
3 流程介绍3.1 服务提供者3.2 服务消费者3.3 编解码4 项目演示1 依次启动spring-provider、spring-customer。2 查看zk服务注册信息。3 访问消费者接口原创 2022-06-15 00:49:42 · 138 阅读 · 0 评论 -
Netty LengthFieldBasedFrameDecoder 解决粘包/半包问题
从两个角度看粘包和拆包:1 收发角度:一个发送可能被多次接收(半包),多个发送可能被一次接收(粘包)2 传输角度:一个发送可能占用多个传输包(半包),多个发送可能公用一个传输包(粘包)根本原因:TCP 协议是面向连接的、可靠的、基于字节流的传输层 通信协议,是一种流式协议,消息无边界。1 TCP连接变成短连接,一个请求一个 短连接,效率,性能低下,不推荐。2 固定长度,长度不好定义,会造 成空间浪费,不推荐。3 分隔符,消息内容本身也有分 隔符时需要转义,故 需要扫描消息内容,推荐。4 固定长度原创 2022-06-10 11:02:50 · 937 阅读 · 1 评论 -
Netty WebSocket demo code
netty websocket原创 2022-06-05 10:53:22 · 157 阅读 · 0 评论 -
Netty详解EventLoop、EventLoopGroup
1 EventLoopEventLoop 本质是一个单线程执行器(同时维护了一个 Selector),里面有 run 方法处理 Channel 上源源不断的 io 事件(事件循环对象)。2 EventLoopGroup2.1 Channel绑定EventLoopEventLoopGroup 是一组 EventLoop,Channel 一般会调用 EventLoopGroup 的 register 方法来绑定其中一个 EventLoop,后续这个 Channel 上的 io 事件都由此 Event原创 2022-05-22 20:45:10 · 998 阅读 · 0 评论 -
图解 IO 模型
1 JAVA应用程序如何读取数据?JVM上运行的JAVA程序无法从硬盘、网卡中直接读取数据。是通过内核来访问磁盘、网卡等硬件的。2 IO模型2.1 阻塞阻塞:没有数据传过来时,读会阻塞直到有数据,缓冲区满时,写操作也会阻塞。阻塞时,java应用程序不能干其它事,只能等待。2.2 非阻塞非阻塞:java应用程序调用内核获取数据,如果内核没有读取到数据,那么直接返回。这时,java应用程序可以干其它事。当内核等到数据,java应用程序通过轮询机制读取内核的数据。###伪代码//轮询机制原创 2022-05-19 22:35:20 · 200 阅读 · 0 评论 -
Netty 实现简单的HTTP服务器
1 概述HTTP 是基于请求/响应模式的:客户端向服务器发送一个 HTTP 请求,然后服务器将会返回一个 HTTP 响应。Netty 提供了多种编码器和解码器以简化对这个协议的使用。一个HTTP 请求/响应可能由多个数据部分组成,FullHttpRequest 和FullHttpResponse 消息是特殊的子类型,分别代表了完整的请求和响应。所有类型的 HTTP 消息(FullHttpRequest、LastHttpContent 等等)都实现了 HttpObject 接口。(1) HttpReque原创 2021-04-07 16:20:48 · 409 阅读 · 6 评论 -
Netty 实战之解决粘包/半包问题
1 一个例子1.1 EchoServerpackage com.rosh.demo;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGrou原创 2021-04-03 15:56:42 · 626 阅读 · 10 评论 -
Netty 入门及核心组件详解
1 为什么要用 Netty1 虽然 JAVA NIO 框架提供了 多路复用 IO 的支持,但是并没有提供上层“信息格式”的良好封装。例如前两者并没有提供针对 Protocol Buffer、JSON 这些信息格式的封装,但是Netty 框架提供了这些数据格式封装(基于责任链模式的编码和解码功能)。2 NIO 的类库和 API 相当复杂,使用它来开发,需要非常熟练地掌握 Selector、ByteBuffer、ServerSocketChannel、SocketChannel 等,需要很多额外的编程技能原创 2021-04-02 01:05:14 · 1083 阅读 · 10 评论