我們正試圖實施一個網絡應用程序,其中Apache Storm
。達到Apache Storm的限制
應用
接收廣告請求一個巨大的負荷(100 TPS
- 一百交易/秒),
使得他們一些簡單的計算,然後
店結果中的NoSQL數據庫
與10毫秒的最大延遲。
我們使用Cassandra
作爲其書寫功能的接收器。
然而,我們已經overpassed的8 ms
的要求,我們在100ms
。
我們試圖通過使用螺栓的並行性來最小化緩衝區(Disruptor緩衝區)的大小並平衡拓撲結構。
但是我們仍然在20ms
。
隨着4名工人(8核/ 16GB)我們在20k TPS
這仍然是非常低的。
是否有優化的任何建議或
是我們剛剛達到Apache Storm
(的Java
限制)的限制?
你能解釋一下爲什麼你需要10ms的延遲?是另一個應該從卡桑德拉讀取的系統,並對結果做些什麼? –
好吧,最好的是風暴將結果發送到遠程服務器。這可以通過另一個內部服務器從Cassandra讀取數據並將其發送到遠程服務器來完成。但是,這些數據應該已經在卡桑德拉,收到請求後至多10毫秒。 –
然後你有你的答案,風暴應該直接發送數據到應該使用它的系統(並且如果你想爲其他原因存儲cassandra)。這將允許您在關鍵的低延遲系統中切入一步。 –