Есть ли способ прочитать из БД Dynamo поток с фиксированным количеством рабочих и аренды без каких-либо проблем
Я постоянно публикую данные в DynamoDB, в котором включен поток. Я читаю этот поток, используя DynamoDB apadter KCL.
Я использую 1 KCL работника с 5 аренды. На момент создания моя таблица Динамо имела 1 раздел (1 RCU и 999WCU). Когда я продолжаю публиковать данные в динамо, количество разделов будет расти, а количество активных шардов тоже. Чтение в порядке до тех пор, пока число активных шардов не станет равным 5. Как только он пересечет 5, KCL не сможет читать с одного из шардов (tps падает).
Есть ли какой-либо конфиг / параметр, который я могу установить, который позволит мне читать с растущих шардов, используя фиксированный номер аренды?
1 ответ
Вы ищете свойство maxLeasesPerWorker.
Из Javadoc:
Работник не будет приобретать больше указанного максимального количества аренды, даже если есть больше осколков, которые необходимо обработать. Это может быть использовано в сценариях, где у работника ограничены ресурсы или для предотвращения перебоев в аренде, когда небольшое количество работников получает все арендные договоры в течение небольшого периода времени во время развертывания.
Не забудьте также принять к сведению предупреждение в javadoc:
Обратите внимание, что установка низкого значения может привести к потере данных (например, если не хватает рабочих, чтобы продвинуться во всех шардах). При установке значения для этого свойства необходимо обеспечить наличие достаточного количества работников для обработки осколков, а также рассмотреть возможность повторного переноса в будущем, дочерних осколков, которые могут быть заблокированы на родительских осколках, некоторые работники становятся нездоровыми и т. Д.