使用Cassandra作爲隊列:使用Cassandra作爲隊列
真的那麼糟嗎?
設置:5節點的集羣,所有的操作在仲裁
執行使用DateTieredCompaction應顯著減少墓碑的費用,並讓整個SSTables在一次被丟棄。
- 我們添加的所有消息隊列使用相同的TTL
- 我們基於時間(例如1分鐘間隔)分區信息,並跟蹤讀地位。
- 消耗的消息將被明確刪除。 (只有1個線程提取消息)
- 某些消息可能在被讀取之前被明確刪除(即我們可能在讀取位置之後有墓碑)。 (即最初使用的TTL是一個上限)gc_grace可能會被設置爲0,因爲仲裁讀取將進行阻塞修復(即,我們可以關閉修復,因爲消息僅駐留在1個羣集(DC)中,並且所有操作法定人數))
- 消息只能添加/刪除,不允許更新。
- 在我們的使用案例中,如果墓碑沒有複製它不是什麼大不了的事情,那麼偶爾會多次看到相同的消息。 (我們也可能不會定期運行修復程序,因爲所有操作均在法定人數執行。)
想法?
如果你瞭解它們,就可以避免一些陷阱。看看https://github.com/paradoxical-io/cassieq。 –
有趣的是這與我們的用例幾乎完全相符。 – danomano
請報告任何問題(文檔或其他)devshorts,我有興趣獲得反饋!感謝提到@AdamHolmberg – Jake