Если вы хотите иметь распределенную систему (то есть «конечную согласованность»), вам нужны люди, ее создание, поддержка и эксплуатация.
Я обнаружил, что есть три класса людей, у которых очень мало проблем с «Возможной последовательностью»:
- Люди с солидным опытом работы в распределенных системах. Они узнали о возможной последовательности Византийских неудач и тому подобном. Если вы понимаете, что Paxos не относится к праздникам, вы, вероятно, один из них.
- Люди, имеющие опыт сетевого программирования. Они могут пропустить теоретические основы, но имеют интуитивное понимание асинхронности и парадигмы «нет глобальных часов и счетчиков». Если у вас есть как минимум 8 книг Ричарда Стивенса , вы, вероятно, одна из них.
- Очень опытные программисты, мало знакомые с RDBMS. На ум приходят ребята из ядра, люди из научных вычислений и игровой индустрии.
В целом, эти люди очень востребованы на рынке труда. Например, около 75% преподавателей в распределенных системах уходят в учреждения, которые управляют большими, самостоятельно разработанными распределенными системами, например фондовые биржи.
Все стало несколько проще с такими предложениями, как Hardoop, SimpleDB и CouchDB, но все еще остается большой проблемой что-то построить на технологии распределенных систем.
С другой стороны, СУБД - это очень хорошая инженерная задача. Они хорошо понимают и опыт работы с ними доступен на рынке труда. Есть много приличных инструментов, возможностей обучения и множество высококвалифицированных специалистов, которые можно арендовать каждый час. Так что подумайте дважды, что вы не можете ужиться с подходом RDBMS - возможно, в сочетании с некоторым хитрым обманом. Я обычно указываю студентам на Lifejournal архитектура .
Для распределенных баз данных гораздо меньше опыта. Именно поэтому вы нашли такой маленький совет.
Если вы полны решимости использовать «Возможную последовательность», я думаю, что помимо незрелых инструментов, основной проблемой является мышление всех участников. Готовы ли ваши пользователи API (кодировщики) и приложения (ваши сотрудники и ваши клиенты) принять несогласованность? Можете ли вы скрыть это от определенных классов пользователей? Мы не привыкли к тому, что компьютеры несовместимы. Что-то есть в наличии или нет. «Возможно» - это не тот ответ, которого ожидают пользователи.
Также имейте в виду, что "возможный" может означать очень долгое время для разработчиков алгоритмов. Как долго вы можете принять несоответствие?
Для приложения корзины покупок вы, возможно, захотите по-настоящему распространяться: используйте браузер клиентов в качестве хранилища данных. При оформлении заказа вы можете отправить корзину в систему пакетной обработки на стороне сервера. Это означает, что для каталога вам нужна только высокая доступность для чтения (проще), а отправка корзины - очень узкий интерфейс без необходимости транзакций. В дальнейшем обработка заказа не имеет (мягких) требований в реальном времени и, таким образом, становится проще.
Кстати: в прошлый раз, когда я проверял архитектуру E-Bay, они были большими в RDBMS, но с тех пор она могла измениться. ( Редактировать: это изменилось - см. Комментарии)