Split-brain

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Split-brain syndrome — (дослівно, «синдром розділенного мозку» по аналогії з медицинським терміном) в інформатиці, стан розподіленної системи, коли за певних причин вона розпадається на дві чи більше частин і кожна частина продовжує функціонувати незалежно як окремий кластер, в результаті чого виникають колізії даних, що ускладнює, або навіть робить неможливим їх зворотнє об'єднання в єдину систему.

Наприклад, є кластер з 11 вузлів і раптом мережа розділяється таким чином, що 6 вузлів не бачать інші 5. Після певної кількості невдалих спроб поновити зв"язок отримуєм два незалежних кластера — 6-вузловий і 5-вузловий. При чому кожен кластер «думає» що просто втрачено відповідно 5 і 6 вузлів, що він єдиний функціонуючий і продовжує працювати.

Способи вирішення[ред.ред. код]

Всі підходи вирішення проблеми діляться на два типи: оптимістичний та пессимістичний.

  • Оптимістичний дозволяє розділеним вузлам працювати в звичайному режимі — це забезпечує вищий рівень доступності за рахунок корректності даних. Щойно зв'язок поновлюється, виникає необхідність в автоматичному чи ручному узгодженню даних. Такий підхід використовується в Hazelcast, де узгодження даних відбувається автоматично використовуючи різні політики об'єднання.[1]
  • Пессимістичний підхід найвищим пріорітетом ставить консистентність даних за рахунок доступності. Щойно кластер розділяється, вводяться заборони на будь які дії що можуть привести до втрати цілісності даних. Типовим прикладом є підхід що базується на кворумі, тобто визначається мінімальне число вузлів за яких кластер вважається валідним і може продовжувати роботу. Зазвичай за такого підходу кластер має непарне число вузлів, а значення кворуму визначається як (n-1)/2 + 1, де n — розмір кластеру. Такий спосіб вирішення split-brain синдрому реалізований для реплік в MongoDB.

Примітки[ред.ред. код]

  1. Hazelcast Documentation Version: 3.6. docs.hazelcast.org. Процитовано 2016-02-16.