Жидков Игорь - elliptics

83

Upload: yandex

Post on 02-Jul-2015

300 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Жидков Игорь - Elliptics
Page 2: Жидков Игорь - Elliptics

Elliptics

Игорь Жидков, системный администратор

Page 3: Жидков Игорь - Elliptics

〉Нужно хранить много данных, делать это распределенно в нескольких датацентрах

〉Количество данных постоянно растет

〉Данные читают, и читают много

〉Не должно быть единой точки отказа

〉Нужно уметь масштабировать систему

3

Задача хранения данных

Page 4: Жидков Игорь - Elliptics

〉RAID 1 - производительно и надежно

〉RAID 5/6 - надежно и экономично

4

Как насчет RAID?

Page 5: Жидков Игорь - Elliptics

Помимо ожидаемого износа оборудования и отказа дисков

〉Машинки перезагружаются и ломаются

〉Случаются перебои в работе сети

〉Целиком отключаются датацентры

5

Мир не идеален :(

Page 6: Жидков Игорь - Elliptics

6

Что такое elliptics

Elliptics Отказоустойчивое распределенное key-value хранилище данных с открытым исходным кодом (распространяется под GPL-лицензией), не имеющее единой точки отказа

Page 7: Жидков Игорь - Elliptics

7

CAP теорема

CAP теорема - выбери любые два:

〉согласованность данных (consistency)

〉доступность (availability)

〉устойчивость к разделению (partition tolerance)

Page 8: Жидков Игорь - Elliptics

8

CAP теорема

Page 9: Жидков Игорь - Elliptics

Elliptics - AP система

Согласованность в конечном счете (eventual consistency) - в любой момент времени данные могут быть неконсистентны, но будут консистентны в практически обозримое время

9

CAP теорема

Page 10: Жидков Игорь - Elliptics

10

Как работает elliptics

Page 11: Жидков Игорь - Elliptics

11

Как работает elliptics

Page 12: Жидков Игорь - Elliptics

12

Как работает elliptics

Page 13: Жидков Игорь - Elliptics

13

Как работает elliptics

Page 14: Жидков Игорь - Elliptics

14

Как работает elliptics

Page 15: Жидков Игорь - Elliptics

15

Как работает elliptics

Page 16: Жидков Игорь - Elliptics

N - суммарное количество групп

W - количество групп, в которое мы должны записать, чтобы транзакция считалась завершенной

R - количество групп, из которых читаются данные

В Elliptics в зависимости от задач можно использовать несколько типов согласованности:

〉strong consistency - W+R > N медленно, но более надежно

〉weak consistency - W+R<=N - быстро, но менее надежно

16

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

Page 17: Жидков Игорь - Elliptics

17

Как работает elliptics

Page 18: Жидков Игорь - Elliptics

18

Как работает elliptics

Page 19: Жидков Игорь - Elliptics

19

Как работает elliptics

Page 20: Жидков Игорь - Elliptics

20

Как работает elliptics

Page 21: Жидков Игорь - Elliptics

21

Как работает elliptics

Page 22: Жидков Игорь - Elliptics

22

Как работает elliptics

Page 23: Жидков Игорь - Elliptics

23

Как работает elliptics

Page 24: Жидков Игорь - Elliptics

24

Как работает elliptics

Page 25: Жидков Игорь - Elliptics

25

Как работает elliptics

Page 26: Жидков Игорь - Elliptics

Каждый документ хранится по 512-битному ключу (sha512 от названия)

Все ключи - кольцо с диапазоном значений от 0 до 2512

26

DHT в Elliptics

Page 27: Жидков Игорь - Elliptics

27

DHT в elliptics

Page 28: Жидков Игорь - Elliptics

echo -n "hypnotoad.jpg" | sha512sum

〉c9b70e9b62923feba1afd890891937c0486d48db99de3cc0e649319e49dfcba70132e7cf073d3f1e66d61255df668e1950edddcb310b4597e37402750a2f071a

echo -n "hypnotoad1.jpg" | sha512sum

〉02c1f6c1413fc3fc522638db83fbd76ddb54413a83e909aeeb7566acbcb19f1008316ff892bf33ab6f8ef4feb19112ae31e14b9d1108270234eeb29cc8cac9f8

28

DHT в elliptics

Page 29: Жидков Игорь - Elliptics

29

DHT в elliptics

Page 30: Жидков Игорь - Elliptics

30

DHT в elliptics

Page 31: Жидков Игорь - Elliptics

31

DHT в elliptics

Page 32: Жидков Игорь - Elliptics

32

DHT в elliptics

Page 33: Жидков Игорь - Elliptics

33

DHT в elliptics

Page 34: Жидков Игорь - Elliptics

34

DHT в elliptics

Page 35: Жидков Игорь - Elliptics

35

DHT в elliptics

Page 36: Жидков Игорь - Elliptics

36

DHT в elliptics

Page 37: Жидков Игорь - Elliptics

37

DHT в elliptics

Page 38: Жидков Игорь - Elliptics

38

DHT в elliptics

Page 39: Жидков Игорь - Elliptics

39

DHT в elliptics

Page 40: Жидков Игорь - Elliptics

40

DHT в elliptics

Page 41: Жидков Игорь - Elliptics

41

DHT в elliptics

Page 42: Жидков Игорь - Elliptics

42

DHT в elliptics

Page 43: Жидков Игорь - Elliptics

43

DHT в elliptics

Page 44: Жидков Игорь - Elliptics

44

DHT в elliptics

Page 45: Жидков Игорь - Elliptics

45

DHT в elliptics

Page 46: Жидков Игорь - Elliptics

46

DHT в elliptics

Page 47: Жидков Игорь - Elliptics

47

DHT в elliptics

Page 48: Жидков Игорь - Elliptics

48

DHT в elliptics

Page 49: Жидков Игорь - Elliptics

49

DHT в elliptics

Page 50: Жидков Игорь - Elliptics

50

DHT в elliptics

Page 51: Жидков Игорь - Elliptics

51

DHT в elliptics

Page 52: Жидков Игорь - Elliptics

52

DHT в elliptics

Page 53: Жидков Игорь - Elliptics

53

DHT в датацентрах

Page 54: Жидков Игорь - Elliptics

54

Серверная нода

Page 55: Жидков Игорь - Elliptics

55

Eblob

Page 56: Жидков Игорь - Elliptics

56

Eblob

Page 57: Жидков Игорь - Elliptics

57

Итерирование eblob

Page 58: Жидков Игорь - Elliptics

58

Итерирование eblob

Page 59: Жидков Игорь - Elliptics

59

Итерирование eblob

Page 60: Жидков Игорь - Elliptics

60

Итерирование eblob

Page 61: Жидков Игорь - Elliptics

Восстановление - обязательный регулярно запускаемый процесс для поддержания консистентности данных в Elliptics

〉Read-recovery - восстановление при чтении

〉Merge - восстановление в рамках одной группы

〉DC - восстановление между группами

61

Восстановление

Page 62: Жидков Игорь - Elliptics

62

Read-recovery

Page 63: Жидков Игорь - Elliptics

63

Read-recovery

Page 64: Жидков Игорь - Elliptics

64

Merge

Page 65: Жидков Игорь - Elliptics

65

Dc

Page 66: Жидков Игорь - Elliptics

Легко добавлять ноды, но есть ограничения

〉Итерирование по ноде - длительный ресурсоемкий процесс (упираемся в диск)

〉Перенос и копирование ключей - упирается в сеть

66

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

Page 67: Жидков Игорь - Elliptics

67

Mediastorage

Page 68: Жидков Игорь - Elliptics

68

Mediastorage

Page 69: Жидков Игорь - Elliptics

69

Mediastorage

Page 70: Жидков Игорь - Elliptics

70

Mediastorage

Page 71: Жидков Игорь - Elliptics

71

Mediastorage

Page 72: Жидков Игорь - Elliptics

72

Mediastorage

Page 73: Жидков Игорь - Elliptics

73

Mediastorage

Page 74: Жидков Игорь - Elliptics

74

Mediastorage

Page 75: Жидков Игорь - Elliptics

75

Mediastorage

Page 76: Жидков Игорь - Elliptics

76

Mediastorage

Page 77: Жидков Игорь - Elliptics

77

Mediastorage

Page 78: Жидков Игорь - Elliptics

78

Mediastorage

Page 79: Жидков Игорь - Elliptics

79

Mediastorage

Page 80: Жидков Игорь - Elliptics

Обе схемы имеют право на жизнь, у каждой свои преимущества и недостатки

DHT:

+ не надо хранить ключ

+ высокая производительность

+ хорошая отказоустойчивость

- долгое восстановление

- ограниченные возможности масштабирования

80

Итоги

Page 81: Жидков Игорь - Elliptics

Mediastorage:

+ Легко масштабируется

+ Хорошая отказоустойчивость

+ Гибкость, удобство восстановления

- Нет чистого key-value, необходимо хранить couple

81

Итоги

Page 82: Жидков Игорь - Elliptics

Спасибо за внимание!

Page 83: Жидков Игорь - Elliptics

https://tech.yandex.ru/elliptics/

https://github.com/reverbrain/elliptics

https://github.com/yandex/mastermind

http://reverbrain.com/elliptics/

83

Ссылки