我們構建用於分佈式處理的系統,並希望爲網絡I/O堆棧使用netty(4.0)。分佈式處理中的最大吞吐量(使用netty 4.0)
以下情況:我們得到了一個生產者任務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來實現最大吞吐量的最佳設計?
有沒有其他的框架更合適?
任何想法和說明是值得歡迎的!
非常感謝提前! 託比