3

我试图了解 netty 是如何工作的,在阅读了一些文档之后,我想看看我是否理解了事情是如何在高层次上工作的。

基本上,netty 有一个事件循环,所以每当你调用它时,它都会被序列化,请求会被推送到 o/s 级别,它使用 epoll 并等待事件发送回 netty。

当操作系统生成一个 netty 订阅的事件时,netty 就会触发一个事件循环。

现在感兴趣的部分是,必须解析被触发的事件,并且客户端代码(或自定义代码)必须弄清楚这个事件实际上是针对谁的。

例如,如果这是用于聊天应用程序,当发送消息时,由客户端代码决定通过 ajax 将此消息发送给正确的用户。

这是对 netty 工作原理的正确概述吗?

顺便说一句,当 netty 监听通过 epoll 发送的事件时,这个事件循环是单线程的还是从线程池中工作的?

4

1 回答 1

3

听起来对我来说是正确的。

Netty 中有多个事件循环线程,但这并不意味着单个 Channel 的事件由多个事件循环线程处理。Netty 选择一个线程并将其分配给一个 Channel。一旦分配,所有与 Channel 相关的事件都由选择的线程处理。

这也不一定意味着一个事件循环线程只处理一个 Channel。一个事件循环线程可以处理多个 Channel。

于 2012-12-26T04:23:39.417 回答