我正在开发一个使用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