我们为分布式处理构建系统,并希望将 netty (4.0) 用于网络 I/O 堆栈。
以下情况:我们有一个生产者任务 A 和一个消费者任务 B。任务 A 以 64K 块生成数据并将其传输给任务 B。任务 B 在某些情况下可能是计算密集型的,并且消耗 64K 块的速度比任务 A 产生的慢. 任务A和B通过一个tcp通道连接。
我们考虑这种方法:任务 A 生成块并将其放入本地队列中。当 tcp 通道空闲并且下一个 64K 可以写入通道时,会自动从队列中取出一个块(netty 是否给我们这样的信号/事件?)。如果任务 A 上的队列超过了存储块的固定限制,我们会阻塞任务 A,直到任务 B 消耗完块。本质上,我们希望任务 A 的“接收器触发写入”能够充分利用 tcp 通道而不会拥塞它。这种设计的目标应该是最大的数据吞吐量。
现在有几个问题:)
这是实现最大吞吐量的好设计吗?充分利用 tcp 通道的更好设计是什么?
netty 是这些场景的正确框架吗?(我对 netty 很陌生,但我真的很喜欢框架的简洁抽象/设计!)
这样的设计用netty能实现吗?=>(它是否给我们来自接收站点的这样的信号/事件?)
使用 netty 实现最大吞吐量的最佳设计是什么?
还有其他更适合的框架吗?
欢迎任何想法和注意!
提前谢谢了!!!托比