Netty 线程在继续之前是否处理连接的持续时间?
Do Netty threads handle the duration of a connection before moving on?
在我们的管道中,当我们记录日志时,我们需要将数据放入当前线程的 MDC 中,以便我们的日志解析服务正确地提取日志。
我的印象是 Netty 会将 connection/channel 固定到单个线程,但线程用于多个连接。
我的问题是,Netty 中的线程是在固定到另一个连接之前完成一个连接的工作,还是固定到多个连接并随机跳过连接的处理程序。
示例交错处理时间线:
Connection1.Handler1.onRead()
Connection2.Handler2.onWrite()
Connection1.Handler1.onRead()
Connection1.Handler2.onRead()
示例非交错处理时间线:
Connection1.Handler1.onRead()
Connection1.Handler2.onRead()
Connection1.Handler3.onRead()
Connection2.Handler1.onRead()
Connection2.Handler2.onRead()
Connection2.Handler3.onRead()
这两个时间线中哪一个准确地描绘了 Netty 的操作模式?
如果前者是正确的,那么有没有人建议如何最好地确保每个连接维护线程上下文?
不能保证在开始处理另一个频道的事件之前处理一个频道(在您的示例中是一个连接)的所有事件。
在我们的管道中,当我们记录日志时,我们需要将数据放入当前线程的 MDC 中,以便我们的日志解析服务正确地提取日志。
我的印象是 Netty 会将 connection/channel 固定到单个线程,但线程用于多个连接。
我的问题是,Netty 中的线程是在固定到另一个连接之前完成一个连接的工作,还是固定到多个连接并随机跳过连接的处理程序。
示例交错处理时间线:
Connection1.Handler1.onRead()
Connection2.Handler2.onWrite()
Connection1.Handler1.onRead()
Connection1.Handler2.onRead()
示例非交错处理时间线:
Connection1.Handler1.onRead()
Connection1.Handler2.onRead()
Connection1.Handler3.onRead()
Connection2.Handler1.onRead()
Connection2.Handler2.onRead()
Connection2.Handler3.onRead()
这两个时间线中哪一个准确地描绘了 Netty 的操作模式?
如果前者是正确的,那么有没有人建议如何最好地确保每个连接维护线程上下文?
不能保证在开始处理另一个频道的事件之前处理一个频道(在您的示例中是一个连接)的所有事件。