Підсистема асинхронного обміну повідомленнями

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис

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

2. Функції підсистеми

  • Асинхронний обмін повідомленнями

  • Забезпечення гарантій по доставці повідомлень

  • Довгострокове зберігання повідомлень

3. Технічний дизайн підсистеми

messsaging overview.drawio

Підсистема асинхронного обміну повідомленнями побудована на основі Apache Kafka - розподіленої платформи для потокової обробки та розподіленого зберігання повідомлень. Kafka використовує модель публікації-підписки, де виробник (публікуюча сторона) надсилає повідомлення до теми, а споживачі (підписники) підписуються на теми та отримують ці повідомлення.

Для керування та розгортання кластерів Apache Kafka на платформі використовується Strimzi Cluster Operator. Він забезпечує автоматизований спосіб налаштування, масштабування та керування Kafka-кластерами в середовищі OpenShift.

4. Складові підсистеми

4.1. Реєстр

Назва компоненти Представлення на оточенні Походження Призначення

Брокер Kafka

kafka-cluster-kafka

3rd-party

Основний компонент Apache Kafka, який виконує роль посередника для обміну повідомленнями між виробниками та споживачами даних. Він є центральною частиною архітектури Kafka і відповідає за збереження та обробку потоків даних.

ZooKeeper

kafka-cluster-zookeeper

3rd-party

Централізована служба, яка забезпечує розподілену координацію та синхронізацію для розподілених систем. Брокери Kafka використовують ZooKeeper для координації та управління своїм кластером.

Entity Operator

kafka-cluster-entity-operator

3rd-party

Складається з Topic Operator та User Operator. Topic Operator надає засіб керування темами в кластері Kafka за допомогою ресурсів Kubernetes. User Operator надає засіб керування користувачами Kafka за допомогою ресурсів Kubernetes.

Kafka Exporter

kafka-cluster-kafka-exporter

3rd-party

Публікує метрики кластеру Kafka для Підсистема моніторингу подій та сповіщення

4.2. Платформа

Назва компоненти Namespace Представлення на оточенні Походження Репозиторій Призначення

Strimzi Cluster Operator

kafka-operator

strimzi-cluster-operator

3rd-party

github:/epam/edp-ddm-strimzi-kafka-operator

Забезпечує автоматизований спосіб налаштування, масштабування та керування Kafka-кластерами в середовищі OpenShift.

Strimzi Drain Cleaner

kafka-operator

strimzi-drain-cleaner

3rd-party

Бере на себе управління поетапним оновленням під час процесу переносу подів Kafka кластеру між вузлами кластера OpenShift, забезпечуючи переміщення відповідних подів Kafka по одному зі збереженням бажаного рівня реплікації та доступності.

Реєстрова конфігурація Kafka

Реєстр

origin

gerrit:/mdtu-ddm/devops/operators/kafka-operator

Налаштовує реєстровий екземпляр Kafka

Платформна конфігурація Kafka

kafka-operator

origin

github:/epam/edp-ddm-cluster-kafka-operator

Налаштовує Платформний екземпляр 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.