Почему CA (Consistency + Availability) системы невозможны в мире распределённых систем
В соответствии с CAP теоремой, в современных распределенных системах невозможно одновременно достичь всех трёх характеристик — Consistency (Консистентность), Availability (Доступность) и Partition Tolerance (Устойчивость к разделению).
Самая проблемная характеристика в условиях реальных сетевых разделений — это Consistency.
Почему Consistency может быть недостижима в современных распределённых системах?
-
Сетевые разделения: Когда сеть разделяется, например, из-за сбоя или отказа в какой-то части системы, поддержание Consistent данных становится проблематичным, поскольку два (или больше) сегмента системы могут работать независимо друг от друга. Из-за этого возникает риск, что разные части системы будут работать с устаревшими или противоречивыми данными.
-
Балансировка и отказоустойчивость: Чтобы обеспечить Availability и Partition Tolerance, системы могут предоставить доступ к данным, но они могут не успевать синхронизировать все изменения между узлами, что делает невозможным достижение строгой консистентности во всех частях системы одновременно.
-
Стоимость поддержания консистентности: Требование строгой консистентности в условиях разделения сети (например, в распределённых базах данных) часто требует блокировки узлов или отказа от обслуживания запросов, что в свою очередь нарушает доступность системы.
Пример:
Google Spanner пытается сочетать все три свойства с использованием глобальных синхронизаций времени (TrueTime), но это требует дорогостоящих решений и имеет ограничения по производительности.
Cassandra, например, выбирает Availability и Partition Tolerance в ущерб строгой консистентности, позволяя разным узлам временно содержать разные версии данных.
Заключение:
Partition Tolerance (устойчивость к разделению) в условиях современных распределённых систем можно обеспечить всегда, но Consistency может быть трудно достижимой в условиях сетевых проблем.
Recommended Posts
SKIP LOCKED в PostgreSQL
27.08.2024
Transactional Outbox таблица PostgreSQL
23.04.2024