Какая часть теоремы CAP приносит Кассандру жертву и почему?

Существует отличный разговор здесь об имитации проблем раздела в Cassandra с Библиотека Кингсби Йеспера.

Мой вопрос - с Кассандрой вы в основном занимаетесь разделяющей частью теоремы CAP, или является Consistency фактором, которым вам также нужно управлять?

Ответ 1

Кассандра обычно классифицируется как система AP, что означает, что доступность и допустимость разделов обычно считаются более важными, чем согласованность. Тем не менее, системы реального мира редко попадают в эти категории, поэтому более полезно рассматривать CAP как континуум. Большинство систем будут прилагать определенные усилия, чтобы быть последовательными, доступными и толерантными к разделам, и многие (включая Cassandra) могут быть настроены в зависимости от того, что наиболее важно. Вращающиеся ручки, такие как коэффициент репликации и уровень согласованности, могут оказать существенное влияние на C, A и P.

Даже определение того, что означают термины, может быть сложным, поскольку различные варианты использования имеют разные требования для каждого. Поэтому, вместо того, чтобы классифицировать систему как CP, AP или что-то еще, более полезно подумать с точки зрения параметров, которые она предоставляет для настройки этих свойств в зависимости от случая использования.

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

Ответ 2

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

Apache Cassandra подпадает под систему AP, что означает, что Cassandra верна для доступности и допуска разделов, но не для согласованности, но это может быть дополнительно настроено с помощью коэффициента репликации (сколько копий данных) и уровня согласованности (чтение и запись).

Для получения дополнительной информации: https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlConfigConsistency.html

Ответ 3

Интересно, что это зависит от вашей конфигурации Cassandra. Кассандра может быть максимально AP системой. Но если вы сконфигурируете его для чтения или записи на основе кворума, то он не останется доступным CAP (доступным в соответствии с определением теоремы CAP) и будет только P- системой.

Просто объяснить вещи более подробно CAP теорема означает:

  1. C: (Линеаризуемость или сильная согласованность) примерно означает

Если операция B началась после успешного завершения операции A, то операция B должна видеть систему в том же состоянии, в котором она была при завершении операции A, или в более новом состоянии (но никогда не в более старом состоянии).

  1. A:

"каждый запрос, полученный не исправным узлом [базы данных] в системе, должен приводить к ответу [без ошибок]". Недостаточно, чтобы какой-то узел мог обработать запрос: любой исправный узел должен быть в состоянии обработать его. Многие так называемые "высокодоступные" (то есть с низким временем простоя) системы фактически не соответствуют этому определению доступности.

  1. п

Допуск раздела (ужасно ошибочно названный) в основном означает, что вы общаетесь по асинхронной сети, которая может задерживать или отбрасывать сообщения. Интернет и все наши дата-центры обладают этим свойством, поэтому у вас нет выбора в этом вопросе.

Источник: Потрясающая работа Мартина Клеппмана