【问题标题】:Why Netty use boss and work eventloop rather than one eventloop为什么 Netty 使用 boss and work eventloop 而不是一个 eventloop
【发布时间】:2016-12-31 02:33:42
【问题描述】:

我有一个关于 Netty 的问题。 似乎它使用一个boss eventLoop 来继续接受连接,而另一个worker eventLoop 来继续进行数据I/O。

源码显示一个eventLoop会重复调用select/poll/epoll。所以会有不止一个eventLoop烧CPU。为什么 netty 不能只使用一个事件循环来处理服务器侦听套接字和接受的套接字?

【问题讨论】:

标签: netty


【解决方案1】:

有一种称为 SEDA 的架构。 Boss eventloop的好处是:你用来接受连接的线程不会被IO线程阻塞,IO线程是从socket读取数据然后在handler中工作的。您还可以使用 ExecutionHandler 来帮助事件循环。 Netty 正在改变和改进线程建模。并且在 Netty 4 中发生了很大变化。

【讨论】:

  • 如果我把所有的逻辑执行都放在ExecutionHandler中,那么I/O线程会立即返回,我能说用一个EventLoopGroup做Boss和Worker比用tow好吗?
  • 是的,你可以。我认为你可以做一些性能测试。我的猜测是:如果您的应用程序/服务器需要处理大量并发连接,并且每个连接上的流量不会那么多。那么两个会更好。或者我认为一个就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 2014-04-28
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
相关资源
最近更新 更多