46
Redis — вообще, и кластер — в частности Гоша Бажуков bazhukov.net @_bugov

DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Embed Size (px)

Citation preview

Page 1: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Redis — вообще,и кластер — в частности

Гоша Бажуков

bazhukov.net @_bugov

Page 2: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Что есть Redis?

Key-value? ≈Memcached?

Page 3: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Redis vs Memcached

Least recently used (LRU)

+/– +

Сохранность + –Типы данных + –

Page 4: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Key-Value?

Key-Key - Value

Page 5: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Key ∩ Key - Value

Page 6: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Key[n] - Value

Page 7: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Что это даёт?

Page 8: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Как обычно используется

Ускоряем то, что едваползает:● кэш● сессии

Page 9: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
Page 10: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Очередь

Page 11: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Или так

Page 12: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Fail

Page 13: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Надежная очередь

Забери справа, положи влево.Сделал? – Удали!

Page 15: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
Page 16: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info
Page 17: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Очередь PubSub

Надёжность Масштабируемость

Легковесность Низкая связанность

Page 18: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Посчитаем!

Page 19: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Множества

Уникальность

Проверка

Объединение

Page 20: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Неделя 1 Неделя 2

Page 21: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Битовые операция

Page 22: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Бита достаточно

user_id = offset

Page 23: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Логическое “ИЛИ” по битовым строкам

Page 24: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

HyperLogLog

Page 25: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

HyperLogLog

● Мат. стат.● Магия● 12 кб

Page 26: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

HyperLogLog Нет объединений, пересечений

Битовые строки Бинарные данные

Множества Самое общее решение

Page 27: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Кластер

Page 28: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Отказоустойчивость?

Page 29: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Sentinels (“стражи”)

Page 30: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

● Мониторинг состояния мастера и реплик

● Уведомления о том, что “всё не так”

● Автоматическая реконфигурация

… с версии 2.6

Чем заняты:

Page 31: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Упал? Голосуем!

NODE_TIMEOUT

QUORUM “стражей”

Большинство

Page 32: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

SLAVEOF NO ONE

Page 33: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Приоритеты “стражей”● Как давно общался с мастером.● Приоритет реплики.● Задержка реплики.● Run ID.

Page 34: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Netsplit

Page 35: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Fail

Page 36: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Failover

Page 37: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Теряем данные min-slaves-to-write

Page 38: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Масштабируемость

Page 39: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Кластер, которого нет

● Обещан в 2011-ом году.● Внезапный PubSub.● Sentinel c 2.6 для отказоустойчивости.● …● 2.8● …● 3.0?

Page 40: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Долгожданный Redis 3

Page 41: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Ноды общаются

Внутренний протокол

Клиент стал умнее

Page 42: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Шардируем

Page 43: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

Считаем слот

Slot = CRC16(key) mod 16384

Page 44: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

“Ложка дёгтя”

Операции на многих ключах

Page 45: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

#HashTag

MSET {dump}.month March {dump}.year 2015

- на одной ноде

Page 46: DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info

bazhukov.net @_bugov

vcccccccccccccczhyujnnnnnn

Особое мнение кота