2

我正在使用 Java 和分布式 noSQL DB(Cassandra) 开发一个社交网络应用程序。 我需要为应用程序上的新用户和帖子分别生成 32 位和 64 位大小的 ID。

由于构建在分布式平台之上,我们生成 ids/keys 的问题变得有些复杂。尽管已经出现了诸如 Zookeeper/ 或 twitter 的雪花之类的解决方案,它们一直在努力减轻这种痛苦,但这些解决方案似乎并不容易使用。

从顶层的角度看这些解决方案后,我觉得是最简单、最成熟的解决方案。像 flickr 的票务服务器那样使用 MySQL 数据库是我的首选,因为它似乎是最简单的解决方案

http://code.flickr.com/blog/2010/02/08/ticket-servers-distributed-unique-primary-keys-on-the-cheap/

我知道这将围绕分布式系统创建 SPOF.. 但我仍然相信这将是我早期最简单的解决方案(当我在资本和人力方面的资源较少时)。当我的应用程序增长时,我相信切换不会很困难,因为它们不需要传输大量数据。所以对于我的应用程序的婴儿期,我猜 MySQL 可以以最好和最简单的方式为我服务来生成 Id。

这种选择的主要因素:-

  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 或雪花等替代解决方案时,有人能指出以后可能会出现什么问题吗?或者当前提议的方法可能有哪些缺点?

非常感谢您的时间!

4

1 回答 1

1

我知道这将围绕分布式系统创建 SPOF.. 但我仍然相信这将是我早期最简单的解决方案

不,最简单的解决方案是使用分布式 dbms 提供的标识符。这样可以避免

  • MySQL 的独立服务器硬件
  • 安装、配置和保护另一个操作系统
  • 安装、配置和保护另一个 dbms

而且您可能需要的顺序性比您想要的要少得多。

我知道这将围绕分布式系统创建 SPOF。

它将产生多个单点故障。很可能每个服务器硬件,除了可能的磁盘,都是单点故障。(您要在那里安装多少个电源?多少个磁盘控制器?多少个 NIC?)还有大量的软件单点故障。

于 2011-03-17T22:58:19.687 回答