我正在尝试迁移具有以下特征的现有NIO Server代码库 - 单线程,在选择器的控制下执行连接接受 - 执行Socket READ / WRITE的多个线程(一个线程:一个选择器:一个接受连接的SocketChannel)
我想迁移到一个模型,其中Single READ / WRITE线程可以有一个Selector,多个接受的SocketChannel可以注册和取消注册。这样,单个线程可以为IO复用多个SocketChannel。
据我所知,这个模型会直接映射到 Netty的情况,其中有一个boss线程,并且可以配置no worker和每个worker的多个连接。 ExecutionHandler是正交的,所以我现在还没有把它带到图片中。
具体问题: 我是否重新发明了“Netty”轮,或者上述方法对于服务器是否存在任何差异,预计这种服务器会对延迟敏感,其中连接可达5000,二进制协议消息交换速率预计达到60-70K msgs / sec?
据我所知,所提及的数字不会受到所述设计选择的影响,但也会影响其他因素。但是设计选择可以产生更大的影响 - 至少我认为是
提前致谢
答案 0 :(得分:0)
我认为你正在重新发明。 Netty正是这样做的。但是既然netty现在很好地模块化了,你甚至可以选择netty的单个maven子模块,而不是整个东西,如果你不想要其余的功能或“行李”。
从头开始编写的基本问题是,您可能会遇到netty已经解决的大量问题,平台问题,jdk工作等等。
为了记录,我能够轻松地获得上面提到的消息率(实际上更多)用于我用netty编写的服务器,但是在我4岁的centrino处理器笔记本电脑上进行测试时,用户数量减少了(100)。 />
您可能应该从netty示例模块中获取示例,编写5000连接客户端,并在沿着此路径前测试延迟是否适合您。你应该花几个小时才能做到这一点。