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

Preview:

Citation preview

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

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

РИТ++, 03/04/2012

Что такое Tarantool/SilverBox

I FrameworkI InMemory DBI WALI Tuple based

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

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

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

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

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

master

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

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

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

master

replica

master

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

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

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

master

replica

master

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

I Master-Master – Master-Slave

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

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

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

𝑐𝑙𝑖𝑒𝑛𝑡1

𝑐𝑙𝑖𝑒𝑛𝑡2

𝑐𝑙𝑖𝑒𝑛𝑡𝑛

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

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

хитрая магия

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

𝑐𝑙𝑖𝑒𝑛𝑡1

𝑐𝑙𝑖𝑒𝑛𝑡2

𝑐𝑙𝑖𝑒𝑛𝑡𝑛

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

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

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

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

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

𝑃𝑇 ⇒ ¬(𝐴 ∧ 𝐶)

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

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

𝑃𝑇 ⇒ ¬(𝐴 ∧ 𝐶)

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

Типы ошибок

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

Консенсус

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

Консенсус

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

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

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

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

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

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

𝑎𝑐𝑘

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

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

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

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

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

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

𝑐𝑜𝑚𝑚𝑖𝑡

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

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

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

𝑝𝑟𝑜𝑝𝑜𝑠𝑒

𝑣𝑜𝑡𝑒

𝑝𝑟𝑒𝑝𝑎𝑟𝑒

𝑎𝑐𝑐𝑒𝑝𝑡

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

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

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

Paxos

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

𝑝𝑟𝑜𝑝𝑜𝑠𝑒(𝑛)

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

𝑎𝑐𝑐𝑒𝑝𝑡(𝑛, 𝑣)

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

Paxos

𝑚 > 𝑛

𝑎𝑐𝑐𝑒𝑝𝑡𝑜𝑟

𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟

𝑝𝑟𝑜𝑝𝑜𝑠𝑒𝑟

𝑎𝑐𝑐𝑒𝑝𝑡

(𝑛,𝑣1)

𝑝𝑟𝑜𝑝𝑜𝑠𝑒(𝑚)

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

MultiPaxos

1

2

𝑛

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

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

Paxos

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

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

Выбор лидера

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

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

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

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

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

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

𝑐𝑙𝑜𝑠𝑒𝑑𝑙𝑖𝑣𝑒

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

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

𝑙𝑒𝑎𝑟𝑛𝑒𝑟1

𝑠𝑒𝑚𝑖𝑠𝑡𝑎𝑙𝑒

𝑙𝑒𝑎𝑟𝑛𝑒𝑟2

𝑠𝑡𝑎𝑙𝑒

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

I WAL или PaxosWAL

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

Open Source

http://opensource.mail.ru/http://github.com/mailru/opensource@corp.mail.ru

Спасибо!

Вопросы?

Recommended