Нам необходимо периодически интегрировать некоторые таблицы в базе данных (потенциально эластичный поиск) в наше потоковое приложение (Flink).Этот период является фиксированным для всех таблиц и составит от 10 секунд до 2 минут.На данный момент нам не нужно много таблиц для интеграции, и их размеры невелики, но мы хотели бы иметь масштабируемый подход, то есть я имею в виду, что если у нас будет больше таблиц или таблицы будут увеличиваться во времени, изменения должны бытьлегко адаптируется.
На данный момент я имею в виду два подхода.
Имеют промежуточную систему, которая периодически прослушивает изменения в таблицах, а затем помещает эти изменения в тему Кафки.На стороне приложения слушайте эту тему как поток данных, и когда появится новый элемент, то есть новый канал, передайте это исполнителям и обновите их состояние.(здесь состояние - карта ключ / значение)
- Преимущества: В базу данных поступает только один вызов.Может иметь значение, если частота высока, а таблицы большие.
- Недостатки: Операция широковещания может быть дорогостоящей, если размер большой, также, если я не ошибаюсь, элементы широковещательной передачи могут достичьисполнители в разное время, поэтому элементы могут быть разными в разное время у разных исполнителей.
Непосредственно на стороне приложения запрашивайте таблицы с заданной частотой (Потенциальнов триггере).Удалите и заново вставьте все элементы в состояния.
- Преимущества: Нет необходимости тратить время на разработку промежуточной системы.Трансляция также не нужна.
- Недостатки: Если я правильно подумаю, для каждого исполнителя будет один звонок.Это может быть дорогостоящим, если таблицы становятся больше.Кроме того, у меня нет четкого представления о том, как обнаруживать изменения в базе данных с помощью Flink.Мы можем получить каждую таблицу (и только после этого обнаруживать изменения) в целом, но нам нужно обновить состояния для каждого исполнителя, и эта операция занимает много времени.
Это две стратегии, которые я рассматривал.Я хотел бы получить ваш опыт, если вы решили подобную проблему, или я был бы рад, если вы можете предложить, поделитесь своим мнением об этой проблеме.