27
Про HA-кластеры и нашу реализацию в Tarantool/SilverBox Юрий Востриков, Mail.Ru Group РИТ++, 03/04/2012

Про Ha-кластеры и нашу реализацию в Tarantool (Юрий Востриков)

  • Upload
    ontico

  • View
    1.287

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Про HA-кластеры и нашу реализацию в Tarantool/SilverBox

Юрий Востриков, Mail.Ru Group

РИТ++, 03/04/2012

Page 2: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Что такое Tarantool/SilverBox

I FrameworkI InMemory DBI WALI Tuple based

(𝑎1, 𝑎2, 𝑎3, ..., 𝑎𝑛)

Page 3: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Варианты обычной репликации

I Синхронная — АсинхроннаяI Row based — Command basedI Master-Master – Master-Slave

Page 4: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Варианты обычной репликации

I Синхронная — Асинхроннаяreplica

master

I Row based — Command basedI Master-Master – Master-Slave

Page 5: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Варианты обычной репликации

I Синхронная — Асинхроннаяreplica

master

replica

master

I Row based — Command basedI Master-Master – Master-Slave

Page 6: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Варианты обычной репликации

I Синхронная — Асинхроннаяreplica

master

replica

master

I Row based — Command basedupdate users set passwd = ’secret’;

I Master-Master – Master-Slave

Page 7: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Как репликация сделана в Tarantool/SilverBox

I АсинхроннаяI Command based, но: одна команда = одна строкаI Master-Slave

Page 8: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Кластеры высокой доступности

𝑐𝑙𝑖𝑒𝑛𝑡1

𝑐𝑙𝑖𝑒𝑛𝑡2

𝑐𝑙𝑖𝑒𝑛𝑡𝑛

𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒

𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒

хитрая магия

Page 9: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Кластеры высокой доступности

𝑐𝑙𝑖𝑒𝑛𝑡1

𝑐𝑙𝑖𝑒𝑛𝑡2

𝑐𝑙𝑖𝑒𝑛𝑡𝑛

𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒

𝑟𝑒𝑞𝑢𝑒𝑠𝑡/𝑟𝑒𝑠𝑝𝑜𝑛𝑠𝑒

хитрая магия2PC/3PC/Paxos

Page 10: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Теорема Брюера

I Consistency (согласованность данных)I Availability (доступность)I Partition tolerance (устойчивость к разделению)

𝑃𝑇 ⇒ ¬(𝐴 ∧ 𝐶)

Page 11: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Теорема Брюера

I Consistency (согласованность данных)I Availability (доступность)I Partition tolerance (устойчивость к разделению)

𝑃𝑇 ⇒ ¬(𝐴 ∧ 𝐶)

Выбираем только между PA или PC

Page 12: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Типы ошибок

I Fail stop (отказ без восстановления)I Fail recover (отказ с восстановлением)I Byzantine fail (византийский отказ)

Page 13: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Консенсус

Распределeнная система = консенсус

Page 14: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Консенсус

Распределeнная система = консенсус

FLP result: в асинхронных сетях при наличие сбоев консенсус можетдостигаться бесконечно долго.

Page 15: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

2-х фазный коммит

𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

𝑐𝑜𝑚𝑚𝑖𝑡/𝑎𝑏𝑜𝑟𝑡

𝑎𝑐𝑘

Page 16: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

2-х фазный коммит

𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

Нельзя 𝑐𝑜𝑚𝑚𝑖𝑡: 𝑛𝑜𝑑𝑒 могпроголосовать за 𝑎𝑏𝑜𝑟𝑡

𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

𝑐𝑜𝑚𝑚𝑖𝑡

Нельзя 𝑎𝑏𝑜𝑟𝑡: 𝑛𝑜𝑑𝑒 ужезавершил 𝑐𝑜𝑚𝑚𝑖𝑡

Page 17: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

3-х фазный коммит

𝑐𝑜𝑜𝑟𝑑𝑖𝑛𝑎𝑡𝑜𝑟 𝑛𝑜𝑑𝑒

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

𝑝𝑟𝑒𝑝𝑎𝑟𝑒

𝑎𝑐𝑐𝑒𝑝𝑡

𝑐𝑜𝑚𝑚𝑖𝑡/𝑎𝑏𝑜𝑟𝑡

I Хоть один получил 𝑐𝑜𝑚𝑚𝑖𝑡 ⇒ все ответили 𝑎𝑐𝑐𝑒𝑝𝑡

I Хотя бы один не получил 𝑝𝑟𝑒𝑝𝑎𝑟𝑒 ⇒ никто не получил 𝑐𝑜𝑚𝑚𝑖𝑡

Page 18: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Paxos

𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟 𝑎𝑐𝑐𝑒𝑝𝑡𝑜𝑟 𝑙𝑒𝑎𝑟𝑛𝑒𝑟

𝑝𝑟𝑜𝑝𝑜𝑠𝑒(𝑛)

𝑝𝑟𝑜𝑚𝑖𝑠𝑒(𝑛,∅|𝑣)

𝑎𝑐𝑐𝑒𝑝𝑡(𝑛, 𝑣)

𝑎𝑐𝑐𝑒𝑝𝑡𝑒𝑑(𝑛, 𝑣)

Page 19: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Paxos

𝑚 > 𝑛

𝑎𝑐𝑐𝑒𝑝𝑡𝑜𝑟

𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟

𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟

𝑎𝑐𝑐𝑒𝑝𝑡

(𝑛,𝑣1)

𝑝𝑟𝑜𝑝𝑜𝑠𝑒(𝑚)

𝑝𝑟𝑜𝑚𝑖𝑠𝑒(𝑚, 𝑣1)

Page 20: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

MultiPaxos

1

2

𝑛

𝑝𝑟𝑜𝑝𝑜𝑠𝑒(1, 𝑛) 𝑝𝑟𝑜𝑚𝑖𝑠𝑒(1, 𝑛, 𝑣) 𝑎𝑐𝑐𝑒𝑝𝑡(1, 𝑛, 𝑣)

𝑝𝑟𝑜𝑝𝑜𝑠𝑒(2, 𝑛) 𝑝𝑟𝑜𝑚𝑖𝑠𝑒(2, 𝑛, 𝑣) 𝑎𝑐𝑐𝑒𝑝𝑡(2, 𝑛, 𝑣)

Page 21: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Paxos

Почему именно Paxos

I доказана корректность в асинхронных сетяхI имеет минимально возможную задержкуI нет выделенной фазы восстановаления

Page 22: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Выбор лидера

I Часы сильно не уходят.I Лидер выбирается на 𝑛 секунд.I Перевыборы начинаются через 𝑛− 𝛿 секунд.I Лидер заблаговременно открывает несколько копий протокола.

𝑐𝑙𝑜𝑠𝑒𝑑 𝑎𝑐𝑡𝑖𝑣𝑒 𝑜𝑝𝑒𝑛

𝑐𝑙𝑜𝑠𝑒𝑑𝑙𝑖𝑣𝑒𝑜𝑝𝑒𝑛

Page 23: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Быстрый старт

Используем обычную асинхронную репликацию.Финальный раунд с использованием Paxos

𝑙𝑜𝑔 𝑟𝑒𝑝𝑙𝑎𝑦 𝑝𝑎𝑥𝑜𝑠

𝑐𝑙𝑜𝑠𝑒𝑑𝑙𝑖𝑣𝑒

Page 24: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

«Грязные» чтения

𝑙𝑒𝑎𝑟𝑛𝑒𝑟𝑙𝑒𝑎𝑑𝑒𝑟

𝑙𝑒𝑎𝑟𝑛𝑒𝑟1

𝑠𝑒𝑚𝑖𝑠𝑡𝑎𝑙𝑒

𝑙𝑒𝑎𝑟𝑛𝑒𝑟2

𝑠𝑡𝑎𝑙𝑒

Page 25: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Результаты и планы на будущее

I WAL или PaxosWAL

I Единая конфигурацияI Шардинг

Page 26: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Open Source

http://opensource.mail.ru/http://github.com/mailru/[email protected]

Page 27: Про Ha-кластеры и нашу реализацию в Tarantool  (Юрий Востриков)

Спасибо!

Вопросы?