gpt4 book ai didi

java - 多 react 器设计 - 我是否试图重新发明 Netty?

转载 作者:行者123 更新时间:2023-12-01 04:35:57 24 4
gpt4 key购买 nike

我正在尝试迁移具有以下特征的现有 NIO Server 代码库- 在选择器的控制下执行连接接受的单线程- 执行 Socket READ/WRITE 的多个线程(一个线程:一个选择器:一个已接受连接的 SocketChannel)

我想迁移到一种模型,其中单个读/写线程可以有一个选择器,并且多个接受的 SocketChannels 可以注册和取消注册。这样单个线程就可以复用多个SocketChannel进行IO。

据我了解,该模型将直接映射到 Netty 的情况,其中有一个 boss 线程、可配置的工作线程数以及每个工作线程有多个连接。 ExecutionHandler 是正交的,所以我现在不考虑它。

具体问题:我是否正在重新发明“Netty”轮子,或者对于预计对延迟敏感的服务器,上述方法有什么不同,其中连接可能高达 5000 个,二进制协议(protocol)消息交换率预计达到 60-70K 消息/秒?

据我了解,所提到的数字不会单独受到上述设计选择的影响,还会受到其他因素的影响。但设计选择可能会产生更大的影响 - 至少我是这么认为

提前致谢

最佳答案

我认为你正在重新发明。 Netty 正是这样做的,甚至更多。但由于 Netty 现在已经很好地模块化了,如果您不想要其余的功能或“包袱”,您甚至可以选择 Netty 的各个 Maven 子模块而不是整个模块。
从头开始编写的基本问题是,您可能会遇到大量 netty 已经解决的问题、平台问题、jdk 解决方法等等。
郑重声明,在我使用 4 年的 centrino 处理器的笔记本电脑上进行测试时,我能够轻松获得我用 netty 编写的服务器的上述消息速率(实际上更多),但客户端数量较少(100 个)。
也许您应该从 netty 示例模块中获取一个示例,编写您的 5000 连接客户端,并在走这条路之前测试延迟是否适合您。只需几个小时即可完成此操作。

关于java - 多 react 器设计 - 我是否试图重新发明 Netty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17349030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com