我试图了解 netty 是如何工作的,在阅读了一些文档后,我想看看我是否理解事物在高层次上是如何工作的。
基本上,netty 有一个事件循环,因此每当您进行调用时,它都会被序列化,并且请求会被推送到操作系统级别,并且它使用 epoll 并等待事件发送回 netty。
当操作系统产生netty订阅的事件时,netty就会触发一个事件循环。
现在,这里感兴趣的部分是,必须解析触发的事件,并且客户端代码(或自定义代码)必须弄清楚该事件实际上是针对谁的。
例如,如果这是一个聊天应用程序,那么当发送消息时,客户端代码将决定通过 ajax 将此消息发送给正确的用户。
从高层次上来说,这是对 netty 工作原理的正确概述吗?
顺便说一句,当netty监听通过epoll发送的事件时,这个事件循环是单线程的还是在线程池中工作?
最佳答案
对我来说听起来是正确的。
Netty中有多个事件循环线程,但这并不意味着单个Channel的事件由多个事件循环线程处理。 Netty 选择一个线程并将其分配给一个 Channel。一旦分配,与 Channel 相关的所有事件都由所选线程处理。
这也不一定意味着一个事件循环线程仅处理一个 Channel。一个事件循环线程可以处理多个 channel 。
关于asynchronous - 了解 netty 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034500/