API Gateway – платформа для ефективного балансування навантаження
API Gateway – платформа для ефективного балансування навантаження
API Gateway представляє платформу, призначену для ефективного балансування навантаження між обчислювальними вузлами та захисту від зловживання ресурсами. Ця платформа лежить в основі відкритого програмного інтерфейсу до технологій, розроблених в ІСП РАН – api.ispras.ru.
Подібні системи необхідні в тих випадках, коли обчислення потребують значного часу та ресурсів, тоді як одночасних користувачів може бути багато. Якщо обчислення різних користувачів логічно не пов'язані між собою, з'являється можливість перенаправлення завдань користувачів на незалежні обчислювальні вузли. Проте за таких умов не працюють стандартні технології балансування (такі як HAProxy), оскільки ресурсом завжди може скористатися дуже багато людей. Система API Gateway вирішує і цю проблему шляхом розмежування доступу до нижчележачих API за допомогою унікальних ключів.
Кожен користувач обчислювальних ресурсів може зареєструватися на спеціальному сайті, увійти до відповідної групи (наприклад, група "Студенти") і отримати набір унікальних ключів для подальшого використання. Ключ є унікальним рядком, який асоційований з користувачем-власником і сервісом, для якого цей ключ призначений.
У системі зберігаються набори обмежень для ключів кожної групи користувачів. Обмеження на використання ключів виражаються у кількості запитів на секунду, на день та на місяць. Такий підхід дозволяє уникати занадто високого навантаження на обчислювальну систему, що використовується. У випадку, якщо користувач надто часто звертається до API обчислювальної системи, вінотримує як відповідь час, через який він знову зможе зробити запит. Кожен користувач (якщо має на це права), може створити собі не один ключ, а кілька, щоб у нього була можливість свої програми в кількох примірниках з незалежними наборами тимчасових обмежень.
Система використовує у службових цілях відкриті проекти: сховище ключів-значень Redis та сервер програм, що кешує, додатків Varnish Cache. Система API Gateway складається із чотирьох підсистем, кожну з яких можна використовувати окремо від іншої. Це підсистеми обліку користувачів, підсистема управління сервісами, підсистема контролю доступу, підсистема управління ключами.
Підсистема обліку користувачів дозволяє користувачам реєструвати та отримувати ключі для доступу до API. Підсистема написана мовою Ruby і може використовувати як сховища будь-яку реляційну СУБД.
Підсистема контролю доступу є надбудовою до кешируючого сервера додатків Varnish Cache. Надбудова дозволяє Varnish Cache взаємодіяти зі сховищем ключів-значень Redis. Подібна зв'язка дозволяє обробляти більше 10 тисяч запитів на секунду і дозволяє використовувати як фронтенд кілька серверів, тому що Redis також передбачає і розподілений режим роботи. У той же час, використання Redis дозволяє досягти великої пропускної спроможності сервера.
Підсистема управління ключами є сполучною ланкою між підсистемою обліку користувачів та підсистемою контролю доступу. За допомогою простого REST API підсистеми обмінюються даними про ключі, нижчі сервіси та обмеження.
Систему API Gateway можна використовувати для балансування будь-якого набору програм, які реалізують REST API. Це рішення передбачає можливістьвикористання у хмарних середовищах, підтримує роботу у розподіленому режимі та забезпечує високу пропускну спроможність.
На даний момент існує кілька рішень, що надають схожу функціональність. Найчастіше це закриті рішення, розроблені для конкретної компанії, і про принципи їхньої роботи нічого сказати не можна.
Серед відкритих рішень, існує лише 5 аналогічних систем, розглянемо їх.
- apiGrove. Це рішення націлене на Enterprise сектор і передбачає наявність спеціальних додаткових засобів (таких як шина ESB) для своєї роботи. Надає ті ж можливості, що й описана система API Gateway, але дуже складна в налаштуванні та використанні та дозволяє обробляти не більше 2500 запитів на один вузол, що у кілька разів менше ніж API Gateway. Вимагає значно більших апаратних ресурсів, ніж описане рішення.
- WSO2 API Manager. Це рішення також орієнтоване на Enterprise сектор. Ця функціональність також схожа на описану. WSO2 також має на увазі наявність спеціальної інфраструктури, що включає шину Enterprise Service Bus, сервіс Business Activity Monitor і ряду інших сервісів. Вимагає значно більших апаратних ресурсів, ніж описане рішення і може обробляти трохи більше 6000 запитів на секунду тієї ж апаратної платформі.
- Apiaxle. Це рішення багато в чому схоже на API Gateway. Тим не менш, цей проект знаходиться на початковому циклі розробки та працює тільки теоретично. На момент розробки API Gateway робочої версії немає.
- REPOSE. Це рішення надає лише можливості контролю доступу без підтримки балансування навантаження.
- Varnish-apikey. Це рішення використовує кешуючий веб-сервер Varnish-Cache у своїй основі як і API GatewayI. Тимне менш, цей проект так і не був завершений, і на момент останньої версії підтримував роботу лише на одному вузлі з управлінням вручну без будь-яких засобів для управління як політиками доступу, так і балансування навантаження. Крім того, у цьому рішенні є підтримка лише одного статичного правила обмеження доступу для всіх користувачів одночасно.
Розроблене рішення перевищує світовий рівень, зокрема за швидкістю роботи, за простотою використання, за рівнем масштабування і з можливостям балансування.