Перейти к содержанию

Обзор

Подсистема «Кафка» — мини-фреймворк для построения обменов между «1С:Предприятие 8.3» и Apache Kafka. Она берёт на себя всё, что лежит между регистрацией данных к обмену и брокером: расписание, потоки, формат сообщений, позиции чтения, журналирование и администрирование кластера.

Прикладной разработчик реализует только две вещи:

  • какие данные и в каком виде уходят в Kafka;
  • что делать с полученным сообщением в информационной базе.

Как это устроено

Регламентное задание / прикладной код
        │
        ▼
  Ядро подсистемы        сценарии обмена: пакеты, потоки, сериализация, позиции
        │
        ▼
  Клиент шлюза           обращения к шлюзу по HTTP
        │  HTTP
        ▼
  Kafka HTTP Gateway  ───▶  Apache Kafka

С брокерами работает Kafka HTTP Gateway — отдельный сервис, который ставится рядом с сервером 1С и общается с ним по HTTP. На стороне 1С не нужны ни внешние компоненты, ни прямой сетевой доступ к брокерам, ни зависимость от БСП.

Подсистема встраивается в основную конфигурацию как конфигурация поставщика и остаётся на поддержке: её объекты закрыты от изменения, а конкретные обмены надстраиваются над ней — обработками конфигурации или расширениями. Благодаря этому обновление подсистемы не затрагивает прикладные доработки. Подробности — в разделе Установка.

Где взять

Компонент GitHub GitFlic
Подсистема «Кафка» релизы релизы
Kafka HTTP Gateway релизы релизы

Подсистема и шлюз обновляются согласованно: они общаются по двоичному протоколу с номером версии, и рассогласование версий приводит к ошибке обмена. Устанавливайте их из релизов одной версии — см. Установка и Шлюз.

Основные понятия

Понятие Что это в подсистеме
Кластер элемент справочника «Кафка: Кластеры»: адрес шлюза и параметры подключения к Kafka
Шина элемент справочника «Кафка: Шины обмена»: один настроенный обмен — тема, направление, форматы, расписание
Тема топик Kafka; на приёме может задаваться шаблоном
Раздел партиция темы; единица параллельного чтения
Позиция смещение (offset) следующего читаемого сообщения; хранится в информационной базе
Сердес способ сериализации и десериализации ключа или значения сообщения
Обработчик обмена обработка 1С, которая готовит отправляемые данные и принимает полученные
Узел узел плана обмена, по которому регистрируются изменения для отправки
Отправитель клиент Kafka, отправляющий сообщения (producer)
Получатель клиент Kafka, читающий сообщения (consumer)
Группа получателей consumer group, от имени которой читается тема

Направления обмена

Один обмен работает в одну сторону — это задаётся реквизитом «Направление обмена» в шине.

Выгрузка (1С → Kafka). Данные регистрируются к обмену штатными средствами платформы, в назначенное время подсистема забирает зарегистрированные изменения, отдаёт их обработчику и отправляет в тему. Отправленное снимается с регистрации, неотправленное остаётся ждать следующего сеанса. См. Отправка данных.

Загрузка (Kafka → 1С). Подсистема читает разделы темы, разбирает сообщения по правилам сердеса и передаёт каждое сообщение в процедуру прикладной обработки. Позиции чтения фиксируются после того, как данные приняты базой. См. Получение данных.

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

С чего начать

Лицензия

Apache License 2.0. Автор: Сергей Савельев (serge@savel.pro).

Apache®, Apache Kafka® и логотип Apache Kafka — товарные знаки The Apache Software Foundation. Подсистема не аффилирована с The Apache Software Foundation и не одобрена ею.