Использование Compact-топиков в Kafka

12.08.24

Интеграция - Внешние источники данных

Для хранения Объектных типов данных в Kafka существует очень удобный функционал, который обеспечивает отсутствие дублей данных.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
docker-compose.yml
.yml 1,00Kb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

В рамках демонстрации мы будем использовать open-source компоненту для работы с Kafka от компании ДНС.

https://github.com/skalkindv/onec_librdkafka

 

Для хранения Объектных типов данных в Kafka существует очень удобный функционал в Kafka, который обеспечивает отсутствие необходимости держать дубли данных в Топике.

Чтобы проверить это на практике, вы можете развернуть Kafka в докере, файл в приложенных.

Вот его листинг: 

version: "3.9"
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    hostname: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - 2181:2181

  kafka:
    image: confluentinc/cp-kafka:latest
    depends_on:
      - zookeeper
    ports:
      - 29092:29092
    hostname: kafka
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1    

  kafka-ui:
    image: provectuslabs/kafka-ui
    container_name: kafka-ui
    ports:
      - 8090:8080
    restart: always
    environment:
      - KAFKA_CLUSTERS_0_NAME=local
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:29092
      - KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
    links:
      - kafka
      - zookeeper
 

Далее с помощью инструмента Offset Explorer 2.0 можно создать свой топик и выставить у него нужные настройки.

Самая важная настройка - это cleanup.policy, она вместо стандартной delete, должна быть compact.

 

 

Теперь Kafka с этим Топиком будет работать по другому, она будет удалять сообщения не только стандартным механизмом, но еще и одинаковые по одному и тому же ключу. И будет она это делать особым способом.

Так как в Kafka топике сообщения хранятся не в виде одного отдельного файла привязанного к топику, а во многих файлах - сегментах (Segment).

Kafka пишет новые сообщения только в Активный сегмент, а чистить сообщения будет только в неактивных сегментах.

 

 

По умолчанию в настройках топика сегмент становится неактивным когда он вырастает до 1 Гигабайта или сообщения в сегменте старше 7 дней.

 

 

Еще одна важная настройка min.cleanable.dirty.ratio - она говорит о том, какое соотношение должно быть очищенных сегментов к грязным, чтобы запустился процесс чистки грязного сегмента.

 

 

Т.е. после того как сегмент становится неактивным, он автоматически становится "Грязным" (процедура очистки дублей по нему не срабатывала). После того как она сработает сегмент станет "Чистым" (В чистых сегментах сообщений с одинаковыми ключами быть не может). Из этого можно сделать вывод, что в топике могут быть дубли только из-за того что сообщения с одинаковыми ключами или в Активном или в Грязных сегментах. И следующий  вывод - Активный сегмент всегда грязный, по нему очистка не работает.

Мы можем уменьшить размер сегмента и установить его равным, например, 10 МБ, и записать туда много сообщений, где ключи будут дублироваться.

 

 

После первой отправки у нас будут сообщения начинаться со смещения 0.

 

 

После нескольких отправок одинаковых данных, мы увидим другую картину.

 

 

В этом году я подался как докладчик на Инфостарт с темой о Kafka, прошу проголосовать за меня:

https://event.infostart.ru/2024/agenda/2156764/

Вступайте в нашу телеграмм-группу Инфостарт

Kafka брокер сообщений compact

См. также

Внешние источники данных Разработчик Аналитик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

35000 руб.

15.11.2022    33094    50    49    

50

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (Базовая, ПРОФ, КОРП, ФРЕШ (тонкий клиент)).

17080 руб.

19.12.2016    55145    128    107    

86

Производство готовой продукции (работ, услуг) Внешние источники данных 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник 1С "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

10370 руб.

24.06.2021    26533    65    55    

48

Внешние источники данных Мастера заполнения Аналитик Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 1С:Документооборот Россия Платные (руб)

Решение позволяет по ИНН производить проверку контрагентов, получая сведения: видов деятельности, данных ЕГРЮЛ, связанных организаций, отчетности, налогов, финансовый анализ, а также в один клик заполнить карточки справочников контрагентов/партнеров по ИНН в программе 1С по данным ФНС. Попробуйте ДЕМО версию перед покупкой.

5000 руб.

12.08.2025    4214    12    20    

12

Внешние источники данных Разработчик Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Внешняя обработка предназначена для загрузки/импорта данных по продаже топлива из АСУ "Топаз-АЗС" в 1С:Бухгалтерия предприятия 3.0 . Версия формата данных 3.15

5000 руб.

13.05.2020    16586    18    18    

17
Для отправки сообщения требуется регистрация/авторизация