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

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

Загальне уявлення про систему

Розподілена система дозволяє реалізувати спільне використання ресурсів (включаючи програмне забезпечення), підключених до мережі в один і той же час.

Приклади поширення системи:

  1. Традиційний стек. Ці бази даних зберігаються у файловій системі однієї машини. Всякий раз, коли користувач хоче отримати інформацію, він напряму спілкується з цією машиною. Щоб поширити цю систему баз даних, потрібно, щоб вона працювала на кількох ПК одночасно.
  2. Розподілена архітектура.

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

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

На корпоративному рівні розподілена система управління часто передбачає виконання різних кроків. У бізнес-процесах у найбільш ефективних місцях мережі комп’ютерів підприємства. Наприклад, у типовому розподіл з використанням трирівневої моделі розподіленої системи обробки даних виконується на ПК в місці знаходження користувача, обробка бізнесу виконується на віддаленому комп’ютері, а доступ до бази даних і обробка даних здійснюється абсолютно на іншому комп’ютері, який забезпечує централізований доступ для багатьох бізнес-процесів. Як правило, цей вид розподілених обчислень використовує модель взаємодії “клієнт-сервер”.

Основні завдання

До основних завдань розподіленої системи управління відносяться:

  1. Прозорість – досягнення одного системного образу без приховування деталей розташування, доступу, міграції, паралелізму, збою, переміщення, збереження і ресурсів для користувачів.
  2. Відкритість – спрощення налаштування і зміни мережі.
  3. Надійність – порівняно з єдиною системою управління вона повинна бути надійної, послідовної і мати високу ймовірність маскування помилок.
  4. Продуктивність – порівняно з іншими моделями, розподілені дають підвищення продуктивності.
  5. Масштабованість – ці розподілені управляючі системи повинні бути змінними по відношенню до території застосування, адміністрування або розміром.

До завдань распредсистем відносяться:

  1. Безпека – велика проблема в розподіленому середовищі, особливо при використанні загальнодоступних мереж.
  2. Відмовостійкість – може бути жорсткою, коли модель побудована на основі ненадійних компонентів.
  3. Координацію та розподіл ресурсів – можуть бути важкими, якщо немає належних протоколів або необхідної політики.

Розподілена обчислювальна середа

(DCE) є широко використовуваним галузевим стандартом, що підтримує подібні розподілені обчислення. В Інтернеті сторонні постачальники пропонують деякі узагальнені послуги, які вписуються в цю модель.

Грід-обчислення – це обчислювальна модель з розподіленою архітектурою великої кількості комп’ютерів, пов’язаних з вирішенням складного завдання. У обчислювальної моделі сітки сервери або персональні комп’ютери виконують незалежні завдання та слабо пов’язані між собою мережею Інтернет або низькошвидкісними мережами.

Найбільшим проектом grid-обчислень є SETI@home, в якому окремі власники комп’ютерів добровільно виконують деякі зі своїх циклів обробки багатозадачності, використовуючи свій комп’ютер для проекту пошуку позаземного розуму (SETI). Ця комп’ютерна проблема використовує тисячі комп’ютерів для завантаження та пошуку даних радіотелескопа.

Одним з перших застосувань grid-обчислень було порушення криптографічного коду групою, яка тепер відома як distributed.net. Ця група також описує свою модель як розподілені обчислення.

Дивіться також:  Чеський технічний університет у Празі: факультети, відомі випускники

Масштабування бази даних

Поширення нової інформації від ведучого до веденого не відбувається миттєво. Насправді існує тимчасове вікно, в якому можна отримати застарілу інформацію. Якби це було не так, продуктивність запису постраждала б, так як довелося б синхронно чекати поширення даних розподілених систем. Вони поставляються з кількома компромісами.

Використовуючи підхід підпорядкованої бази даних, можна горизонтально масштабувати трафік читання в деякій мірі. Тут багато варіантів. Але просто потрібно розділити трафік запису на кілька серверів, оскільки він не може його обробляти. Один із способів – використовувати стратегію реплікації з декількома майстрами. Там замість підлеглих є кілька основних вузлів, які підтримують читання і запис.

Інший метод називається sharding (поділ). З допомогою нього сервер розбивається на кілька менших серверів, званих осколками. Ці осколки мають різні записи, створюються правила про те, які записи потрапляють у якийсь уламок. Дуже важливо створити таке правило, щоб дані поширювалися рівномірно. Можливим підходом до цього є визначення діапазонів згідно з деякою інформацією про записи.

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

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

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

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

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

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

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

Файлові системи зберігання і тиражування

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

Наприклад, Yahoo відома тим, що працює HDFS на більш ніж 42 000 вузлів для зберігання 600 петабайт даних, ще з 2011 року. “Вікіпедія” визначає різницю в тому, що розподілені файлові системи дозволяють доступ до файлів з використанням тих же інтерфейсів і семантики, що і локальні файли, а не через інтерфейс API, такий як мова запитів Cassandra (CQL).

Дивіться також:  Рекрут - це хто такий? Походження, значення, синоніми та пропозиції

Розподілена файлова система Hadoop (HDFS) – це система, що використовується для обчислень через інфраструктуру Hadoop. Володіючи широким розповсюдженням, він використовується для зберігання і тиражування великих файлів (розмір GB або TB) на багатьох машинах. Його архітектура складається в основному з NameNodes і DataNodes.

NameNodes несе відповідальність за збереження метаданих про кластері, наприклад, якийсь вузол містить блоки файлів. Вони виступають в якості координаторів мережі, з’ясовуючи, де краще зберігати і копіювати файли, відстежуючи стан системи. DataNodes просто зберігають файли і виконують команди, такі як реплікація файлу, нова запис та інші.

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

Міжпланетна файлова система (IPFS) являє собою захоплюючий новий спеціальний протокол/мережа для розподіленої файлової системи. Використовуючи технологію Blockchain, вона може похвалитися повністю децентралізованою архітектурою без єдиного власника або точки відмови.

IPFS пропонує систему іменування (аналогічну DNS), звану IPNS, і дозволяє користувачам легко отримувати інформацію. Вона зберігає файл через історичне керування версіями, подібно до того, як робить Git. Це дозволяє отримати доступ до всіх попередніх станів файлу. Він все ще переживає важкий розвиток (v0.4 на момент написання), але вже бачив проекти, зацікавлені у його створенні (FileCoin).

Система передачі повідомлень

Системи обміну повідомленнями забезпечують центральне місце для зберігання і поширення повідомлень всередині загальної системи. Вони дозволяють відокремити прикладну логіку від безпосереднього спілкування з іншими системами.

Відомий масштаб – кластер Kafka LinkedIn обробляв 1 трильйон повідомлень у день з піками в 4,5 мільйона повідомлень в секунду.

Простіше кажучи, платформа обміну повідомленнями працює наступним чином:

  1. Повідомлення передається з додатка, яке потенційно створює його, зване продюсером, переходить в платформу і зчитується з декількох програм, званих споживачами.
  2. Якщо потрібно зберегти певну подію в кількох місцях, наприклад, створення користувача для бази даних, сховища, служби відправки електронної пошти, то платформа обміну повідомленнями є самим чистим способом поширення цього повідомлення.

Є декілька популярних першокласних платформ обміну повідомленнями.

RabbitMQ – брокер повідомлень, який дозволяє більш тонко налаштовувати управління їх траєкторіями з допомогою правил маршрутизації та інших легко параметрів. Можна назвати «розумним» брокером, оскільки в ньому багато логіки і щільно відстежує повідомлення, які проходять через нього. Надає параметри для AP і CP з CAP.

Kafka – брокер повідомлень, який трохи нижче по функціональності, так як в ньому не відстежується, які повідомлення були прочитані, і не допускає складної логіки маршрутизації. Це допомагає досягти дивовижної продуктивності і представляє найбільшу перспективу в цьому просторі з активною розробкою розподілених систем співтовариства open-source і підтримкою команди Confluent. “Кафка” користується найбільшим успіхом у високотехнологічних компаній.

Програми взаємодії машин

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

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

Дивіться також:  Про спеціальністю Програмування в компютерних системах

Приклади таких програм:

  1. Відома шкала – BitTorrent рой 193 000 вузлів для епізоду гри престолів.
  2. Базова реєстрова технологія розподілених систем Blockchain.

Розподілені регістри можна розглядати як незмінну, доступну тільки для додатків базу даних, яка реплікується, синхронізується і ділиться на всіх вузлах распредсети.

Відома шкала – мережа Ethereum – мала 4,3 мільйона транзакцій в день 4 січня 2018 року. Вони використовують шаблон Event Sourcing, що дозволяє відновити стан бази за будь-який час.

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

Blockchain – це розподілена книга з впорядкованим списком всіх транзакцій, які коли-небудь відбувалися в його мережі. Операції групуються і зберігаються в блоках. Весь блок-ланцюжок по суті є зв’язаним списком блоків. Зазначені блоки дороги для створення і тісно пов’язані один з одним за допомогою криптографії. Простіше кажучи, кожен блок містить спеціальний хеш (який починається з X кількості нулів) вмісту поточного блоку (у вигляді дерева Merkle) плюс хеш попереднього блоку. Для цього хеш потрібна велика потужність процесора.

Приклади розподілених операційних систем

Типи систем з’являються для користувача, оскільки вони є однокористувачевими системами. Вони ділять свою пам’ять, диск і користувач не відчувають труднощів при навігації за даними. Користувач зберігає у своєму ПК, і файл зберігається в декількох місцях, тобто на приєднаних комп’ютерах, так що втрачені дані можуть легко відновитися.

Приклади розподілених операційних систем:

  1. Windows Server 2003;
  2. Сервер Windows 2008;
  3. Сервер Windows 2012;
  4. UbuntuLinux (сервер Apache).

Якщо який-небудь комп’ютер завантажується вище, тобто якщо багато запити обмінюються між окремими ПК, так відбувається балансування навантаження. У цьому випадку запити поширюються на сусідній ПК. Якщо в мережі стає більше навантаження, тоді її можна розширити, додавши в мережу більше систем. В мережевому файлі і папках синхронізуються, і угоди про імена використовуються таким чином, щоб при витяганні даних не виникало помилок.

Кешування також використовується при маніпулюванні даними. Для найменування файлів на всіх комп’ютерах використовується один простір імені. Але файлова система діє для кожного комп’ютера. Якщо у файлі з’являються оновлення, то він записується на один комп’ютер, і зміни передаються на всі комп’ютери, тому файл виглядає таким же.

У процесі читання / запису відбувається блокування файлів, тому між різними комп’ютерами не відбувається взаємоблокування. Також відбуваються сеанси, такі як читання, запис файлів за один сеанс і закриття сеансу, а потім інший користувач може зробити те ж саме і так далі.

Переваги використання

Операційна система розроблена для полегшення повсякденного життя людей. Для користувацьких переваг і потреб операційна система може бути однокористувальницької або розподіленою. В системі розподілених ресурсів багато комп’ютери зв’язані один з одним і спільно використовують свої ресурси.

Переваги такої роботи:

  1. Якщо один ПК в такій системі зіпсований або пошкоджений, тоді інший вузол або комп’ютер подбають про працездатності.
  2. Можна легко додати більше ресурсів.
  3. Ресурси, такі як принтери, можуть обслуговувати декілька комп’ютерів.

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