Давайте посмотрим на два вопроса ...
Задание вопросов Когда я создаю вопрос, я сразу вижу его и могу его редактировать.В CQRS я запускаю команду типа «AskQuestion», и создается событие с именем «QuestionAsked».В конце концов, вопрос переносится в денормализованное хранилище данных.Но опыт SO мгновенен.Возможно ли это с CQRS?
Этого легко достичь.Каждый ли пользователь должен видеть вопрос немедленно или только тот, кто его задает?Если это покажется всем за 1-2 секунды, это что-то изменит?Чаще всего в последовательно согласованных системах существует разница между пользователем, отправляющим запрос, и любым другим пользователем.
Голосование Мои голоса отражаются немедленно.В CQRS я мог бы представить, что эти команды / события в конечном итоге перемещаются через шину событий в хранилище чтения.Но SO дает мне информацию немедленно.
Предоставляет ли SO ее немедленно?Давайте попробуем другой пример, Facebook.Когда вы нажимаете «нравится» на что-то, это сразу же появляется в ваших лайках?Уловки пользовательского интерфейса, такие как установка больших пальцев, заставляют вас чувствовать, что это так.Другой пример, амазонка.Когда вы нажимаете добавить в корзину, она сразу попадает в вашу корзину?Визуальные представления, такие как «добавлено в корзину» или «палец вверх», заставляют пользователя чувствовать себя так, как будто это сделано.
Существует множество подобных трюков, которые могут заставить в конечном итоге непротиворечивую систему чувствовать себя как полностью непротиворечивая система.,
В качестве примечания многие люди думают, что такого рода вещи сделаны для масштабируемости (что иногда имеет место).Чаще всего они делаются для надежности.Вопрос возникает, если XYZ не работает.Хотите ли вы странные рандомизированные локальные сбои или вы хотите рисковать широко распространенными сбоями?Один из лучших примеров, которые можно увидеть здесь, это проверить Amazon на предмет любезной покупки, странно, что они могут обработать вашу кредитную карту примерно за 100 мс, в то время как все остальные занимают 3-5 секунд :) Что произойдет, если их система обработки кредитных карт не работает