24
DevCon•12 // msdevcon.ru #msdevcon 23-24 мая, 2012 г. Microsoft

IOP202 Redis in Azure

Embed Size (px)

Citation preview

Page 1: IOP202 Redis in Azure

DevCon•12// msdevcon.ru

#msdevcon

23-24 мая, 2012 г.

Microsoft

Page 2: IOP202 Redis in Azure

// DevCon•12

Redis в Microsoft Azure

Михаил Матвиенко

@mourhoon

Lead Developer at PENXY

Page 3: IOP202 Redis in Azure

#msdevcon

Простыми словами

Что такое Redis?

Page 4: IOP202 Redis in Azure

Что такое Redis?Redis это key-value хранилище с

открытым кодом. Работает с

5 основными типами данных:

Строки

Списки

Множества

Упорядоченные множества

Хэши

Page 5: IOP202 Redis in Azure

NoSQL

Работает в оперативной памяти

1 поток

Очень быстрый (~100,000 queries / sec)

Маленький footprint в памяти (30k lines)

Асинхронный backup на диск

Написан на ANSI C под Linux

Что такое Redis?

Page 6: IOP202 Redis in Azure

#msdevcon

Linux NoSQL Project on Azure

Page 7: IOP202 Redis in Azure

Fork-и, и прочие Linux API

int rdbSaveBackground(char *filename) {

pid_t childpid;

...

if ((childpid = fork()) == 0) {

int retval;

/* Child */

...

} else {

/* Parent */

Page 8: IOP202 Redis in Azure

Как запускать Redis на Azure

Startup taskCygwin

Win32 port (проблемы с производительностью)

Клиенты Redis на .NetServiceStack.Redis (ребята из Mono)

BookSleave (Stack Overflow)

Page 9: IOP202 Redis in Azure

#msdevcon

Но зачем?

Неужели это кому-нибудь нужно?

Page 10: IOP202 Redis in Azure

Сценарии использования

Выгодно для большого (> 30 запросов/сек)

количества запросов:Счетчики (Простые и уникальные)

Рейтинги

Очереди

Publish/Subscribe

Опциональный TTL на каждый ключ – Можно

использовать как кэш

Page 11: IOP202 Redis in Azure

Кто использует Redis:

Page 12: IOP202 Redis in Azure

Задача: сделать back-end для чата

В лабах MS

предлагают

делать так:

Page 13: IOP202 Redis in Azure

Нам виделось так:

Page 14: IOP202 Redis in Azure

Как сделать магию правильно?

Azure

Storage

Azure

Service Bus Memcache Redis

Page 15: IOP202 Redis in Azure

#msdevcon

Запуск redis в Azure

Демо

Page 16: IOP202 Redis in Azure

#msdevcon

Производительность и

масштабирование

Page 17: IOP202 Redis in Azure

Масштабирование Redis

Репликация (Master – Slave):Read scaling

High Availability

ШардированиеWrite scaling

Redis Cluster (alpha) – Resharding, Fault tolerance.

Page 18: IOP202 Redis in Azure

Внутренняя структура кластера

Page 19: IOP202 Redis in Azure

#msdevcon

Плюсы, минусы, подводные

камни.

Page 20: IOP202 Redis in Azure

Проблемы и ограничения

Память на узле может кончиться: политики

поведения

Disk persistence RDB-формат

AOF (append-only fashion)

Пока не все фичи для маштабирования работают из

коробки. Redis cluster не готов даже для Linux.

Page 21: IOP202 Redis in Azure

Поддержка Microsoft

Microsoft Open Technologies (Interoperability

@ Microsoft)Адаптирование проекта под Win32

Избавление от специфики fork-ов в резервном копировании

Адаптирование для Windows Azure – обещают

Page 22: IOP202 Redis in Azure

Краткое сравнение

SQLСкорость

Сотни/тысячи запросов в сек

ACID

Atomicity, Consistency, Isolation,

Durability

SQL синтаксис

Поддержка транзакций

Репликация

Требует lock-ов на кластер, чтобы

не утратить целостность. Долго.

RedisСкорость

Десятки тысяч запросов в сек

BASE

Basically Available, Soft state, Eventual

consistency

Ограниченный набор команд

Поддержка транзакций

Репликация

Благодаря работе в памяти на

порядки быстрее репликации SQL

Page 23: IOP202 Redis in Azure

Полезные материалы

Little Redis Book: http://tinyurl.com/cgm2zd3

Project Home: http://redis.io/

Redis Github: https://github.com/antirez/redis

Page 24: IOP202 Redis in Azure

#msdevcon

Lead Developer at PENXY

Mikhail Matvienko

Наш логотип там ↑