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