Кілька цікавих питань. Я думаю, ви можете трохи не зрозуміти, як працюють "суперкомп'ютери", побудовані за допомогою Raspberry Pis. Вони не функціонують як система автоматичного розподілу навантаження. Вони розроблені для чогось, що називається паралельним програмуванням , де складне завдання розбивається на частини, які можна виконати одночасно. Головний Pi в кластері (головний вузол) відповідає за організацію загального завдання, і кожен Pi в кластері (клієнтські вузли) виконує свою виділену роботу і повідомляє результати назад до головного вузла. Ключові слова для цього є бібліотеки, такі як OpenMPI .
Крім того, створені кластери Raspberry Pi не були побудовані як ефективні обчислювальні пристрої. Вони були побудовані як платформи розвитку . Купувати 32 Raspberry Pis значно дешевше, ніж 32 настільних ПК. Ви можете розробити та протестувати програмне забезпечення для паралельного програмування набагато дешевше. Єдиною альтернативою, якщо у вас немає Pis або ПК, є запит часу на процесор на фактичному суперкомп'ютері. Залежно від розміру комп’ютера, про який йде мова, це може коштувати грошей або мати тривалий час очікування, перш ніж ресурси будуть доступні. Отже, чому люди створили свої власні особисті кластери. Запустити додаток на реальному комп'ютері має сенс лише тоді, коли ви знаєте, що це працює!
Отже, маючи це на увазі та переходячи до ваших конкретних питань.
У належному кластері Pis не виступають як єдиний віртуальний комп'ютер. Ви маєте слабкий контроль над кожним Pi у вигляді завдання або системи розподілу ресурсів, як-от Sun Grid Engine . Завдання розподіляються на вузли за потребою, а після завершення завдань ресурси цього вузла звільняються для нових завдань.
У кластері, оскільки кожен Pi працює з власною копією Linux, кожен Pi зберігає локальний контроль над своїми портами GPIO. Я не впевнений, як програмне забезпечення насправді використовує це в паралельному обчислювальному середовищі, але ви є.
Кластер насправді не робить Pi швидше, тому що це не один комп'ютер. Що ви отримуєте - це просто можливість зробити більше за один раз. Ви не обмежуєтесь кратними двома. Однак існує реальна практична верхня межа для кластеризованих комп'ютерів залежно від завдань, які ви виконуєте. Уявіть, що ви проводите паралельний обчислення для багатьох Pis, для яких потрібно 200 кроків. Однак для кожного наступного кроку потрібна інформація, яку кожен Pi розраховував на своєму попередньому кроці. Отже, кожному Pi потрібно отримувати дані від кожної іншої Pi кожної ітерації. Залежно від часу, який кожна ітерація потребує на обчислення, ви можете витратити більше часу на надсилання даних, ніж на обчислення. Ось чому більшість суперкомп'ютерів використовують InfiniBandмережа. Це дуже швидко, тому ви можете зробити більше обчислень. Рішення цього полягає в тому, щоб використовувати меншу кількість Pis, але змусити їх робити більшу роботу з кожною ітерацією, але це може бути неможливим залежно від алгоритму. Звідси практична верхня межа. (Для Pis це було б особливо погано, оскільки USB Ethernet досить повільний.)
Отже, до практичного застосування, розповсюдженого веб-хостингу! Ви можете скористатися кількома Pis тут, це просто не звичайний кластер. Скажіть, у вас є 5 піс. Ми будемо називати їх GatewayPi, WebPi1, WebPi2, WebPi3 та DataPi. GatewayPi стикається з Інтернетом, запускаючи Nginix для обробки веб-запитів, але не робить ніякої обробки. Натомість це балансування навантаження. Він використовує проксі і випадковим чином пересилає вхідний запит на WebPi1, WebPi2 або WebPi3. Ми лише втричі підвищили потужність нашої веб-інфраструктури, тому що тепер ми можемо обробляти більше запитів одночасно. Що з DataPi? DataPi підключив жорсткий диск, який зберігає всі наші веб-дані та працює на сервері NFS. WebPiX змонтує спільний доступ до NFS, щоб він отримав доступ до даних для обробки. Таким чином, нам потрібно запускати резервні копії лише в одному місці та економити на диску.
Що я тільки що описав - це по суті модель, якою користуються великі компанії, такі як Google і Facebook, але зменшується до розміру Raspberry Pi. Єдина уловка - через витрати на Піс - це, по суті, створення тієї самої платформи розробки (але для веб-сервісу), що і кластер Pis для паралельного програмування. Використовуючи декілька Pis, через їх відносно низьку обчислювальну здатність незабаром втрачається продуктивність до енергоспоживання, коли ви рухаєтесь до обробки великої кількості даних. Але тільки для навчання? Вони ідеальні.