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

12.08.24

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

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

Файлы

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

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

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

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

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

В рамках демонстрации мы будем использовать 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С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

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

28500 руб.

15.11.2022    27267    32    49    

43

Внешние источники данных Программист Бизнес-аналитик 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Розница 3.0 Платные (руб)

Обработка для выгрузки данных из подготовленных СКД в фоновом режиме в базу ClickHouseDB, PostgreSQL, MySQL, в шину данных с поддержкой REST API (CSV, JSON. SQL), в локальные файлы (CSV, JSON, XLS, XLSX) или в Google Sheets. Это дополнительная подключаемая обработка.

18000 руб.

21.08.2024    5151    12    4    

12

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

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

10200 руб.

24.06.2021    23790    60    55    

43

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

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

13200 руб.

19.12.2016    50941    107    106    

76

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Системный администратор Программист 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

60000 руб.

16.11.2018    31887    23    31    

23

Оптовая торговля Розничная торговля Внешние источники данных Прайсы 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

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

15000 руб.

15.05.2024    2541    3    0    

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