Netty
君子一笑
这个作者很懒,什么都没留下…
展开
-
Netty流量控制之一:高低水位
当Channel write向缓冲区写入数据的时候,如果数据量超过了设置的高水位值,就设置通道Channel不可写状态。当Channel flush将缓冲区中的数据写入到TCP缓冲区之后,如果Netty缓冲区的数据量低于低水位值时,就设置通过Channel可写状态。Netty默认设置的高水位为64KB,低水位为32KB。1. 例子ServerBootstrap sb = new ServerBootstrap();bootstrap.childOption(ChannelOption.WRITE_原创 2020-12-29 12:09:21 · 2445 阅读 · 0 评论 -
Netty源码剖析之四:服务端处理TCP连接
1. 通道注册SelectionKey.OP_ACCEPT事件我们知道服务端启动过程中在ServerBootstrap.initAndRegister注册通道时给SelectionKey绑定对象NioServerSocketChannel,以及在绑定端口和地址时给Channel通道注册了SelectionKey.OP_ACCEPT事件。查看AbstractNioChannel.doRegister()可知selectionKey = javaChannel().register(eventLoop().u原创 2020-12-28 15:40:44 · 238 阅读 · 0 评论 -
Netty源码剖析之三:通过ServerBootstrap分析服务端启动流程
ServerBootstrap在Netty中负责引导启动服务端程序,下面给出一个服务端启动的例子: EventLoopGroup bossGroup = new NioEventLoopGroup(); //bossGroup负责处理TCP/IP连接的 EventLoopGroup workerGroup = new NioEventLoopGroup(); //workerGroup是负责处理Channel(通道)的I/O事件 ServerBootstrap sb = new ServerBoot原创 2020-12-28 12:27:49 · 184 阅读 · 0 评论 -
Netty源码剖析之二:NioEventLoop
1. NioEventLoop简介Netty的线程模型是基于Reactor线程模型的,而NioEventLoop类则是Reactor线程模型的核心,NioEventLoop类的run()方法负责监听IO事件并分发handler进行业务逻辑的处理。2. NioEventLoop类图3. 构造函数NioEventLoop(NioEventLoopGroup parent, Executor executor, SelectorProvider selectorProvider,原创 2020-12-24 17:03:02 · 168 阅读 · 2 评论 -
Netty源码剖析之一:NioEventLoopGroup
1. NioEventLoopGroup介绍Netty启动的时候会构建NioEventLoopGroup实例,NioEventLoopGroup内部维护了一组线程NioEventLoop,用于处理IO事件(OP_ACCEPT、OP_CONNECT、OP_READ、OP_WRITE),每个线程负责处理多个Channel上的事件,而一个Channel只对应于一个线程,这样实现了Netty的串行无锁化。2. NioEventLoopGroup类图3. 构造函数NioEventLoopGroup的构造函数原创 2020-12-24 14:58:45 · 221 阅读 · 0 评论 -
JAVA数据结构与算法之延迟队列(二):HashedWheelTimer
HashedWheelTimer原创 2020-12-22 15:02:57 · 324 阅读 · 0 评论