HeadlinesBriefing HeadlinesBriefing.com

Почему распределённые системы предпочитают независимость

ByteByteGo •
×

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

Координацию можно представить как именно такое взаимодействие между компонентами. Например, один сервис может ждать, пока другой одобрит запрос. База данных может ждать подтверждения от своих реплик. Воркер может ждать блокировку. Каждое такое ожидание добавляет зависимость, а именно зависимость создаёт проблемы в распределённых системах.

В этой статье рассматривается, почему координация является проблемой для распределённых систем. Она охватывает то, почему координация становится трудной, как она растёт по мере масштабирования системы и как её можно сократить. Проектировщики, которые минимизируют точки, где компоненты вынуждены ждать друг друга, могут создавать системы, которые устойчивее, масштабируемее и проще в эксплуатации.

Основная идея состоит в том, что независимость обычно предпочтительнее координации. Когда компонент может продвигаться самостоятельно, не ожидая других, система, как правило, более изящно переносит сбои, всплески задержек и нагрузку. Стратегии работы с координацией, когда её нельзя избежать, рассматриваются в следующих разделах.

Источник: ByteByteGo · Сводку подготовил HeadlinesBriefing