我正在開發一個使用Java和分佈式的noSQL DB(Cassandra)的社交Web應用程序。 我需要爲應用程序中的新用戶和帖子分別生成32位和64位大小的ID。生成int32和int64大小的唯一主要ID
由於建立在分佈式平臺之上,所以我們生成id/keys的問題變得稍微複雜一些。雖然已經有像Zookeeper /或twitter的雪花這樣的解決方案可以幫助緩解這種痛苦,但這些解決方案似乎並不簡單。
從頂層視圖看這些解決方案後,我覺得要用最簡單的解決方案和最成熟的解決方案。 像flickr票務服務器一樣使用MySQL數據庫,我認爲它是第一選擇,因爲它似乎是最簡單的解決方案。
http://code.flickr.com/blog/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/
我知道,這將創建一個圍繞一個分佈式系統SPOF ..但我依然相信這將是我早年最簡單的解決方案(當我在資金方面有更少的資源和人力)。當我的應用程序增長時,我認爲切換並不困難,因爲它們不會傳輸大量數據。所以對於我的應用程序的初期狀態,我猜MySQL可以以最好最簡單的方式爲我生成Ids。
這樣選擇的主要因素: -
1. Easier Implementation
2. Easy switching anytime in the future
3. Mature
4. MySQL may be required for our other needs as well, already
我想使用一個MySQL服務器最初後來改用喜歡兩臺服務器作爲Flickr的序刪除SPOF解決方案。
有人可以指出當我考慮切換到像zookeeper或snowflake這樣的替代解決方案時可能會出現什麼問題嗎?或者當前提出的方法可能存在什麼缺點?
非常感謝您的時間!
您可以使用UUID。 – 2011-03-05 05:06:15
我想保持我的ID爲32位和64位的大小隻有 – 2011-03-05 05:20:06
,也希望某種排序 – 2011-03-05 05:20:34