Split-brain
Split-brain syndrome — (дослівно, «синдром розділенного мозку» по аналогії з медичним терміном) в інформатиці, стан розподіленої системи, коли за певних причин вона розпадається на дві чи більше частин і кожна частина продовжує функціонувати незалежно як окремий кластер, в результаті чого виникають колізії даних, що ускладнює, або навіть робить неможливим їх зворотнє об'єднання в єдину систему.
Наприклад, є кластер з 11 вузлів і раптом мережа розділяється таким чином, що 6 вузлів не бачать інші 5. Після певної кількості невдалих спроб поновити зв'язок отримуємо два незалежних кластера — 6-вузловий і 5-вузловий. При чому кожен кластер «думає» що просто втрачено відповідно 5 і 6 вузлів, що він єдиний функціонуючий і продовжує працювати.
Способи вирішення
Всі підходи розв'язання проблеми діляться на два типи: оптимістичний та песимістичний.
- Оптимістичний дозволяє розділеним вузлам працювати у звичайному режимі — це забезпечує вищий рівень доступності за рахунок коректності даних. Щойно зв'язок поновлюється, виникає необхідність в автоматичному чи ручному узгодженню даних. Такий підхід використовується в Hazelcast, де узгодження даних відбувається автоматично використовуючи різні політики об'єднання.[1]
- Песимістичний підхід найвищим пріоритетом ставить консистентність даних за рахунок доступності. Щойно кластер розділяється, вводяться заборони на будь-які дії що можуть призвести до втрати цілісності даних. Типовим прикладом є підхід що базується на кворумі, тобто визначається мінімальне число вузлів за яких кластер вважається валідним і може продовжувати роботу. Зазвичай за такого підходу кластер має непарне число вузлів, а значення кворуму визначається як (n-1)/2 + 1, де n — розмір кластеру. Такий спосіб вирішення split-brain синдрому реалізований для реплік в MongoDB.
Примітки
- ↑ Hazelcast Documentation Version: 3.6. docs.hazelcast.org. Процитовано 16 лютого 2016.