Apache Kafka – распределенный программный брокер сообщений с открытым исходным кодом.
Примеры практического применения интеграции Directum RX и Apache Kafka могут быть разнообразны и особенно полезны для организаций, которые используют в Apache Kafka в качестве единого сервиса обмена данный между системами.
Один из таких примеров -- использование этого брокера для передачи данных в Directum RX из учетной системы Парус. На проекте такая интеграция применялась для актуализации данных Организации, Подразделений, Должностей и Сотрудников. Реализовано решение Directum RX «Интеграция оргструктуры через Kafka».
Рассмотрим этот пример подробнее.
Apache Kafka разработан в рамках фонда Apache на языках Java и Scala. Предназначен для создания горизонтально масштабируемой платформы для обработки потоковых данных в реальном времени с высокой пропускной способностью и низкой задержкой. Kafka может подключаться к внешним системам (для импорта и экспорта данных). Использует собственный двоичный протокол передачи данных на основе TCP, группирующий сообщения для уменьшения затрат на оборудования требующегося для поддержания сетевой инфраструктуры. снижения накладных расходов на сеть.
1. Отказоустойчивость. Система обладает распределенной структурой, в которой каждое сообщение копируется и сохраняется на нескольких узлах.
2. Удобство интеграции. Kafka можно использовать с целым рядом протоколов передачи данных, а также подключить к облачным хранилищам и БД.
3. Легкость масштабирования. Система легко расширяется и сокращается при необходимости благодаря использованию «горячего» масштабирования.
4. Безопасность. В Kafka можно тонко настраивать работу для поддержания нужного стандарта достоверности и безопасности информации.
5. Производительность. Генерация, отправление и чтение сообщений здесь реализованы независимо друг от друга, так что система работает одинаково быстро в компактных, так и весьма обширных проектах, обрабатывающих огромные объемы информации.
Основные отличия Apache Kafka и RabbitMQ – это принципиально разные модели доставки сообщений. Apache Kafka работает по принципу pull: получатели сами достают из топика нужные им сообщения. RabbitMQ работает по принципу push: брокер сам отправляет сообщения получателям.
Для успешной интеграции с использованием 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 получается? Или все таки какие то библиотеки использовались для взаимодействия с брокером напрямую?
Алексей, через библиотеки
Авторизуйтесь, чтобы написать комментарий