Re[5]: Eventual consistency
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 10.07.18 05:44
Оценка:
Здравствуйте, takTak, Вы писали:
T>я не в курсе, как elasticSearch работает, я тебе о классическом CQRS рассказывал: там всё отправлением сообщений в очереди решается

Давай я пока подведу итоги, верно ль я понял тебя.
1. Можно было бы попытаться сделать через фейк на клиенте, если бы можно было каким-то образом получить от каждого узла БД подтверждение об успешной репликации.
2. Это бы дало возможность видеть собственные отправленные изменения. Но чужие изменения по-прежнему могут "мерцать" — их может быть то видно, то не видно. Конечно, в норме консистетность будет достигнута быстро и вероятность таких проблем минимальна. Но полного решения для просмотра чужих изменений без "мерцания" нет.

Далее, поскольку от Эластика не выйдет получить сообщение об успешном рефреше сегментов, то подход с фейком не сработает (ну или надо ставить дополнительную задержку еще на 1 секунду и молиться). Какие-то другие рабочие подходы есть? Которые не полагаются на ожидание таких сообщений. Например вроде должен работать подход с монотонностью, но он кажется опять требует специальной поддержки в используемой БД? Или можно все же привязать сессию пользователя к конкретному шарду БД (если это поддерживается), а в случае выхода шарда из строя, так и быть, рисковать появлением "мерцания" на какое-то время (да, это опять неполное решение, но если подумать, любое решение с fault tolerance и shared session не даст полной защиты от потери последних данных, если только это не будет некое CP решение — а тогда оно отправит псу под хвост availability и всей системы в целом). Опыта совершенно нет в этом, не представляю, какой путь лучше/общепринятый. А ведь проектов с тем же эластиком пруд пруди (хоть на джаве, хоть на вот этом вот MEAN стеке).

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.