Исходный код вики CAP теорема
Редактировал(а) Alexandr Fokin 2026/08/20 16:31
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | |(% style="width:77px" %) |(% style="width:1408px" %)CAP теорема | ||
| 2 | |(% style="width:77px" %) |(% style="width:1408px" %)[[Кластер>>doc:Разработка.Базы данных.Механизмы.Кластер.WebHome]] | ||
| 3 | |(% style="width:77px" %) |(% style="width:1408px" %)Всё, что вы не знали о CAP теореме | ||
| 4 | https://habr.com/ru/post/328792 | ||
| 5 | |(% style="width:77px" %) |(% style="width:1408px" %)((( | ||
| 6 | Понятие Split Brain | ||
| 7 | |||
| 8 | Ситуация распада кластера узлов на несколько сегментов, в следствии нарушения связи (сети) между сегментами. Каждый сегмент становиться автономным и не может обмениваться данными с другими сегментами. Каждый сегмент принимает решение о продолжение работы. | ||
| 9 | ))) | ||
| 10 | |(% style="width:77px" %) |(% style="width:1408px" %)((( | ||
| 11 | |(% style="width:99px" %)Consistency|(% style="width:141px" %)Согласованность данных|(% style="width:1107px" %)В каждый момент времени все узлы возвращают одинаковые наборы данных по одним и тем-же агрегатам. Отсутствие рассинхронизации данных. | ||
| 12 | |(% style="width:99px" %)Availability|(% style="width:141px" %)Доступность|(% style="width:1107px" %) Каждый узел (не упавший) всегда успешно выполняет запросы (на чтение и запись) | ||
| 13 | |(% style="width:99px" %)Partition tolerance|(% style="width:141px" %)Устойчивость к разделению|(% style="width:1107px" %)Узлы приложения продолжают работать, даже если связь между ними нарушена и синхронизация невозможна. В таком случае при запросе данных с разных узлов мы можем получить различные агрегаты. | ||
| 14 | ))) | ||
| 15 | |(% style="width:77px" %) |(% style="width:1408px" %)((( | ||
| 16 | |(% colspan="2" %)Невозможно в полной мере выполнять все 3 условия. | ||
| 17 | |(% style="width:69px" %)AP|(% style="width:1413px" %)В случае невозможности синхронизации данных (Split Brain), все узлы продолжают работу, даже с учетом рассинхронизации данных. | ||
| 18 | |(% style="width:69px" %)CP|(% style="width:1413px" %)Все узлы системы перестают работать, если не могу синхронизировать данные между собой. | ||
| 19 | |(% style="width:69px" %) |(% style="width:1413px" %)Возможно ситуация, когда разрозненные сегменты имеет механизм принятия решения о том, стоит ли продолжать обрабатывать запросы. | ||
| 20 | Например: в случае если исходный кластер состоял из нечетного кол-ва узлов и распался на 2 сегмента, то сегмент, содержащий наибольшую кол-во узлов (относительно исходного кол-ва в кластере), продолжит работу. | ||
| 21 | ))) | ||
| 22 | |||
| 23 | ---- | ||
| 24 | |||
| 25 | ==== Внутренние ссылки: ==== | ||
| 26 | |||
| 27 | ====== Дочерние страницы: ====== | ||
| 28 | |||
| 29 | {{children/}} | ||
| 30 | |||
| 31 | ====== Обратные ссылки: ====== | ||
| 32 | |||
| 33 | {{velocity}} | ||
| 34 | #set ($links = $doc.getBacklinks()) | ||
| 35 | #if ($links.size() > 0) | ||
| 36 | #foreach ($docname in $links) | ||
| 37 | #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument()) | ||
| 38 | * [[$escapetool.xml($rdoc.fullName)]] | ||
| 39 | #end | ||
| 40 | #else | ||
| 41 | No back links for this page! | ||
| 42 | #end | ||
| 43 | {{/velocity}} | ||
| 44 | |||
| 45 | ---- |