asynchronous - 了解 netty 的工作原理

标签 asynchronous netty

我试图了解 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/

相关文章:

.net - 记录器实现中的 CloudQueue.BeginAddMessage

c# - 如何在 Windows Phone 上发出 json 请求时显示加载消息?

Java netty每秒只能接受X个请求?

java - Netty代理服务器

c# - 为什么 .NET 异步等待文件复制比同步 File.Copy() 调用消耗更多 CPU?

javascript - jQuery - 在 .load 调用完成之前禁用 HTML 页面

netty - 为什么我们真的需要多个 netty boss 线程?

java - 在 io.netty.handler.ssl.Sslcontext 中禁用主机名验证

c++ - 使 C++ 插件异步

netty - Netty 4-EventLoopGroup-EventLoop-EventExecutor-线程关联