Розподілені системи: визначення, особливості та основні принципи

Алгоритми консенсусу бази даних

БД складні для реалізації в розподілених системах захисту, оскільки вони вимагають, щоб кожен вузол погоджував правильне дію переривання або фіксації. Це якість відомо як консенсус, і він є фундаментальною проблемою в будівництві распредсистемы. Досягнення типу угоди, необхідного для проблеми «фіксації транзакції», є простим, якщо беруть участь процеси і мережа повністю надійні. Тим не менш реальні системи схильні ряду можливих збоїв процесів розбиття на мережі, втрачені, спотворені або дубльовані повідомлення.

Це створює проблему, і неможливо гарантувати, що правильний консенсус буде досягнуто протягом обмеженого періоду часу в ненадійної мережі. На практиці існують алгоритми, які досить швидко досягають консенсусу в ненадійної мережі. Кассандра фактично забезпечує легкі транзакції за допомогою використання алгоритму Paxos для розподіленого консенсусу.

Розподілені обчислення – це ключ до припливу обробки великих даних, який використовується в останні роки. Це метод розбиття величезною завдання, наприклад, сукупних 100 мільярдів записів, з яких жоден комп’ютер не здатний практично нічого виконувати самостійно, на безліч невеликих завдань, що можуть вписуватися в єдину машину. Розробник розбиває свою величезну задачу на багато більш дрібні, виконує їх на багатьох машинах паралельно, збирає дані відповідним чином, у такому випадку буде вирішена первісна проблема.

Цей підхід дозволяє масштабувати по горизонталі – коли є велике завдання, просто додається більше вузлів в розрахунок. Ці завдання протягом багатьох років виконує модель програмування MapReduce, пов’язана з реалізацією для паралельної обробки та генерації великих наборів даних з використанням розподіленого алгоритму на кластері.

В даний час MapReduce дещо застаріла і приносить деякі проблеми. З’явилися інші архітектури, які вирішують ці проблеми. А саме, Lambda Architecture для розподіленої системи обробки потоків. Досягнення в цій галузі принесли нові інструменти Kafka Streams, Apache Spark, Apache Storm, Apache Samza.

Дивіться також:  Текстура гірських порід: класифікація, види та характеристики