2011-07-01 28 views
1

我想保持一組計數器的容錯數據存儲具有以下屬性:容錯計數器

  • 可以從二郎
  • 生產準備
  • 容錯它溝通開箱即用(多服務器和無滾你自己的主從有心計)
  • 計數器的數量是動態的(比方說從1K到100K)

我願意交易C的AP。你可能會認爲櫃檯只在增加。事情我已經考慮:

了Riak

我認爲一個可以嘗試在讀取時打開allow_mult,和聚合兄弟姐妹。這可能適用於套牌,但我不確定它是否適用於櫃檯。

riak_zab

在寫這篇文章它的時候不是生產做好準備。

回答

2

有一些櫃檯代碼statebox的一個分支,我一直在原型: https://github.com/mochi/statebox/tree/counters

這可以結合很方便地使用了Riak。

它應該可以工作,但是我還沒有用它寫一個應用程序,所以它不在master上。不適合你的生產準備目標,但沒有什麼會(除了可能Mnesia,但也有其他問題)。

+0

太棒了。最近我開始查看statebox,但我沒有注意到counter分支。幸運的是,我明天不需要這個,所以我會等待它升級爲主。感謝您創建該項目 - 它看起來非常有用。 –

+0

只需要在這裏注意,櫃檯分支終於降落在主人身上。我們目前沒有在生產中使用它,但它有100%的測試覆蓋率和一些文檔。 –

0

使用ZooKeeper。您將使用一個端口在erlang中運行zk c客戶端,但它可以滿足您的其他要求。一個簡單的解決方案是使用zk中的Sequential節點,但也有其他可行的方法。

+0

不明白downvote的原因,但如果有人可以澄清,我很樂意編輯答案。 – manku

+0

我也不確定。我對動物園管理員的有限理解是,由於嚴格的排序,它是CP而不是A.這對於管理不經常更改但對計數器可能很糟糕的狀態非常有用。 –

+0

你介意擴展你的計數器用例嗎? Zookeeper確實提供了A - 它將成功響應或拒絕響應。它以合奏模式運行,只要n/2 + 1節點合起來,合奏就會繼續運行。 – manku