Обзор¶
Подсистема «Кафка» — мини-фреймворк для построения обменов между «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 и не одобрена ею.