Upload
yandex
View
306
Download
4
Embed Size (px)
Citation preview
Elliptics
Игорь Жидков, системный администратор
〉Нужно хранить много данных, делать это распределенно в нескольких датацентрах
〉Количество данных постоянно растет
〉Данные читают, и читают много
〉Не должно быть единой точки отказа
〉Нужно уметь масштабировать систему
3
Задача хранения данных
〉RAID 1 - производительно и надежно
〉RAID 5/6 - надежно и экономично
4
Как насчет RAID?
Помимо ожидаемого износа оборудования и отказа дисков
〉Машинки перезагружаются и ломаются
〉Случаются перебои в работе сети
〉Целиком отключаются датацентры
5
Мир не идеален :(
6
Что такое elliptics
Elliptics Отказоустойчивое распределенное key-value хранилище данных с открытым исходным кодом (распространяется под GPL-лицензией), не имеющее единой точки отказа
7
CAP теорема
CAP теорема - выбери любые два:
〉согласованность данных (consistency)
〉доступность (availability)
〉устойчивость к разделению (partition tolerance)
8
CAP теорема
Elliptics - AP система
Согласованность в конечном счете (eventual consistency) - в любой момент времени данные могут быть неконсистентны, но будут консистентны в практически обозримое время
9
CAP теорема
10
Как работает elliptics
11
Как работает elliptics
12
Как работает elliptics
13
Как работает elliptics
14
Как работает elliptics
15
Как работает elliptics
N - суммарное количество групп
W - количество групп, в которое мы должны записать, чтобы транзакция считалась завершенной
R - количество групп, из которых читаются данные
В Elliptics в зависимости от задач можно использовать несколько типов согласованности:
〉strong consistency - W+R > N медленно, но более надежно
〉weak consistency - W+R<=N - быстро, но менее надежно
16
Отказоустойчивость
17
Как работает elliptics
18
Как работает elliptics
19
Как работает elliptics
20
Как работает elliptics
21
Как работает elliptics
22
Как работает elliptics
23
Как работает elliptics
24
Как работает elliptics
25
Как работает elliptics
Каждый документ хранится по 512-битному ключу (sha512 от названия)
Все ключи - кольцо с диапазоном значений от 0 до 2512
26
DHT в Elliptics
27
DHT в elliptics
echo -n "hypnotoad.jpg" | sha512sum
〉c9b70e9b62923feba1afd890891937c0486d48db99de3cc0e649319e49dfcba70132e7cf073d3f1e66d61255df668e1950edddcb310b4597e37402750a2f071a
echo -n "hypnotoad1.jpg" | sha512sum
〉02c1f6c1413fc3fc522638db83fbd76ddb54413a83e909aeeb7566acbcb19f1008316ff892bf33ab6f8ef4feb19112ae31e14b9d1108270234eeb29cc8cac9f8
28
DHT в elliptics
29
DHT в elliptics
30
DHT в elliptics
31
DHT в elliptics
32
DHT в elliptics
33
DHT в elliptics
34
DHT в elliptics
35
DHT в elliptics
36
DHT в elliptics
37
DHT в elliptics
38
DHT в elliptics
39
DHT в elliptics
40
DHT в elliptics
41
DHT в elliptics
42
DHT в elliptics
43
DHT в elliptics
44
DHT в elliptics
45
DHT в elliptics
46
DHT в elliptics
47
DHT в elliptics
48
DHT в elliptics
49
DHT в elliptics
50
DHT в elliptics
51
DHT в elliptics
52
DHT в elliptics
53
DHT в датацентрах
54
Серверная нода
55
Eblob
56
Eblob
57
Итерирование eblob
58
Итерирование eblob
59
Итерирование eblob
60
Итерирование eblob
Восстановление - обязательный регулярно запускаемый процесс для поддержания консистентности данных в Elliptics
〉Read-recovery - восстановление при чтении
〉Merge - восстановление в рамках одной группы
〉DC - восстановление между группами
61
Восстановление
62
Read-recovery
63
Read-recovery
64
Merge
65
Dc
Легко добавлять ноды, но есть ограничения
〉Итерирование по ноде - длительный ресурсоемкий процесс (упираемся в диск)
〉Перенос и копирование ключей - упирается в сеть
66
Масштабируемость
67
Mediastorage
68
Mediastorage
69
Mediastorage
70
Mediastorage
71
Mediastorage
72
Mediastorage
73
Mediastorage
74
Mediastorage
75
Mediastorage
76
Mediastorage
77
Mediastorage
78
Mediastorage
79
Mediastorage
Обе схемы имеют право на жизнь, у каждой свои преимущества и недостатки
DHT:
+ не надо хранить ключ
+ высокая производительность
+ хорошая отказоустойчивость
- долгое восстановление
- ограниченные возможности масштабирования
80
Итоги
Mediastorage:
+ Легко масштабируется
+ Хорошая отказоустойчивость
+ Гибкость, удобство восстановления
- Нет чистого key-value, необходимо хранить couple
81
Итоги
Спасибо за внимание!
https://tech.yandex.ru/elliptics/
https://github.com/reverbrain/elliptics
https://github.com/yandex/mastermind
http://reverbrain.com/elliptics/
83
Ссылки