【发布时间】:2013-12-12 18:54:23
【问题描述】:
我们为分布式处理构建系统,并希望将 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 实现最大吞吐量的最佳设计是什么?
还有其他更适合的框架吗?
欢迎任何想法和说明!!!
非常感谢提前!!! 托比
【问题讨论】:
标签: java io netty distributed-computing system-design