Я использую встроенный Debezium, и мне кажется, что он отлично работает в единой среде разработки приложений. Однако у меня есть опасения по поводу того, что это будет в среде с несколькими узлами, где несколько экземпляров приложения будут пытаться открывать соединения с одной и той же БД для мониторинга журнала. Нужна ли реализация пула соединений? Я не могу найти информацию об этом в документации.
Управление подключением к встроенной базе данных Debezium / объединение в пул
Ответы (1)
Хотя я не являюсь экспертом в Debezium, я все же управляю портфелем IBM Data Replication, поэтому данный ответ имеет это в виду.
Определения:
Канал изменений данных = вставки, обновления, удаления, сделанные в одну или несколько таблиц, захваченных в журнале восстановления / транзакции / отмены
Как правило, если у вас есть несколько потребителей канала событий измененных данных, подходящим вариантом дизайна было бы поместить этот канал в очередь один раз, а затем иметь несколько считывателей в этой очереди, избегая необходимости иметь несколько считывателей журнала.
После этого очередь может быть прочитана несколькими потребителями. Примерами очередей являются «промежуточные таблицы аудита», т. Е. Таблицы, содержащие поток изменений. Вам нужно будет периодически обрабатывать таблицы аудита, чтобы они не разрастались до больших размеров.
Другой популярный выбор - постановка на Кафку. Кафка ориентирован на многих читателей с небольшим количеством писателей.
Некоторые зрелые продукты (например, портфель IBM Data Replication) имеют функции, точно разработанные для удовлетворения сценария использования многих потребителей исходной ленты изменений, то есть так называемого «очистки кеша» или «единственного очистителя». Таким образом, инструменты репликации могут отправлять исходный канал изменений многим целевым объектам, включая базы данных, Hadoop и Kafka, при этом в исходной базе данных читается только один журнал.
Ваше здоровье!