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

12.08.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
docker-compose.yml
.yml 1,00Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

В рамках демонстрации мы будем использовать 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    22659    23    49    

39

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    26291    25    1    

28

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

24.04.2017    52553    104    165    

91

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1271    1    0    

3

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

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 организаций (далее Парус) в конфигурацию 1С:Зарплата и управление персоналом, ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

07.06.2021    13688    2    3    

3

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

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

13200 руб.

19.12.2016    48560    97    106    

70
Оставьте свое сообщение