<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.132.204.29&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=91.132.204.29&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/91.132.204.29"/>
		<updated>2026-05-21T03:23:09Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=CAP_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0&amp;diff=71634</id>
		<title>CAP теорема</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=CAP_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0&amp;diff=71634"/>
				<updated>2019-06-04T10:21:36Z</updated>
		
		<summary type="html">&lt;p&gt;91.132.204.29: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Параллельное программирование]]&lt;br /&gt;
'''CAP-теорема''' — утверждение о том, что в распределённых системах нельзя одновременно добиться трёх свойств:&lt;br /&gt;
* '''C'''onsistency — на всех ''не отказавших'' узлах одинаковые (с точки зрения пользователя) данные одинаковы&lt;br /&gt;
* '''A'''vailability — запросы ко всем ''не отказавшим'' узлам возвращают ответ&lt;br /&gt;
* '''P'''artition tolerance — даже если связь в системе стала нестабильной (вплоть до разделения системы на куски), но узлы работают, то система в целом продолжает работать&lt;br /&gt;
&lt;br /&gt;
Формально мы это не формулировали и не доказывали.&lt;br /&gt;
Оригинальная формулировка — Brewer's Conjecture (2000), а формализовано в работе Gilbert &amp;amp; Lynch (2004).&lt;br /&gt;
Там есть много тонкостей с тем, что такое &amp;quot;не отказавший узел&amp;quot;, &amp;quot;одинаковые данные&amp;quot;, &amp;quot;разрыв связи&amp;quot;, &amp;quot;система продолжает работать&amp;quot;, &amp;quot;когда система всё-таки окончательно ломается и считается недоступной&amp;quot; и тому подобное.&lt;br /&gt;
&lt;br /&gt;
Для общей эрудиции выглядят неплохо статьи&amp;lt;ref&amp;gt;http://blog.thislongrun.com/2015/04/the-unclear-cp-vs-ca-case-in-cap.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://habr.com/ru/post/322276/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Классификация алгоритмов ==&lt;br /&gt;
А вот алгоритмы, которые удовлетворяют хотя бы двум свойствам, можно нарисовать на диаграмма Венна:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Distributed-cap.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Дальше идут объяснения с лекции, они отличаются в разных источниках (например, где-то 2PC идёт вместе с Paxos в CP, а не в CA&amp;lt;ref&amp;gt;http://www.cedanet.com.au/ceda/fallacies/cap-theorem.php&amp;lt;/ref&amp;gt;), а где-то совпадают с лекцией&amp;lt;ref&amp;gt;http://book.mixu.net/distsys/single-page.html#the-cap-theorem&amp;lt;/ref&amp;gt;, а где-то считают, что не-partition tolerance не нужно&amp;lt;ref&amp;gt;https://codahale.com/you-cant-sacrifice-partition-tolerance/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* Если мы хотим согласованность и доступность, то используем [[2 Phase Commit|протокол двухфазного коммита]]: он гарантирует нам согласованное состояние глобально во всей системе и мы всегда можем обслуживать запросы (если только не упал узел с соответствующими данными). Но если потерялась связь (а узлы не упали), то какие-то запросы нельзя обработать, потому что часть данных может быть в одной половине, а часть в другой. Каждый кусок всё ещё будет работать по отдельности, но глобальные транзакции выполнять мы не сможем.&lt;br /&gt;
* Иногда нам не так важна согласованность и мы согласны на простую eventual consistency — это когда информация может быть доступна не сразу везде, а только через какое-то время, если система здорова. Сюда идут [[gossip-протоколы]].&lt;br /&gt;
* Если мы хотим согласованность и толерантность к разделению, то надо жертвовать доступностью. Например, при помощи Paxos мы можем хранить все данные сразу на всех узлах, но тогда узлы, оказавшиеся в меньшинстве, ничего сделать не могут.&lt;/div&gt;</summary>
		<author><name>91.132.204.29</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=CAP_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0&amp;diff=71633</id>
		<title>CAP теорема</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=CAP_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0&amp;diff=71633"/>
				<updated>2019-06-04T10:21:18Z</updated>
		
		<summary type="html">&lt;p&gt;91.132.204.29: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Параллельное программирование]]&lt;br /&gt;
'''CAP-теорема''' — утверждение о том, что в распределённых системах нельзя одновременно добиться трёх свойств:&lt;br /&gt;
* '''C'''onsistency — на всех ''не отказавших'' узлах одинаковые (с точки зрения пользователя) данные одинаковы&lt;br /&gt;
* '''A'''vailability — запросы ко всем ''не отказавшим'' узлам возвращают ответ&lt;br /&gt;
* '''P'''artition tolerance — даже если связь в системе стала нестабильной (вплоть до разделения системы на куски), но узлы работают, то система продолжает работать&lt;br /&gt;
&lt;br /&gt;
Формально мы это не формулировали и не доказывали.&lt;br /&gt;
Оригинальная формулировка — Brewer's Conjecture (2000), а формализовано в работе Gilbert &amp;amp; Lynch (2004).&lt;br /&gt;
Там есть много тонкостей с тем, что такое &amp;quot;не отказавший узел&amp;quot;, &amp;quot;одинаковые данные&amp;quot;, &amp;quot;разрыв связи&amp;quot;, &amp;quot;система продолжает работать&amp;quot;, &amp;quot;когда система всё-таки окончательно ломается и считается недоступной&amp;quot; и тому подобное.&lt;br /&gt;
&lt;br /&gt;
Для общей эрудиции выглядят неплохо статьи&amp;lt;ref&amp;gt;http://blog.thislongrun.com/2015/04/the-unclear-cp-vs-ca-case-in-cap.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://habr.com/ru/post/322276/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Классификация алгоритмов ==&lt;br /&gt;
А вот алгоритмы, которые удовлетворяют хотя бы двум свойствам, можно нарисовать на диаграмма Венна:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Distributed-cap.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Дальше идут объяснения с лекции, они отличаются в разных источниках (например, где-то 2PC идёт вместе с Paxos в CP, а не в CA&amp;lt;ref&amp;gt;http://www.cedanet.com.au/ceda/fallacies/cap-theorem.php&amp;lt;/ref&amp;gt;), а где-то совпадают с лекцией&amp;lt;ref&amp;gt;http://book.mixu.net/distsys/single-page.html#the-cap-theorem&amp;lt;/ref&amp;gt;, а где-то считают, что не-partition tolerance не нужно&amp;lt;ref&amp;gt;https://codahale.com/you-cant-sacrifice-partition-tolerance/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* Если мы хотим согласованность и доступность, то используем [[2 Phase Commit|протокол двухфазного коммита]]: он гарантирует нам согласованное состояние глобально во всей системе и мы всегда можем обслуживать запросы (если только не упал узел с соответствующими данными). Но если потерялась связь (а узлы не упали), то какие-то запросы нельзя обработать, потому что часть данных может быть в одной половине, а часть в другой. Каждый кусок всё ещё будет работать по отдельности, но глобальные транзакции выполнять мы не сможем.&lt;br /&gt;
* Иногда нам не так важна согласованность и мы согласны на простую eventual consistency — это когда информация может быть доступна не сразу везде, а только через какое-то время, если система здорова. Сюда идут [[gossip-протоколы]].&lt;br /&gt;
* Если мы хотим согласованность и толерантность к разделению, то надо жертвовать доступностью. Например, при помощи Paxos мы можем хранить все данные сразу на всех узлах, но тогда узлы, оказавшиеся в меньшинстве, ничего сделать не могут.&lt;/div&gt;</summary>
		<author><name>91.132.204.29</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=CAP_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0&amp;diff=71632</id>
		<title>CAP теорема</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=CAP_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0&amp;diff=71632"/>
				<updated>2019-06-04T10:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;91.132.204.29: /* Классификация алгоритмов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Параллельное программирование]]&lt;br /&gt;
'''CAP-теорема''' — утверждение о том, что в распределённых системах нельзя одновременно добиться трёх свойств:&lt;br /&gt;
* '''C'''onsistency — на всех ''не отказавших'' узлах одинаковые (с точки зрения пользователя) данные&lt;br /&gt;
* '''A'''vailability — запросы ко всем ''не отказавшим'' узлам возвращают ответ&lt;br /&gt;
* '''P'''artition tolerance — даже если связь в системе стала нестабильной (вплоть до разделения системы на куски), то система продолжает работать&lt;br /&gt;
&lt;br /&gt;
Формально мы это не формулировали и не доказывали.&lt;br /&gt;
Оригинальная формулировка — Brewer's Conjecture (2000), а формализовано в работе Gilbert &amp;amp; Lynch (2004).&lt;br /&gt;
Там есть много тонкостей с тем, что такое &amp;quot;не отказавший узел&amp;quot;, &amp;quot;одинаковые данные&amp;quot;, &amp;quot;разрыв связи&amp;quot;, &amp;quot;система продолжает работать&amp;quot;, &amp;quot;когда система всё-таки окончательно ломается и считается недоступной&amp;quot; и тому подобное.&lt;br /&gt;
&lt;br /&gt;
Для общей эрудиции выглядят неплохо статьи&amp;lt;ref&amp;gt;http://blog.thislongrun.com/2015/04/the-unclear-cp-vs-ca-case-in-cap.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://habr.com/ru/post/322276/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Классификация алгоритмов ==&lt;br /&gt;
А вот алгоритмы, которые удовлетворяют хотя бы двум свойствам, можно нарисовать на диаграмма Венна:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Distributed-cap.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Дальше идут объяснения с лекции, они отличаются в разных источниках (например, где-то 2PC идёт вместе с Paxos в CP, а не в CA&amp;lt;ref&amp;gt;http://www.cedanet.com.au/ceda/fallacies/cap-theorem.php&amp;lt;/ref&amp;gt;), а где-то совпадают с лекцией&amp;lt;ref&amp;gt;http://book.mixu.net/distsys/single-page.html#the-cap-theorem&amp;lt;/ref&amp;gt;, а где-то считают, что не-partition tolerance не нужно&amp;lt;ref&amp;gt;https://codahale.com/you-cant-sacrifice-partition-tolerance/&amp;lt;/ref&amp;gt;.&lt;br /&gt;
* Если мы хотим согласованность и доступность, то используем [[2 Phase Commit|протокол двухфазного коммита]]: он гарантирует нам согласованное состояние глобально во всей системе и мы всегда можем обслуживать запросы (если только не упал узел с соответствующими данными). Но если потерялась связь (а узлы не упали), то какие-то запросы нельзя обработать, потому что часть данных может быть в одной половине, а часть в другой. Каждый кусок всё ещё будет работать по отдельности, но глобальные транзакции выполнять мы не сможем.&lt;br /&gt;
* Иногда нам не так важна согласованность и мы согласны на простую eventual consistency — это когда информация может быть доступна не сразу везде, а только через какое-то время, если система здорова. Сюда идут [[gossip-протоколы]].&lt;br /&gt;
* Если мы хотим согласованность и толерантность к разделению, то надо жертвовать доступностью. Например, при помощи Paxos мы можем хранить все данные сразу на всех узлах, но тогда узлы, оказавшиеся в меньшинстве, ничего сделать не могут.&lt;/div&gt;</summary>
		<author><name>91.132.204.29</name></author>	</entry>

	</feed>