Directum RX и Apache Kafka – Интеграция оргструктуры

48 2

Apache Kafka – распределенный программный брокер сообщений с открытым исходным кодом.

Примеры практического применения интеграции Directum RX и Apache Kafka могут быть разнообразны и особенно полезны для организаций, которые используют в Apache Kafka в качестве единого сервиса обмена данный между системами.

Один из таких примеров -- использование этого брокера для передачи данных в Directum RX из учетной системы Парус. На проекте такая интеграция применялась для актуализации данных Организации, Подразделений, Должностей и Сотрудников. Реализовано решение Directum RX «Интеграция оргструктуры через Kafka».

Рассмотрим этот пример подробнее.

Что такое Apache Kafka и для чего он нужен

Apache Kafka разработан в рамках фонда Apache на языках Java и Scala. Предназначен для создания горизонтально масштабируемой платформы для обработки потоковых данных в реальном времени с высокой пропускной способностью и низкой задержкой. Kafka может подключаться к внешним системам (для импорта и экспорта данных). Использует собственный двоичный протокол передачи данных на основе TCP, группирующий сообщения для уменьшения затрат на оборудования требующегося для поддержания сетевой инфраструктуры. снижения накладных расходов на сеть.

Основные преимущества Apache Kafka

1. Отказоустойчивость. Система обладает распределенной структурой, в которой каждое сообщение копируется и сохраняется на нескольких узлах.

2. Удобство интеграции. Kafka можно использовать с целым рядом протоколов передачи данных, а также подключить к облачным хранилищам и БД.

3. Легкость масштабирования. Система легко расширяется и сокращается при необходимости благодаря использованию «горячего» масштабирования.

4. Безопасность. В Kafka можно тонко настраивать работу для поддержания нужного стандарта достоверности и безопасности информации.

5. Производительность. Генерация, отправление и чтение сообщений здесь реализованы независимо друг от друга, так что система работает одинаково быстро в компактных, так и весьма обширных проектах, обрабатывающих огромные объемы информации.

Сравним Apache Kafka с RabbitMQ

Основные отличия Apache Kafka и RabbitMQ – это принципиально разные модели доставки сообщений.  Apache Kafka работает по принципу pull: получатели сами достают из топика нужные им сообщения. RabbitMQ работает по принципу push: брокер сам отправляет сообщения получателям.

  • Архитектура: Apache Kafka работает в лог-центричной архитектуре, что подходит для обработки потоков данных, а RabbitMQ – в централизованной архитектуре, что позволяет легко управлять очередями.
  • Протоколы: RabbiteMQ поддерживает множество протоколов обмена сообщениями, к примеру, AMQP, STOMP, MQTT. А Apache Kafka использует свой собственный протокол.
  • Хранение сообщений: после подтверждения о доставке RabbitMQ удаляет сообщение, а Apache Kafka сохраняет все сообщения, пока не наступит запланированная очистка.
  • Приоритетность: приоритет для всех сообщений в Kafka одинаков и его нельзя изменять, а RabbitMQ позволяет назначить приоритет сообщениями. Также Kafka гарантирует доставку сообщений в определенном порядке.
  • Масштабируемость: Kafka легко масштабируется горизонтально, что позволяет добавлять новые брокеры для обработки большого объема данных. RabbitMQ также может масштабироваться горизонтально, но это требует большего количества настроек и управления.
  • Распределение сообщений: RabbitMQ предлагает множество опций роутинга и содержит широкий спектр паттернов обработки сообщений (publish/subscrible, request/reply). В Apache Kafka также присутствует функционал publish/subscrible, но она сфокусирована на поддержке большого количества потребителей и обеспечивает упорядоченное хранение и обработку событий.

Шаги по настройке интеграции

Для успешной интеграции с использованием Apache Kafka необходимо выполнить ряд шагов.

1. Установка и настройка Apache Kafka. В первую очередь необходимо установить Apache Kafka и настроить его по требованиям системы. Это включает в себя установку необходимых зависимостей, установку и настройку Kafka на сервере, настройку брокера и топиков (очередь сообщений).

2. Настройка прокси-сервера. Чтобы обеспечить безопасность и стабильную работу интеграции, рекомендуется настроить прокси-сервер для обработки запросов к Kafka брокеру. Настройка прокси-сервера должна включать в себя настройку передачи запросов, проверку авторизации и аутентификации.

Пример реализации

Решение «Интеграция оргструктуры через Kafka» реализует передачу данных в Directum RX из учетной системы Парус. Применяется для актуализации данных Организации, Подразделения, Должности и Сотрудники. Данное решение состоит из справочника с настройками (см. обложка модуля) и фонового процесса «Получить структуру компании из Kafka» (см. фоновый процесс).

Обработка сообщений к Apache Kafka реализованы через фоновый процесс. Формат сообщения реализован в виде XML структуры.

Ниже представлен пример сообщения:

<?xml version="1.0"?>
<orgStructure>
<businessUnits>
  <businessUnit id="338070">
    <name>АО "Рога и копыта"</name>
    <legalName>АО "Рога и копыта"</legalName>
    <tin></tin>
    <trrc></trrc>
  </businessUnit>
</businessUnits>
<departments>
  <department id="338072">
    <departmentName>521-5</departmentName>
    <businessUnit>338070</businessUnit>
    <code>521-5</code>
  </department>
  <department id="338073">
    <departmentName>521-6</departmentName>
    <businessUnit>338070</businessUnit>   
    <code>521-6</code> 
  </department>
</departments>
<employees>
  <employee id="348074"> 
    <lastName>Ериков</lastName>
        <firstName>Олег</firstName>
    <middleName>Евгеньевич</middleName>
    <departmentId>338072</departmentId>
    <jobTitle>Инженер по оборудованию</jobTitle>
    <personNumber>0001021018</personNumber>
    <email></email>
    <phone></phone>
    <login>
      <loginName>erikovov</loginName>
      <authType>Windows</authType>
    </login>
  </employee>
</employees>
</orgStructure>

Обложка модуля

Настройки подключения

Имя – наименование записи справочника.

Наименование топика – имя топика в Apache Kafka.

Тип аутентификации - возможные варианты: Без авторизации, SaslSsl, Plaintext, SaslPlaintext, Ssl.

Id группы - номер группы, который присваивается при создании для возможности подключения потребителей, использующих в качестве параметра соединения этот идентификатор (id).

Серверы – список кластера серверов. Указывается в формате: <Доменное наименование>:<Порт>.

 

Полученное сообщение разбивается на отдельные сообщения для дальнейшей обработки в асинхронном обработчике.

По результатам обработки записывается лог обработки в журнал «Результаты импорта оргструктуры»

Фоновый процесс

Представляет собой стандартный фоновый процесс, используется для выполнения работ в Directum RX, которые запускаются по заданному расписанию В нашем случае фоновый запрос выполняет функцию получения новых данных из Apache Kafka

Резюмируем

Интеграция Apache Kafka и Directum RX позволяет унифицировать протокол обмена данными между различными системами, упрощая процесс интеграции и сокращая количество необходимых коннекторов.

Таким образом, такая интеграция способствует повышению надёжности, эффективности и гибкости системы обработки данных, делая её более устойчивой и адаптивной к изменяющимся условиям.

Алексей Дерюшев

Добрый день. С кафкой взаимодействовали через rest proxy получается? Или все таки какие то библиотеки использовались для взаимодействия с брокером напрямую?

Ансель Зияров

Алексей, через библиотеки

Авторизуйтесь, чтобы написать комментарий