Консенсус на пальцах, или Как договориться в распределенной системе Архитектуры, масштабируемость
Договариваться сложно. Например, мы с коллегами до перехода на удаленку часто не могли договориться, куда идти обедать сегодня. Машинам не легче: в распределенной системе всё может пойти не так, а отсутствие договоренности может стоить потери данных и, как следствие, денег и доверия пользователей.
Почти все встречались с упоминанием процесса выбора нового мастера при отказе существующего, многие слышали о распределенных транзакциях, некоторые даже знают такие страшные слова, как Paxos, Raft и Bitcoin-консенсус. Но понимаете ли вы, как они работают и зачем нужны?
Я постараюсь объяснить, как эти алгоритмы устроены и зачем нам, рядовым разработчикам, это знать.
Если останется время, то разберем нюансы реализации в различных приложениях.
Помогает строить инфраструктуру Yandex.Cloud. Пишет код уже четверть века, любит Haskell, Rust и Erlang, но в последнее время пишет по ночам, пока никто не видит, на Python, C++, Java и Swift.
Создатель московских Python-завтраков. Активно участвует в организации конференций.