Consistency, Availability and Partition Tolerance Курс Базы данных Цесько Вадим Александрович http://incubos.org @incubos Computer Science Center 16 сентября 2013 г. Цесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance 16 сентября 2013 г. 1 / 27
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
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
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
Можно запомнить и «отложить» операцию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
Цесько В. А. (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
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
Две философии: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
//en.wikipedia.org/wiki/Multiversion_concurrency_controlЦесько В. А. (CompSciCenter) Consistency, Availability and Partition Tolerance16 сентября 2013 г. 21 / 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...
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
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