【发布时间】:2013-06-28 21:32:50
【问题描述】:
我正在尝试迁移具有以下特征的现有 NIO 服务器代码库 - 在选择器的控制下执行连接接受的单线程 - 执行 Socket READ/WRITE 的多个线程(一个线程:一个 Selector:一个接受连接的 SocketChannel)
我想迁移到一个模型,其中单个 READ/WRITE 线程可以有一个 Selector,并且多个接受的 SocketChannel 可以注册和取消注册。这样,一个线程就可以多路复用多个 SocketChannel 进行 IO。
我知道这个模型会直接映射到一个 Netty 的案例,其中有一个老板线程和可配置的工作人员数量和每个工作人员的多个连接。 ExecutionHandler 是正交的,所以我暂时不考虑它。
具体问题: 我是在重新发明“Netty”轮子,还是对于预计对延迟敏感的服务器而言,上述方法有什么不同,其中连接数可能高达 5000,二进制协议消息交换率预计将达到 60-70K msgs/sec?
我了解,所提及的数字不会仅受上述设计选择的影响,也会受到其他因素的影响。但设计选择可以产生更大的影响——至少我是这样认为的
提前致谢
【问题讨论】: