Size: a a a

BY Microsoft .NET User Group

2019 September 12

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Ни к чему не призываю, просто факт такой имеет место.
источник

SK

Siarhei Kurylkin in BY Microsoft .NET User Group
Мы беларусы мирные люди, не баним никого
источник

AT

Alexey Tkachenko in BY Microsoft .NET User Group
да ну, спамеров - регулярно
источник

BP

Bogdan Poznyak in BY Microsoft .NET User Group
Добрый вечер.
Подскажите пожалуйста мб кто-нибудь сталкивался с такой проблемой: есть несколько инстансов приложения и один централизованный кэш(redis) в каждом приложении происходит переодическое обновление значений в кэше, и может случится так что одно из приложений будет сетить в кэш неактуальные значения. т е запросы на обновление определенного ключа были отправлены одновременно с обоих приложений, один запрос с актуальным значением, второй - с устаревшим. По какой либо причине запрос с актуальными данными обновит кэш раньше, а потом придет второй запрос с неактуальными данными и тоже проапдейтит кэш но уже неактельными данными. и по итогу в кэше останеься лежать неактуальное значение. Собственно сам вопрос, как в такой ситуации поддерживать кэш в актуальном состоянии?
источник

A

Andre in BY Microsoft .NET User Group
Использовать очередь например. Ну и что значит актуальное значение, кто последний тот и актуальный.
источник
2019 September 13

A

Anatoly in BY Microsoft .NET User Group
Andre
Использовать очередь например. Ну и что значит актуальное значение, кто последний тот и актуальный.
Это не всегда так
источник

A

Anatoly in BY Microsoft .NET User Group
Bogdan Poznyak
Добрый вечер.
Подскажите пожалуйста мб кто-нибудь сталкивался с такой проблемой: есть несколько инстансов приложения и один централизованный кэш(redis) в каждом приложении происходит переодическое обновление значений в кэше, и может случится так что одно из приложений будет сетить в кэш неактуальные значения. т е запросы на обновление определенного ключа были отправлены одновременно с обоих приложений, один запрос с актуальным значением, второй - с устаревшим. По какой либо причине запрос с актуальными данными обновит кэш раньше, а потом придет второй запрос с неактуальными данными и тоже проапдейтит кэш но уже неактельными данными. и по итогу в кэше останеься лежать неактуальное значение. Собственно сам вопрос, как в такой ситуации поддерживать кэш в актуальном состоянии?
Это сложная задача, решается тоже не просто. Рекомендую книгу Мартина Клепманна
источник

A

Anatoly in BY Microsoft .NET User Group
По сути, это проблема разрешения конфликтов в распределенных системах. Тут миллион решений: просто версия записи, векторные часы, crdt, etc
источник

A

Anatoly in BY Microsoft .NET User Group
Не зная специфики задачи посоветовать что-то сложно.
источник

A

Anatoly in BY Microsoft .NET User Group
А, да, старые добрые транзакции с блокировками - классический способ решения этой проблемы
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Anatoly
А, да, старые добрые транзакции с блокировками - классический способ решения этой проблемы
Ну ток придётся на редисе свои транзакции и блокировки городить?
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Имхо, товарищ выше предложил неплохое решение с очередью. Искоробочная блокировка получается на инфраструктуре очереди.
источник

A

Anatoly in BY Microsoft .NET User Group
Dr. Friedrich von Never
Ну ток придётся на редисе свои транзакции и блокировки городить?
Там из коробки есть
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
А, ок, я не знал.
источник

A

Anatoly in BY Microsoft .NET User Group
Dr. Friedrich von Never
Имхо, товарищ выше предложил неплохое решение с очередью. Искоробочная блокировка получается на инфраструктуре очереди.
Только если last writer wins подходит
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Anatoly
Только если last writer wins подходит
Если у тебя выгребатор из очереди один, то действительно подходит
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Т.к. не будет рейсов
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Ну или балансер умный
источник

A

Anatoly in BY Microsoft .NET User Group
Dr. Friedrich von Never
Если у тебя выгребатор из очереди один, то действительно подходит
Это если ты в очередь дельты пишешь, т.е. команды
источник

A

Anatoly in BY Microsoft .NET User Group
А не конечное состояние
источник