Nano Hash - криптовалюты, майнинг, программирование

Данные не реплицируются с мастера Redis на подчиненные устройства.

Я подключаюсь к небольшому кластеру Redis, размещенному на AWS, который не разделен, у него есть только один главный и 3 подчиненных устройства. У меня были трудности с репликацией, и это простое воспроизведение того, что я пробовал.

Мои кластеры:

172.28.52.18:6379> CLUSTER NODES
cc378ecb71d02c2495e219ce7043ea343eb91c1f 172.28.52.18:6379@1122 myself,slave 6ce7214224036cc42ba272486d9e8fe5d1b11875 0 1610811475000 2 connected
1e17d7794741c7db491a888dc2bca76590b52e64 172.28.53.83:6379@1122 slave 6ce7214224036cc42ba272486d9e8fe5d1b11875 0 1610811476195 2 connected
6ce7214224036cc42ba272486d9e8fe5d1b11875 172.28.53.213:6379@1122 master - 0 1610811474182 2 connected 0-16383
d780dfbb4d33275e50c098032d1cceb1cd368a65 172.28.52.180:6379@1122 slave 6ce7214224036cc42ba272486d9e8fe5d1b11875 0 1610811475189 2 connected

Подключитесь напрямую к мастеру (172.28.53.213 в приведенном выше выводе) и установите некоторые данные:

$ redis-cli -h 172.28.53.213
172.28.53.213:6379> SET key1 value1
OK

Затем подключитесь к одному из рабов:

$ redis-cli -h 172.28.52.180
172.28.52.180:6379> GET key1 value1
(error) MOVED 9189 172.28.53.213:6379

Осколков нет и как я это вижу:

  1. Все слоты (0-16383) принадлежат мастеру
  2. Все ведомые подключены к ведущему.
  3. Все синхронизировано

Поэтому я не понимаю, почему меня перенаправляют на master. Разве у раба не должна быть копия?

Я знаю, что могу подключиться к -c, чтобы перенаправления выполнялись автоматически, но весь смысл репликации должен состоять в том, что перенаправления не нужны!


  • Основываясь на закрытом голосовании (предполагая, что это следует задать при сбое сервера), по крайней мере один человек считает, что это проблема конфигурации сервера? 16.01.2021
  • Я был бы рад получить ответ, что ваши предположения верны, это, похоже, проблема с конфигурацией сервера, если это так. 16.01.2021

Ответы:


1

Обычно ведомые узлы перенаправляют клиентов к полномочному мастеру для хеш-слота, задействованного в данной команде, однако клиенты могут использовать ведомые для масштабирования операций чтения с помощью команды READONLY.

Вы можете прочитать об этом здесь.

Если вы хотите читать из реплики, вы должны выполнить на ней команду READONLY. А чтобы вернуться к старому поведению, есть команда READWRITE.

16.01.2021
  • Какой смысл в реплике, если из нее нельзя прочитать? 17.01.2021
  • Речь идет о доступности. Обнаружение отказа кластера Redis используется для распознавания, когда главный или подчиненный узел больше не доступен для большинства узлов, а затем в ответ на это повышается роль подчиненного устройства до роли главного. 17.01.2021
  • хорошо, но нет смысла повышать ведомое устройство до ведущего, если данные там не реплицируются... 17.01.2021
  • В любом случае, спасибо. Я думал, что пробовал READONLY, и это не сработало. Должно быть, я сделал что-то не так, потому что это происходит сейчас. 17.01.2021

  • 2

    когда вы пытались получить, просто используйте GET key1.

    $ redis-cli -h 172.28.52.180
    172.28.52.180:6379> GET key1 
    

    затем он перенаправит вас к мастеру, который на самом деле держит слот, в котором было сохранено это значение, и вы получите правильный вывод.

    если вы хотите читать из резервной копии или реплики, я боюсь, что резервная копия redis или реплика используются только для обеспечения высокой доступности. Вот почему вы используете шардинг, чтобы снизить нагрузку на каждый сервер. если у вас 4 узла, лучше иметь 2 мастера и 2 реплики. для сегментирования вы можете посмотреть официальный документ: ref

    17.01.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..