Генерация уникальных первичных идентификаторов размеров int32 и int64 - PullRequest
2 голосов
/ 05 марта 2011

Я занимаюсь разработкой социального веб-приложения с использованием Java и распределенной базы данных NoSQL (Cassandra). Мне нужно сгенерировать идентификаторы для новых пользователей и сообщений в приложении в размерах 32 бит и 64 бит соответственно.

Из-за построения поверх распределенной платформы наша проблема генерации идентификаторов / ключей стала несколько более сложной. Хотя есть такие решения, как Zookeeper / или «снежинка твиттера», которые старательно пытались облегчить эту боль, но эти решения не кажутся простыми в использовании.

Посмотрев на эти решения с точки зрения верхнего уровня, я чувствую, что выбираю самое простое и наиболее зрелое решение. Использование базы данных MySQL подобно тому, как серверы билетов flickr, приходит мне на ум в качестве первого предпочтения, так как это кажется самым простым решением .

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

Я знаю, что это создаст SPOF вокруг распределенной системы ... но все же я верю, что это было бы самым простым решением для моих первых дней (когда у меня меньше ресурсов с точки зрения капитала и рабочей силы). Когда мое приложение растет, я считаю, что переключение не составит труда, поскольку они не являются тяжелыми данными для передачи. Так что для начального состояния моего приложения, я думаю, MySQL может служить мне наилучшим и простым способом для генерации идентификаторов.

Основные факторы для этого выбора : -

  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 или снежинка? Или каковы могут быть недостатки предлагаемого нынешнего подхода?

Большое спасибо за ваше время!

1 Ответ

1 голос
/ 18 марта 2011

Я знаю, что это создаст SPOF вокруг распределенной системы ... но все же я верю, что это было бы самым простым решением для моих ранних дней

Нет, самый простой *Решение 1006 * заключается в использовании идентификаторов, которые предоставляет ваша распределенная база данных.Этот способ исключает

  • отдельное серверное оборудование для MySQL
  • , установку, настройку и защиту другой операционной системы
  • , установку, настройку и защиту другой базы данных

И вам, вероятно, нужна последовательность намного меньше, чем вы хотите .

Я знаю, что это создаст SPOF вокруг распределенной системы.

Это создаст несколько отдельных точек отказа.Хорошие шансы, что каждая часть серверного оборудования, за исключением, возможно, дисков, является единственной точкой отказа.(Сколько блоков питания вы собираетесь установить там? Сколько дисковых контроллеров? Сколько сетевых карт?) Также существует множество программных точек сбоев.

...