Теория распределенной системы CAP

интервью Java
Теория распределенной системы CAP

Теория CAP — это тема, о которой говорили и слышали плохо, но я все же предпочитаю потратить некоторое время на ее разбор, горизонтальное расширение, добавление своих собственных чувств и серьезное обсуждение.

увидеть раньшеСтатья написана учителем Руань Ифэн.Да, раньше я думал, что это всегда было немного сложно понять, но теперь я думаю, что это немного проблематично.

Я думаю, что доступность, которую сказал г-н Руан, не правильно понимается, и распределение не имеет ничего общего с конкретным «каким». Объяснение терпимости разбиения не заставило меня осознать.

Введение в CAP

В 1998 году приятель предложил три индикатора распределенных систем:

CAP (согласованность, доступность, допуск к разделению), где:

Consistency

  • последовательность

Этот приятель сказал, что все резервные копии данных в распределенной системе должны быть «одинаковыми» в «один и тот же момент».

Например, на фиг. Служба отключения. Запрос Там не может упасть на А, потом он сказал: независимо от падения B, C на какую машину картина должна присутствовать и вернуть ее, в противном случае это не «последовательно»

Если имеется несколько разделов для выполнения операций записи, если синхронизация «осколка» распределенной системы хранения или синхронизация «главный-подчиненный» кластерной системы всегда будет иметь последовательность, в этой последовательности возникнут несоответствия. :

  • Либо принять «временные» несоответствия в синхронизации одних и тех же данных между точками хранения.

  • Либо вы хотите «строгую согласованность», тогда синхронизация повлияет на вашу «доступность».

Организован общий уровень согласованности, можете посмотреть, если хотите его увидеть

Availability

  • Доступность

Этот приятель сказал: После отказа некоторых узлов в кластере, может ли кластер в целом отвечать на запросы клиента на чтение и запись, даже если узел в кластере выйдет из строя, это все равно не повлияет ни на один из ваших запросов.

Это очень легко понять, буквально

Partition tolerance

  • Допуск перегородки

Этот товарищ сказал: Если машины в кластере разделены на две части и две части не могут общаться друг с другом, может ли система продолжать нормально работать?

Буква P в этом CAP больше всего вводит меня в заблуждение, так что я до сих пор не могу говорить о CAP сегодня, поэтому здесь я организую причины.

Мои вопросы о толерантности к зонированию

Многие говорят «непротиворечивость, доступность, устойчивость к разбиению, только два из них могут быть выбраны произвольно», что на первый взгляд верно, но удовлетворяет ли AC?

Обычно это написано оригинальными словами «Энциклопедии Baidu»:

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。

Мой вопрос: если AC гарантировано, то P не может гарантировать, Только подумайте: если между машинами нет связи, а сеть разбита на разделы, как обеспечить согласованность данных? Как синхронизировать данные?

Я могу понять AP CP, и я могу видеть тени в своей повседневной работе:

Например, AP (Eureka) выбирает доступность, а CP (Zookeeper, HDFS) выбирает согласованность, но где модель AC? Как это сделать без потери связи?

Некоторые говорят: Автор теории CAP слишком догматичен! Пока распределенные машины в разных местах поддерживают порядок, а машины, которые не могут общаться, выгоняются, это CAP!

Другой человек сказал: Это нехорошо, если сеть дергается, вы слишком сильно пинаетесь, а фрагментация данных не соответствует требованиям!

Ссылки 👇

исходный текст cloudera facebook (истек срок действия исходного текста официального сайта cloudera)

Обратитесь к приведенному выше переводу

Автор имеет в виду, что только CP или AP могут изолировать членов системы на две области из-за сетевых проблем, и друг друга не могут знать о состоянии друг друга, что очень часто встречается в распределенной среде. Таким образом, мы можем выбрать только один из C и A. Так что P обязателен. Для распределенных систем нецелесообразно строить сеть, которая никогда не дает сбоев при множественных корреляциях. Таким образом, разработчик должен выбирать между согласованностью (C) и доступностью (A).

Конечно, все вышеизложенное — догматические рассуждения, основанные на теории CAP, на самом деле незачем так запутываться в реальности.

Суммировать

В распределенной среде P определенно существует, то есть, пока у нас есть несколько машин, сетевая изоляция и разделение должны быть неизбежны, поэтому при проектировании системы мы должны выбрать, разрабатывать ли систему AP или систему CP. на самом деле, пока у нас есть глубокое понимание CAP, мы обнаружим, что иногда нет необходимости так запутываться в проектировании системы, в основном в:

Хотя вероятность раздела сети существует на рынке, мы можем воспринимать сердцебиение, чтобы принудительно исключить офлайн и распределить трафик равномерно по другим узлам, ведь никто не может гарантировать, что сеть будет на 100% стабильна и не будет никакого раздела сети. Естественно, нет необходимости сознательно выбирать что-то одно из A и C, но вы можете хорошо делать и то, и другое. То есть система переменного тока, упомянутая в «Энциклопедии Baidu».

В CAP прописано, что А - это 100% доступность, но по факту нам нужно обеспечить только высокую доступность, то есть, как и шлюз, круглый год быть неработоспособным нельзя, а достаточно для выполнения 99,99% или 99,999% и другие 9s.

награда

У меня есть дальнейшая концепция Р CAP, и у меня есть некоторые новые понимания. Я снова читаю Paxos. Это действительно сложно. Я хотел написать это, но я плохо понимаю, и я боюсь, что я не пишите хорошо.

Скажи это в следующий раз.

использованная литература

Учитель Жуань Ифэн:Уууу. Руань Ифэн.com/blog/2018/0…

кепка облачера:Обычные - такие как. Facebook.com / Notes / Cloud ...

облачная шапка перевод:Очень внимательно GitHub.IO/blogs/cap - From…

Общие уровни согласованности:GitHub.com/Вопросы и ответы в сторону/B…

оригинальный

GitHub.com/Вопросы и ответы в сторону/B…