Redis Sentinel и ShardedJedis для ShardedJedisPipeline
Я изначально использовал Redis
в кластерном режиме на производстве. Но позже я понял, что если я использую Redis independent servers
с помощью ShardedJedis java API
, Я могу использовать ShardedJedisPipeline
который имеет лучшую производительность по очевидным причинам. Но при использовании Redis Server
для поддержания автоматического переключения при сбое и высокой доступности, я должен использовать Redis Sentinel
, Итак, я начал изучать Sentinel
, Но при этом начальный POC
Я узнал, что не могу использовать ShardedJedis
а также Sentinel
в то же время.
Теперь кажется, что все мои пути закрыты как
Redis Cluster
не поддерживает конвейер- Я не могу добиться высокой доступности и автоматического переключения при сбое без
Sentinel
- Я не могу использовать
Sentinel
сShardedJedis
,
Пожалуйста, исправьте меня, если я где-то ошибаюсь, и предложите мне лучшую стратегию для достижения производительности, а также высокой доступности и автоматического переключения при сбое.
2 ответа
Говорят в общих чертах:
- Redis Cluster поддерживает конвейеризацию так же, как Redis Standalone. Важной частью здесь является попадание в правый узел при выдаче команд с ключами. Команды без ключей (например,
MULTI
или жеEXEC
) не нужны для Redis Cluster - HA-Part не на 100% правильный. Несмотря на то, что Redis Cluster не имеет HA-Registry, как Redis Sentinel, сам кластер поддерживает топологию. Если используются ведущие и ведомые устройства, нет ничего сложного в переключении клиента на новый хозяин. Единственный прием - найти подходящий момент и соответствующим образом обновить вид кластера.
AFAIK, Redisson имеет автоматический механизм обновления топологии. Я не уверен, регулярно ли Jedis обновляет свой вид кластера, но это можно сделать вручную. у салата есть функция автоматического переподключения, и автоматическое обновление представления кластера запланировано на выпуск 3.3
НТН.
Необходимо учитывать поведение Redis Cluster (Redis Cluster может реагировать на перенаправление триггера при любой операции).
Каждый процесс Redis Cluster действует как обычный процесс Redis, поэтому он поддерживает конвейерную обработку. Но это не гарантирует, что мы в безопасности с конвейерной передачей с несколькими узлами.
Это было долгое обсуждение, поэтому я прикрепляю ссылку, которую я разместил в Redis Google Groups о Redis Cluster with Pipeline. Пожалуйста, обратитесь сюда с более подробной информацией.