Задать вопрос
@HydrogenOxyde

Как часто стоит открывать и закрывать соединение при записи в БД из Kafka?

Имеется сервис Kafka Consumer, который читает данные из топика в Кафке и затем записывает их в БД. В данный момент реализовано так, что при поступлении нового сообщения в топик, открывается соединение с БД, идёт запись, затем соединение закрывается.
Сообщения в топик Кафки приходят с непостоянной скоростью. Могут приходить раз в пару секунд, а могут раз в несколько минут (зависит от времени суток, дня недели и пр.).

И вопрос в том, что открывать новое соединение раз в пару секунд, наверное, не очень оптимально.

У меня, как мне кажется, есть три варианта:
  • Оставить как есть
  • Не закрывать соединение вообще
  • Проверять поступление сообщений каждые N минут и если сообщений не было, то закрывать соединение, а при получении нового сообщения открывать соединение

Какой из этих вариантов более правильный или может есть ли какие-то иные верные подходы?
  • Вопрос задан
  • 1582 просмотра
Подписаться 3 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
В самом вопросе есть какой-то конфликт интересов. С одной стороны сессии БД надо экономить.
Тоесть нужно их закрывать. С другой стороны реакция на это сообщение в БД должна быть быстрой.

Мне кажется что без какого-то дополнительного SLA или штрафов со стороны бизнеса, этот вопрос
просто невозможно решить.

Я-бы еще этот вопрос рассмотрел в суточной нагрузке. Если например событие с кафки приходят
от кассовых аппаратов то их надо обработать обязательно в течение дня. Тоесть БД должна быть
открыта всегда. Ну а на ночь можно изменить режим работы косньюмеров и сделать их более
вялыми и дать возможность ночным джобам поработать в БД спокойно.
Ответ написан
Комментировать
2ord
@2ord
Просто используй пул соединений к СУБД в своей программе. Тогда открытием и закрытием будет заниматься этот механизм.

Не закрывать соединение вообще
это нехороший вариант, по очевидным причинам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы