Шаблон Redlock с Azure рекомендациями Redis - PullRequest
0 голосов
/ 16 марта 2020

Было довольно много вопросов по топи c Redlock и Azure Redis, в частности стандартного и премиального уровня, который представляет собой кластер redis с количеством шардов от 2 до 10, но то, чего у меня нет найдено четкое руководство по наилучшей практике. То, что я обнаружил, - это сочетание требований в не реплицированной, не сбалансированной по нагрузке модели и того, что я обнаружил в своем собственном тестировании и на выносах, но был бы признателен, если бы кто-то с более глубокими знаниями шаблона и Azure Redis чтобы обеспечить некоторое понимание.

Все это тестирование было выполнено с использованием C#, StackExchangeRedis и RedLock. NET.

Я экспериментировал с вашей реализацией RedLock в распределенной микро- Сервисная архитектура размещена в Azure и использует Azure Redis. До сих пор я использовал один RedLockEndPoint, указывающий на Azure Redis P1 с двумя шардами.

Балансировщик нагрузки для Azure Redis гарантирует, что мастер всегда доступен для записи. Что неясно в показаниях topi c по реализации шаблона redlock, так это то, что в таких случаях, как Azure Redis, независимо от количества сегментов кластера (т. Е. Azure Redis P1 w / 2 shards), вам все еще нужно запустить как минимум три кластера независимо друг от друга (т.е. 3 различных Azure кластера Redis с 2 осколками каждый, каждый из которых представлен RedLockEndPoint)?

Мой инстинкт таков: да, это так, потому что из-за того, что если запись в мастер, балансировка нагрузки или нет, успешна, но мастер переходит в автономный режим до репликации, независимо от балансировщика нагрузки перед ним, то эта блокировка будет «потеряна», так как подчиненный, который LB перезапускает цели не будут знать об этом. Это, конечно, при условии, что LB не играет роли в распределении по сегментам и что подчиненные сегменты засеваются ведущим, но это будет меньше конфигурации master / slave и больше конфигурации master-slave без распределения посев, но я не верю, что это происходит в Azure Redis.

Что необходимо минимум и, если отличается, рекомендуется количество Azure экземпляров Redis, необходимых для достижения оптимального уровня безопасности, который обеспечивает Redlock?

...