Случайный () экземпляр в веб-ферме
Я запускаю приложение на нескольких веб-серверах, которые обмениваются данными с распределенным кластером кэширования в памяти, где я генерирую эксклюзивные идентификаторы блокировки на сервере приложений - проблема заключается в том, что при высокой степени параллелизма параллельного выполнения возможно, что более одного выполнение на всех серверах будет генерировать одно и то же значение псевдослучайной блокировки.
Идея заключалась бы в том, чтобы инициировать один экземпляр класса Random для каждого пула приложений, используя увеличивающееся начальное число в кластере распределенного кэширования, и повторно заполнять рандомизатор после того, как каждый вспомогательный метод для генерирования потокобезопасного случайного числа достигнет определенного числа вызовы.
Интересно посмотреть, какие у вас будут мысли по этому поводу.
1 ответ
Random
это просто - СЛУЧАЙНО. Не гарантированно быть уникальным. Бросок кубика - пример случайного события, но вы можете получить тот же результат 6 из 6 раз.
GUID
объекты (почти) гарантированно будут уникальными, поэтому просто используйте их.