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