CLUSTER
CLUSTER SHARDS
CLUSTER SHARDS
- Доступно с версии:
- 7.0.0
- Сложность по времени:
- O(N), где N — общее количество узлов кластера
- Категории ACL:
-
@slow,
CLUSTER SHARDS возвращает подробности о фрагментах кластера. Фрагмент определяется как набор узлов, обслуживающих один и тот же набор слотов и реплицирующих друг друга. В данный момент фрагмент может иметь только одного мастера, но может иметь несколько или ни одного реплики. Возможно, что фрагмент не обслуживает ни одного слота, но при этом имеет реплики.
Эта команда заменяет команду CLUSTER SLOTS, предоставляя более эффективное и расширяемое представление кластера.
Команда подходит для использования библиотеками клиентов Redis Cluster для понимания топологии кластера. Клиент должен выполнить эту команду при запуске, чтобы получить карту, связывающую слоты хеш-таблицы кластера с фактической информацией об узле. Эта карта должна использоваться для направления команд на узел, который, скорее всего, обслуживает слот, связанный с данной командой. В случае, если команда отправлена на неправильный узел и получено перенаправление «-MOVED», эта команда может быть использована для обновления топологии кластера.
Команда возвращает массив фрагментов, причем каждый фрагмент содержит два поля, «slots» и «nodes».
Поле «slots» — это список диапазонов слотов, обслуживаемых этим фрагментом, хранящихся как пара целых чисел, представляющих начальный и конечный слоты диапазонов включительно. Например, если узел владеет слотами 1, 2, 3, 5, 7, 8 и 9, диапазоны слотов будут храниться как [1-3], [5-5], [7-9]. Поле «slots» будет, следовательно, представлено следующим списком целых чисел.
1) 1) "slots"
2) 1) (integer) 1
2) (integer) 3
3) (integer) 5
4) (integer) 5
5) (integer) 7
6) (integer) 9
Поле «nodes» содержит список всех узлов внутри фрагмента. Каждый отдельный узел — это карта атрибутов, описывающих узел. Некоторые атрибуты необязательны, и в будущем могут быть добавлены дополнительные атрибуты. Текущий список атрибутов:
- id: Уникальный идентификатор узла для этого узла.
- endpoint: Предпочитаемый конечный пункт для доступа к узлу, см. ниже информацию о возможных значениях этого поля.
- ip: IP-адрес для отправки запросов этому узлу.
- hostname (необязательно): Объявленное имя хоста для отправки запросов этому узлу.
- port (необязательно): TCP-порт (без TLS) узла. По крайней мере, один из портов (port или tls-port) будет присутствовать.
- tls-port (необязательно): TLS-порт узла. По крайней мере, один из портов (port или tls-port) будет присутствовать.
- role: Роль репликации этого узла.
- replication-offset: Смещение репликации этого узла. Эта информация может быть использована для отправки команд наиболее актуальным репликам.
- health: Либо
online, либоfailed, либоloading. Эта информация должна использоваться для определения, на какие узлы следует отправлять трафик. Состояние здоровьяloadingдолжно использоваться для того, чтобы узнать, что узел в данный момент не может обслуживать трафик, но может быть доступен в будущем.
Конечный пункт, наряду с портом, определяет расположение, которое клиенты должны использовать для отправки запросов для данного слота. Значение NULL для конечного пункта указывает, что у узла неизвестный конечный пункт, и клиент должен подключиться к тому же конечному пункту, который он использовал для отправки команды CLUSTER SHARDS, но с портом, возвращённым командой. Эта конфигурация неизвестного конечного пункта полезна, когда узлы Redis находятся за балансировщиком нагрузки, конечный пункт которого Redis не знает. Какой конечный пункт установлен, определяется параметром конфигурации cluster-preferred-endpoint-type.
Возврат
Ответ массивом: вложенный список карты диапазонов хеш-таблиц и узлов фрагмента.
Примеры
> CLUSTER SHARDS
1) 1) "slots"
2) 1) (integer) 0
2) (integer) 5460
3) "nodes"
4) 1) 1) "id"
2) "e10b7051d6bf2d5febd39a2be297bbaea6084111"
3) "port"
4) (integer) 30001
5) "ip"
6) "127.0.0.1"
7) "endpoint"
8) "127.0.0.1"
9) "role"
10) "master"
11) "replication-offset"
12) (integer) 72156
13) "health"
14) "online"
2) 1) "id"
2) "1901f5962d865341e81c85f9f596b1e7160c35ce"
3) "port"
4) (integer) 30006
5) "ip"
6) "127.0.0.1"
7) "endpoint"
8) "127.0.0.1"
9) "role"
10) "replica"
11) "replication-offset"
12) (integer) 72156
13) "health"
14) "online"
2) 1) "slots"
2) 1) (integer) 10923
2) (integer) 16383
3) "nodes"
4) 1) 1) "id"
2) "fd20502fe1b32fc32c15b69b0a9537551f162f1f"
3) "port"
4) (integer) 30003
5) "ip"
6) "127.0.0.1"
7) "endpoint"
8) "127.0.0.1"
9) "role"
10) "master"
11) "replication-offset"
12) (integer) 72156
13) "health"
14) "online"
2) 1) "id"
2) "6daa25c08025a0c7e4cc0d1ab255949ce6cee902"
3) "port"
4) (integer) 30005
5) "ip"
6) "127.0.0.1"
7) "endpoint"
8) "127.0.0.1"
9) "role"
10) "replica"
11) "replication-offset"
12) (integer) 72156
13) "health"
14) "online"
3) 1) "slots"
2) 1) (integer) 5461
2) (integer) 10922
3) "nodes"
4) 1) 1) "id"
2) "a4a3f445ead085eb3eb9ee7d8c644ec4481ec9be"
3) "port"
4) (integer) 30002
5) "ip"
6) "127.0.0.1"
7) "endpoint"
8) "127.0.0.1"
9) "role"
10) "master"
11) "replication-offset"
12) (integer) 72156
13) "health"
14) "online"
2) 1) "id"
2) "da6d5847aa019e9b9d2a8aa24a75f856fd3456cc"
3) "port"
4) (integer) 30004
5) "ip"
6) "127.0.0.1"
7) "endpoint"
8) "127.0.0.1"
9) "role"
10) "replica"
11) "replication-offset"
12) (integer) 72156
13) "health"
14) "online"
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/cluster-shards/