请说明请求、线程、事件循环、服务器通道和客户端通道之间的关系,当将netty服务器和netty客户端连接起来制作代理时。在开始之前,我想对于每个请求,netty服务器将从eventloop中获取一个辅助线程,以及一个channel (绑定到一个工作线程,并从线程池中获得有限的对象it )来处理这个入站消息,并将其发送到来自netty客户机的出站channel。此后,可能的服务器channel是有限的,而客户机channel是无限的(因为出站端口是随机选择的)。不过,我的意见是:
当教程谈到使用netty作为代理时,他们总是说服务器(Serverbootstrap)中使用的事件循环可以用来创建客户端(bootstrap)来保存线程重载。这是什么意思?当客户端和服务器共享相同的事件循环时,它们本质上共享什么?我对此很感兴趣,因为当客户端以异步方式运行时,我不知道如何将响应消息返回到它的原始通道。
发布于 2018-06-01 09:44:50
所以你问了很多问题,我会尽力回答所有这些.
1)入站和出站通道的限制需要由您自己实现,或者您在您使用的操作系统设置的限制上进行中继(这是大多数情况下每个进程可以打开的文件描述符的数量)。
2)通道表示连接,因此根据所使用的协议,多个请求/响应可能共享相同的连接。例如,HTTP保持活动是可能的,这是HTTP/1.1的默认设置
为服务器和客户端共享相同的EventLoop允许使用相同的线程处理两者,这意味着无需上下文切换,您可以在两者之间传输数据。如果您构建了类似于代理的东西,这一点尤其重要。
https://stackoverflow.com/questions/50637176
复制相似问题