Підсистема асинхронного обміну повідомленнями
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис
Підсистема, призначення якої є забезпечення асинхронної взаємодії між компонентами реєстру з наданням гарантій по зберіганню, обробці та доставленню повідомлень.
2. Функції підсистеми
-
Асинхронний обмін повідомленнями
-
Забезпечення гарантій по доставці повідомлень
-
Довгострокове зберігання повідомлень
3. Технічний дизайн підсистеми
Підсистема асинхронного обміну повідомленнями побудована на основі Apache Kafka - розподіленої платформи для потокової обробки та розподіленого зберігання повідомлень. Kafka використовує модель публікації-підписки, де виробник (публікуюча сторона) надсилає повідомлення до теми, а споживачі (підписники) підписуються на теми та отримують ці повідомлення.
Для керування та розгортання кластерів Apache Kafka на платформі використовується Strimzi Cluster Operator. Він забезпечує автоматизований спосіб налаштування, масштабування та керування Kafka-кластерами в середовищі OpenShift.
4. Складові підсистеми
4.1. Реєстр
Назва компоненти | Представлення на оточенні | Походження | Призначення |
---|---|---|---|
Брокер Kafka |
|
3rd-party |
Основний компонент Apache Kafka, який виконує роль посередника для обміну повідомленнями між виробниками та споживачами даних. Він є центральною частиною архітектури Kafka і відповідає за збереження та обробку потоків даних. |
ZooKeeper |
|
3rd-party |
Централізована служба, яка забезпечує розподілену координацію та синхронізацію для розподілених систем. Брокери Kafka використовують ZooKeeper для координації та управління своїм кластером. |
Entity Operator |
|
3rd-party |
Складається з Topic Operator та User Operator. Topic Operator надає засіб керування темами в кластері Kafka за допомогою ресурсів Kubernetes. User Operator надає засіб керування користувачами Kafka за допомогою ресурсів Kubernetes. |
Kafka Exporter |
|
3rd-party |
Публікує метрики кластеру Kafka для Підсистема моніторингу подій та сповіщення |
4.2. Платформа
Назва компоненти | Namespace | Представлення на оточенні | Походження | Репозиторій | Призначення |
---|---|---|---|---|---|
Strimzi Cluster Operator |
kafka-operator |
|
3rd-party |
Забезпечує автоматизований спосіб налаштування, масштабування та керування Kafka-кластерами в середовищі OpenShift. |
|
Strimzi Drain Cleaner |
kafka-operator |
|
3rd-party |
Бере на себе управління поетапним оновленням під час процесу переносу подів Kafka кластеру між вузлами кластера OpenShift, забезпечуючи переміщення відповідних подів Kafka по одному зі збереженням бажаного рівня реплікації та доступності. |
|
Реєстрова конфігурація Kafka |
Реєстр |
— |
origin |
Налаштовує реєстровий екземпляр Kafka |
|
Платформна конфігурація Kafka |
kafka-operator |
— |
origin |
Налаштовує Платформний екземпляр Kafka |
5. Технологічний стек
При проектуванні та розробці підсистеми, були використані наступні технології:
6. Атрибути якості підсистеми
6.1. Scalability
Підсистема асинхронного обміну повідомленнями може масштабуватися горизонтально, дозволяючи розподілене зберігання повідомлень та обробку великого обсягу даних. Вона може працювати на кластері з багатьма брокерами, що дозволяє розподіляти навантаження та забезпечувати високу доступність.
6.2. Performance
Kafka підтримує обробку повідомлень у реальному часі та аналіз потокових даних. Він дозволяє писати, читати та обробляти великі обсяги даних у режимі реального часу.
6.3. Security
Комунікація завжди шифрується за допомогою TLS для взаємодії між:
-
Брокерами Kafka
-
Вузлами ZooKeeper
-
Операторами та брокерами Kafka
-
Операторами та вузлами ZooKeeper
-
Експортером Kafka
Також можна налаштувати шифрування TLS між брокерами Kafka та клієнтами.
Kafka використовує аутентифікацію для забезпечення безпечного підключення клієнта до кластеру Kafka. Також кластери Kafka використовують авторизацію для контролю дозволених операцій на брокерах Kafka конкретними клієнтами або користувачами.
6.4. Observability
Підсистема асинхронного обміну повідомленнями підтримує журналювання вхідних запитів та збір метрик продуктивності для подальшого аналізу через веб-інтерфейси відповідних підсистем Платформи.
Детальніше з дизайном підсистем можна ознайомитись у відповідних розділах: |
6.5. Reliability
Kafka забезпечує надійну доставку повідомлень, зберігаючи їх на диску та реплікуючи на кілька брокерів. Це дозволяє уникнути втрати даних навіть при відмовах окремих компонентів системи.
Підсистема резервного копіювання та відновлення включає у себе резервне копіювання файлових систем брокерів Kafka.