Перейти до основного вмісту

Зʼєднувачі

інформація

Сучасні веб-застосунки складаються з модулів, які працюють на різних обчислювальних машинах, в хмарному просторі чи по іншому розділені на штучні сегменти. Такими елементами може бути сервер веб-застосунків (описаний на базі бізнес-схеми), сервер бази-даних, сервер моніторингу, сервер брокера повідомлень тощо. Зʼєднувачі покликані створити взаємодію між цими серверами, іншими підсистемами тощо.

Життєвий цикл запуску

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

initiator-procedure

інформація

Після повноцінного запуску одного зʼєднувача переходить виконання запуску наступного сервісу, тобто, зʼєднувач інтеграцій почне своє виконання лише після завершення запуску останнього підключеного (визначається конфігурацією ядра обчислень) сервіса.

Перелік зʼєднувачів

Станом на зараз X-Fiber підтримує наступний ряд зʼєднувачів:

НазваОбовʼязковістьПорядок запускуПризначення
ComputeConnector+1Запуск сервісів ядра обчислень
IntegrationConnector-2Запуск інтеграцій ядра обчислень
MongoDbConnector-3Створення зʼєднання з базою даних MongoDB
TypeormConnector-4Створення зʼєднання з SQL базою даних шляхом налаштування TypeORM
RedisConnector-5Створення зʼєднання з inMemory сховищем Redis
RabbitMQConnector-6Створення зʼєднання з сервером брокера повідомлень RabbitMQ

де:

  • Назва - назва модуля ядра обчислень.
  • Обовʼязковість - обовʼязковість включення модуля в роботу ядра обчислень.
  • Порядок включення - зʼєднувачі в ядрі обчислень запускаються в конкретній послідовності, порядок відключення відбувається в протилежному порядку.
  • Призначення - функціональний опис зʼєднувача.

ComputeConnector

інформація

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

В сферу відповідальності роботи з'єднувача обчислень входять:

IntegrationConnector

warning

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

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

небезпека

Інтеграційні рішення разом з зʼєднанням інтеграційних рішень знаходяться в активній розробці. Повноцінна підтримка інтеграційних рішень буде надана з виходом релізу v2.0.0, наразі надається їх роль та призначення.

MongoConnector

інформація

Однією з найпопулярнішою NoSQL базою даних є MongoDB. X-Fiber підтримує роботу з цією базою завдяки бібліотеці mongoose. MongoConnector призначений для обробки зʼєднань з базою даних, можливостей перепідключення, створення реплікацій тощо. Зʼєднувач підтримує просунуті можливості конфігурації сервера бази даних, приєднання до реплікацій, побудова підключення і т.д..

порада

Ми радимо використовувати для одного ядра обчислень один тип бази даних, це суттєво спрощує побудову бізнес-логіки сервісу.

порада

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

TypeormConnector

інформація

Більшість веб-застосунків використовують SQL бази даних, і TypeORM виступає одним з найпопулярніших рішень для їх управління. TypeORM надає як високорівневі інструменти для створення запитів, так і низькорівневі можливості, що дозволяють прямо виконувати SQL запити до бази даних. X-Fiber підтримує роботу з різними типами SQL баз даних за допомогою TypeORM, що дозволяє забезпечити ефективне управління даними у веб-застосунках.

примітка

Найближчі перспективи використання TypeORM - впровадження її також і в рішення для нативних застосунків, реалізацію, яких планується впровадити з v4.0.0 та послідуючих релізах.

порада

Ми радимо використовувати для одного ядра обчислень один тип бази даних, це суттєво спрощує побудову бізнес-логіки сервісу.

порада

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

RedisConnector

Redis є одним з найпопулярніших, простих та ефективних NoSQL баз даних. X-Fiber використовує його для низки завдань:

  1. Сховище сессій: Зберігання сесій в Redis сприяє горизонтальній масштабованості, оскільки відсутність стану в ядрах обчислень дозволяє легко розподіляти сесії між різними серверами. Це робиться за рахунок того що сесії зберігаються в Redis з можливостями підтримки Sentinel та ряду інших механізмів підвищення надійності. Крім того, це зменшує ризик втрати даних у випадку відмови сервера, оскільки сесії зберігаються віддалено та можуть бути відновлені з інших серверів у випадку потреби.

  2. Кешування: Такий механізм кешування, яким користується X-Fiber, є ефективним та гнучким рішенням для оптимізації доступу до даних. Він ґрунтується на простому принципі створення ключа доступу до даних на основі їх ідентифікації та хешування, спільно з прапором актуальності. При зміні даних новий об'єкт створюється в Redis з відповідним ідентифікатором, хешем даних та прапором актуальності, тоді як старий об'єкт видаляється. Такий підхід спрощує роботу з кешуванням та дозволяє оптимізувати швидкодію доступу до інформації, що є важливим аспектом для веб-застосунків.

  3. Ролі та права доступу: Механізми Redis дозволяють ефективно керувати ролями та правами доступу. В одній операції можна перевірити наявність конкретної ролі та прав доступу до неї. Такий механізм дозволяє легко налаштовувати систему безпеки та забезпечує швидкий доступ до перевірки або змін цих конструкцій.

  4. Кімнати та площі: Групові чати та подібні за своєю природою бізнес-сценарії потребують механізмів взаємодії через WebSocket, які забезпечують можливість штучної ізоляції різних з'єднань, керування підключенням та відключенням інтерфейсів тощо. Redis відмінно підходить для створення таких "зон", де взаємодія відбувається на рівні окремих "кімнат".

  5. Стрімінг файлів між сервісами: Механізм стрімінгу, який надається Redis, дозволяє передавати великі обʼєми файлів між сервісами. Один сервіс починає завантаження файлу через стрім в Redis, подає сигнал через брокер повідомлень про можливість відвантаження. Другий сервіс отримавши подію про початок завантаження - починає відвантажувати.

інформація

X-Fiber підтримує широкі можливості конфігураційного налаштування Redis разом з режимом роботи, підтримкою Sentinel, організації роботи master - slave, можливостями перепідключення тощо.

RabbitMQConnector

інформація

X-Fiber використовує RabbitMQConnector для комунікації між сервісами, реалізовуючи механізми передачі даних через черги, обмінники черги, а також надає можливості публікацій та підписок на різні події. Завдяки брокеру повідомлень можлива ієрархія взаємодії, або створення ланцюгів.

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