2013 09 16_db_lecture_01-cap
TRANSCRIPT
Consistency, Availability and PartitionTolerance
Курс «Базы данных»
Цесько Вадим Александровичhttp://incubos.org
@incubos
Computer Science Center
16 сентября 2013 г.
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 1 / 27
Содержание
1 Remembrance Inc.
2 CAP theorem
3 Транзакции
4 Материалы
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 2 / 27
Remembrance Inc. Идея сервиса
Идея сервисаNever forget, even without remembering!a
ahttp://ksat.me/a-plain-english-introduction-to-cap-theorem/
Ever felt bad that you forget so much? Don’t worry. Helpis just a phone away!When you need to remember something, just call555-55-REMEM and tell us what you need to remember.For eg., call us and let us know of your boss’s phonenumber and forget to remember it. When you need toknow it back, call back the same number 555-55-REMEMand we’ll tell you what’s your boss’s phone number.Charges: only $0.1 per requestЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 3 / 27
Remembrance Inc. Типичный диалог
Типичный диалог
Customer : Hey, can you store my neighbor’sbirthday?You: Sure... When is it?Customer : 2nd of JanYou: (write it down against the customer’s page inyour paper note book) Stored. Call us any time forknowing your neighbor’s birthday again!Customer : Thank you!You: No problem! We charged your credit card with$0.1
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 4 / 27
Remembrance Inc. Растёт нагрузка
Растёт нагрузка
Нужен только блокнот и телефонОтлично работаетСарафанное радиоПолучили финансирование от YCombinatorСотни звонков в день
Проблемы подходаКлиенты висят в очереди на телефоне и злятсяВы заболели и пропустили рабочий день и деньоповещений
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 5 / 27
Remembrance Inc. Масштабируемся
Масштабируемся
Берём жену в долюУ каждого добавочный номерКлиенты используют всё тот же 555–55-REMEMАТС балансирует клиентов между сотрудниками
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 6 / 27
Remembrance Inc. Проблема
Проблема
Customer : Hey!You: Glad you called “Remembrance Inc!”. What canI do for you?Customer : Can you tell me when is my flight to NewDelhi?You: Sure... 1 sec, sir. (You look up your notebook.WOW! There is no entry for "flight date"incustomer’s page!!!)You: Sir, I think there is a mistake. You never told usabout your flight to Delhi.Customer : What?! I just called you guys yesterday!(Cuts the call!)
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 7 / 27
Remembrance Inc. Чиним неконсистентность
Чиним неконсистентность
Перед тем как записать что-либо, говоримпартнёруТаким образом, обновления хранятся у нас обоихКогда клиент спрашивает, то вся информация подрукой
Проблемы подходаДольше операции обновления, но операцийчтения большинствоЕсли кто-то из нас заболеет — проблеманедоступности
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 8 / 27
Remembrance Inc. Consistent & Available
Consistent & Available
Новая версия алгоритма:Перед записью говорим партнёруПартнёр недоступен — отправляем ему emailВ начале рабочего дня разбираем почту иобновляем блокнот
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 9 / 27
Remembrance Inc. Partition Tolerance
Partition Tolerance
Жена обиделась, всё-таки пришла на работу, норешила не сообщать об обновленияхМожно реализовать partition tolerance, еслирешить не принимать запросы, пока невосстановится связность с женойНо тогда жертвуем availability
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 10 / 27
CAP theorem
CAP theorem
E. Brewer. Towards Robust Distributed Systems, 2000.
СутьВыберите 2 из 3:
ConsistencyAvailabilityPartition Tolerance
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 11 / 27
CAP theorem Пояснения
Пояснения
На самом деле1:Невозможность полного обеспечения C, A и PP in a distributed system is a MUST HAVEПартиции относительно редки — необязательножертвовать C/A при их отсутствииВыбор различного соотношения C/A для разныхподсистем, запросов, данных, пользователей и т. д.Свойства непрерывны, а не бинарны
1http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changedЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 12 / 27
CAP theorem Latency
Latency
CAP проявляется во время таймаута:Отменить операцию = снизить доступностьПодтвердить операцию = снизить консистентностьПерезапрос = отложить решениеБесконечный перезапрос = выбираемконсистентность
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 13 / 27
CAP theorem Обработка партиций
Обработка партицийОбнаружение партиционирования
Не все узлы могут признать партиционированиеМожно подбирать таймауты ⇒ false positives
Ограничение набора возможныхопераций/снижение консистентности
Можно запомнить и «отложить» операциюYahoo PNUTS: локальный мастер per user +асинхронная репликация ⇒ меньше задержкиFacebook2: мастер всегда один, запись в удалённыймастер и чтение 20 сек из мастера, затем излокальной реплики
Восстановление консистентности и устранениеошибок
2http://www.facebook.com/note.php?note_id=23844338919&id=9445547199Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 14 / 27
CAP theorem Картинка
Картинка
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 15 / 27
CAP theorem Трюки
Трюки
Вся система недоступна — есть, например,HTML5 on-client persistent storageРазличные области консистентности припартициях (primary partition, quorum)Шардирование
Нет глобальных инвариантовНо возможен прогресс даже при партициях
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 16 / 27
CAP theorem Восстановление консистентности
Восстановление консистентности
Нужно знать инварианты (не всегда очевидно)Почти то же, что параллельные обновления вмногопоточном программированииВекторные часы для обнаружения конфликтовОткат ошибок (желательно иметь лог операций —см. DVCS)Commutative Replicated Data Types (CRDTs)34
3M. Shapiro et al. Conflict-Free Replicated Data Types. 20114M. Shapiro et al. Convergent and Commutative Replicated Data Types.
2011Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 17 / 27
CAP theorem Пример: ATM
Пример: ATM
Инвариант: баланс больше 0Выбираем availabilityСвязь пропала — лимит на снятие наличныхОперация коммутативнаСвязь восстановилась — считаем баланс,возможно, штраф за overdraftСм. Check kiting5
5http://en.wikipedia.org/wiki/Check_kitingЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 18 / 27
CAP theorem Use Case: Ebay
Use Case: Ebay
Principles for Scaling6:Partition Everything
Vertical, horizontal, no session stateAsynchrony Everywhere
Events, multicastAutomate Everything
Adaptive configuration, machine learningRemember Everything Fails
Failure detection, rollback, graceful degradationEmbrace Inconsistency
Eventual consistency, no distributed transactions
6Randy Shoup at LADIS 2008, http://www.cs.cornell.edu/projects/ladis2008/materials/eBayScalingOdyssey%20ShoupTravostino.pdfЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 19 / 27
Транзакции Определение
Определение
ТранзакцияA unit of work performed against a database, and treatedin a coherent and reliable way independent of othertransactionsa
ahttp://en.wikipedia.org/wiki/Database_transaction
Две философии:ACID7 — focus on consistencyBASE — focus on high availability
7Name was coined (no surprise) in California in 60’sЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 20 / 27
Транзакции ACID-транзакции
ACID-транзакцииAtomicity — «либо всё, либо ничего»
commit/rollback, undo-log, атомарные операции, ...Consistency — переход из одного «корректного»состояния в другое
Индексы, форматы, ссылки, ограничения, триггеры,...
Isolation — иллюзия последовательноговыполнения транзакций
Уровни изоляции: Read uncommitted / dirty reads,Read committed / non-repeatable read, Repeatablereads / phantom reads, Serializable, MVCC8, ...
Durability — надёжное долговременное хранение8http:
//en.wikipedia.org/wiki/Multiversion_concurrency_controlЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 21 / 27
Транзакции Распределённый commit
Распределённый commit
Two-phase commit protocol9Three-phase commit protocol10Paxos11Возможно, рассмотрим позже
9http://en.wikipedia.org/wiki/2PC10http://en.wikipedia.org/wiki/3PC11http://en.wikipedia.org/wiki/Paxos_(computer_science)
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 22 / 27
Транзакции ACID in CAP
ACID in CAPAtomicity
Используется во всех партицияхУпрощает восстановление
ConsistencyНевозможна при партиционированииЗапрет некоторых операцийВосстановление инвариантов впоследствии
IsolationМожно работать только с одной партициейЛибо более слабая корректность, компенсируемаявосстановлением
DurabilityDurable history позволяет исправлять ошибки привосстановленииИногда ослабляют из-за дороговизны
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 23 / 27
Транзакции BASE
BASE
Dan Pritchett. BASE: An Acid Alternative12. 2008:Basically AvailableSoft StateEventually consistent
12http://queue.acm.org/detail.cfm?id=1394128Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 24 / 27
Материалы Чтение на ночь
Чтение на ночьFallacies of Distributed Computing1314:
The network is reliableLatency is zeroBandwidth is infiniteThe network is secureTopology doesn’t changeThere is one administratorTransport cost is zeroThe network is homogeneous...
13http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing
14Arnon Rotem-Gal-Oz. Fallacies of Distributed Computing Explained,http://www.rgoarchitects.com/Files/fallacies.pdfЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 25 / 27
Материалы Библиотечка
Библиотечка
Google. Distributed Systems and ParallelComputing15
Quora: What are the top startup engineering blogs?16
15http://research.google.com/pubs/DistributedSystemsandParallelComputing.html
16http://www.quora.com/What-are-the-top-startup-engineering-blogsЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 26 / 27
Вопросы?
Вопросы?
http://incubos.org/contacts/Общие вопросы — в Twitter: @incubosВопросы по лекциям — в комментариях:http://incubos.org/blog/Частные вопросы — в почту[email protected]
Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 27 / 27