Netty
vio_dzyls
.
展开
-
TCP粘包和拆包
粘包拆包的概念以及解决方案原创 2019-11-26 16:29:44 · 8232 阅读 · 0 评论 -
编码器与解码器
Netty中的编码器、解码器原创 2019-11-25 23:20:39 · 2334 阅读 · 0 评论 -
ProtoBuf
编码和解码数据在网络中的传输都是以二进制字节码数据,在发送时需要编码,接收时需要解码。codec由两部分组成,decoder(解码器)和 encoder(编码器)Netty的编码和解码Netty提供的编码器:StringEncoderObjectEncoderNetty提供的解码器:StringDecoderObjectDecoderNetty自带的编码解码器,...原创 2019-11-24 23:41:19 · 4726 阅读 · 0 评论 -
基于Netty的WebSocket
WebSocketHttp是无状态的,浏览器每次请求,都是创建一个新连接,传输完毕即断开。双方并不能感知对方的状态。而WebSocket是长连接,一次TCP握手,即可建立持久性的连接,并且双方能感知到对方的状态。核心代码:// 因为基于http,所以要添加http编码和解码器pipeline.addLast(new HttpServerCodec());// 以块的方式写,添加Chu...原创 2019-11-24 23:25:10 · 283 阅读 · 0 评论 -
Netty心跳检测
IdleStateHandlerNetty中的心跳检测机制,根据这个处理器能及时的检测到读/写/读写空闲状态,根据状态进行相应的处理。Triggers an {@link IdleStateEvent} when a {@link Channel} has not performedread, write, or both operation for a while.当没有执行读、写...原创 2019-11-24 20:53:43 · 20883 阅读 · 0 评论 -
Netty核心组件
BootStrap一个Netty应用通常从一个BootStrap开始,由于配置整个程序BootStrap是配置客户端的启动引导类ServerBootStrap是配置服务端的启动引导类。常用方法ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup)用于设置BossGroup、workGro...原创 2019-11-23 23:07:28 · 8212 阅读 · 0 评论 -
Netty编写简单的Http服务器
HttpServerpublic class MyHttpServer { public static void main(String[] args) { NioEventLoopGroup bossGroup = new NioEventLoopGroup(); NioEventLoopGroup workGroup = new NioEventL...原创 2019-11-23 20:11:13 · 1559 阅读 · 0 评论 -
ChannelFuture异步模型
Netty中的操作,如bind、Connect、Write,会返回一个ChannelFuture。调用者并不能立刻获得结果,而是通过Future-Listener机制,用户可以主动获取或等待通知机制获取IO操作结果。Netty的异步模型建立在Future和Callback之上的。假设有个方法func,计算非常耗时,等待显然不合适。那么可以在调用func时,返回一个Future对象,后续可以...原创 2019-11-23 20:01:34 · 480 阅读 · 0 评论 -
Netty模型
相比于NIONIO学习成本高,代码复杂NIO存在BugNetty架构设计、线程模型传统的阻塞IO一个请求一个线程。缺点并发数高时,就会创建大量的线程,占用系统资源当没有数据可读时,线程会阻塞read操作,浪费资源Reactor模式单Reactor单线程 Handler中处理了业务逻辑。Reactor通过select监听客户端请求事件,通过Disp...原创 2019-11-22 23:36:25 · 416 阅读 · 1 评论 -
零拷贝zero copy
零拷贝的概念零拷贝:CPU不执行拷贝数据的任务优点:减少不必要的cpu拷贝减少内存带宽的使用减少系统态用户态的切换传统IO四次用户态系统态的切换四次数据拷贝(两次DMA拷贝,两次cpu拷贝)硬盘到内核空间内核空间到用户空间(cpu)用户空间到socket buffer(cpu)socket buffer到协议引擎基于SendFile实现的零拷贝两次用户...原创 2019-11-22 22:39:10 · 23849 阅读 · 0 评论 -
Netty介绍及NIO详解
Netty简介Netty是一个异步、基于事件驱动的网络应用框架BIO、NIO、AIO的简介应用场景分布式系统中各节点远程过程调用(RPC:Dubbo)游戏服务器Hadoop通信NIO三大组件NIO三大组件:Selector、Channel、Buffer一个Channel对应一个Buffer,一个Selector管理多个Channel,一个线程对应一个Selecto...原创 2019-11-20 22:37:48 · 9282 阅读 · 14 评论 -
Socket通信示例Demo
Socket网络通信服务器端:/** * BIO : 阻塞io **/@Datapublic class BioServer { private ServerSocket serverSocket; private static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(10, 20, 1, Ti...原创 2019-11-15 21:26:06 · 2107 阅读 · 0 评论