netty
2016-08-12 11:22:20 0 举报
登录查看完整内容
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。它提供了一套丰富的工具和组件,帮助开发者构建可靠的网络应用程序。Netty基于Java NIO(非阻塞I/O)技术,可以处理大量的并发连接,实现高吞吐量和低延迟。通过使用Netty,开发者可以轻松地实现协议编解码、心跳检测、断线重连等功能,提高应用程序的稳定性和扩展性。Netty广泛应用于互联网行业,如游戏服务器、即时通讯、物联网等领域。
作者其他创作
大纲/内容
NioServerSocketChannelNioServerSocketChannelConfig
AbstractChannel()
SingleThreadEventLooppromise.channel().unsafe().register
NioServerSocketChannel()
创建nettyserver设置channel属性
HeadContext
ChannelOption
DefaultChannelPipeline <---->
serverBootstrap.bind(9000)
super(parent)
AbstractBootstrapdoBind(final SocketAddress
AbstractNioChannelconfigureBlocking(false)
TailContext
AbstractChannelinvokeHandlerAddedIfNeeded
DefaultChannelPipelineaddLast0
NioServerSocketChannelSelectionKey.OP_ACCEPT
将channel注册到selector上
ChannelInitializer
NioEventLoopprocessSelectedKeys
NioEventLoopselector.select(timeoutMillis)
NioEventLoopSelectStrategy.SELECT
MultithreadEventLoopGroupregister(Channel channel)
pipeline.addLast(handler)
从bossgroup中取出一个channel注册到自己的selector
AbstractNioChanneljavaChannel().register(
SingleThreadEventExecutordoStartThread()
this.parent = parent; id = newId(); unsafe = newUnsafe(); pipeline = newChannelPipeline();
ServerBootstrapsetChannelOptions
DefaultChannelPipelineaddLast
AbstractChannelpipeline.fireChannelRegistered()
对照NIOServer中的read或accept事件
AbstractSelectableChannelregister
ReflectiveChannelFactorynewChannel()
ChannelInitializerinitChannel
AbstractChannelregister
ServerBootstrapinit(Channel channel)
NioEventLoopprocessSelectedKey
AbstractChannelregister0
SingleThreadEventExecutorexecute
AbstractNioMessageChannelpipeline.fireChannelRead(readBuf.get(i));
newChannelPipeline()
判定是否是当前线程
AbstractBootstrapinitAndRegister()
反射调用NioServerSocketChannel构造
AbstractChanneleventLoop.execute
AttributeKey
由ChannelInitializer实现类实现initChannel方法
unsafe.read()(NioMessageUnsafe)
AbstractNioMessageChanneldoReadMessages(readBuf)
SingleThreadEventExecutorSingleThreadEventExecutor.this.run()
eventLoop为NioEventLoop
AbstractChannelHandlerContextnext.invokeChannelRead(m)
AbstractBootstrapchannelFactory.newChannel()
注册OP_ACCEPT事件
ServerBootstrapAcceptor
SingleThreadEventExecutoraddTask(task)
SingleThreadEventExecutorinEventLoop()
NioEventLoopSocketUtils.accept(javaChannel())
ServerBootstrapAttributeKey
ServerBootstrapAcceptorchannelRead(ChannelHandlerContext ctx
放到taskQueue
异步线程执行
SingleThreadEventExecutorstartThread()
NioEventLooprun()
NioEventLoopSelectionKey.OP_READ | SelectionKey.OP_ACCEPT
AbstractChanneldoRegister
ch.configureBlocking(false)
创建nettyserver定义NioEventLoopGroup
0 条评论
回复 删除
下一页