今天我们来讨论一下,关于Natty工作架构流程中的一些问题。
问题【1】在Netty的工作架构流程中,每个Boss NioEventLoop循环执行的任务包含几步?
三步。
1 轮询accept事件
2 处理accept I/O事件,与Client建立连接,生成NioSocketChannel,并将NioSocketChannel注册到某个Worker NioEventLoop的Selector上
3 处理任务队列中的任务,runAllTasks。任务队列中的任务包括用户调用eventloop.execute或schedule执行的任务,或者其它线程提交到该eventloop的任务。
问题【2】在Netty的工作架构流程中,每个Worker NioEventLoop循环执行的任务包含几步?
三步。
1 轮询read、write事件
2 处I/O事件,即read、write事件,在NioSocketChannel可读、可写事件发生时进行处理
3 处理任务队列中的任务,runAllTasks
问题【3】在Netty的工作架构流程中,任务队列中的task有几种典型使用场景?
3种。
1 用户程序自定义的普通任务
2 非当前reactor线程调用channel的各种方法 例如在推送系统的业务线程里面,根据用户的标识,找到对应的channel引用,然后调用write类方法向该用户推送消息,就会进入到这种场景。最终的write会提交到任务队列中后被异步消费
3 用户自定义定时任务