Получи случайную криптовалюту за регистрацию!

​​Fencing (не Fendi). Fencing — один из способов решения проб | //АйТи интерн

​​Fencing (не Fendi).

Fencing — один из способов решения проблемы Split Brain’а и обеспечения High Availability в распределенных системах. В прошлый раз мы рассматривали кворумы и проблему консенсуса (к ней еще вернемся).

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

Для избежания дальнейших проблем с общими ресурсами кластера, система изолирует этот узел, делая для него fence (русск. заграждающая метка).

То есть когда мы делаем fencing (пунктир на картинке) для узла “C”, то на вопрос: “будет ли узел “C” отвечать за ресурс X или на вопрос Y?”, - мы всегда будем получать ответ: “НЕТ!”. Таким образом нам не нужно беспокоиться о том в каком состоянии узел “А”.

Для выполнения fencing существуют 2 основных техники:

- fencing ресурсов - изоляция ресурса, который использует или владеет неработающий корректно узел. Например, отзыв доступа к сетевому хранилищу данных с этого узла.

- node fencing - изоляция всего узла от всех ресурсов, не разбирая какие ресурсы, он в действительности использует. Грубо и жестко. Это также называют “STONITH” - Shoot The Other Node In The Head.

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

Во взрослом мире промышленного программирования fencing недостаточен для эксплуатации распределенных систем. Есть сценарии и ошибки, когда разработчикам приходится использовать другие техники или их комбинации. Часть из них мы рассмотрели, а другая часть требует детального погружения в распределенные системы.

Дальше поговорим про алгоритмы консенсуса. Их могут спросить на собесах, да и полезно их знать.

Успехов!

@it_intern

#архитектура #распределенные_системы