#streaming #amazon-dynamodb #amazon-kinesis #amazon-dynamodb-streams #amazon-kcl
#потоковое вещание #amazon-dynamodb #amazon-kinesis #amazon-dynamodb-потоки #амазонка-kcl
Вопрос:
Я использую DynamoDB Streams клиентскую библиотеку Kinesis (KCL). Как я могу измерить задержку между тем, когда событие было создано в потоке, и когда оно было обработано на стороне KCL?
Насколько я знаю, MillisBehindLatest
метрика KCL специфична для потоков Kinesis (а не для потоков DynamoDB). approximateCreationDateTime
атрибут записи имеет аппроксимацию на уровне минут, что неприемлемо для мониторинга в системах с субсекундной задержкой.
Не могли бы вы, пожалуйста, помочь с некоторыми полезными показателями для мониторинга задержки потоков Dyn Modb?
Ответ №1:
Вы можете изменить способ записи в своем приложении, чтобы позволить вашему приложению отслеживать задержку распространения мутаций в потоке таблицы. Например, вы всегда можете обновить атрибут метки времени ‘last_updated =’ при создании и обновлении элементов. Таким образом, когда ваши создания и обновления появляются в потоке, вы можете оценить задержку распространения, вычитая текущее время из last_updated в NEW_IMAGE записи потока.
Поскольку удаления не имеют NEW_IMAGE в записях потока, ваши удаления должны выполняться в два этапа:
- логическое удаление, при котором вы записываете временную метку ‘logically_deleted =’ для элемента и
- физическое удаление, при котором вы фактически вызываете DeleteItem сразу после 1.
Затем вы будете использовать ту же математику, что и для создания и обновления, с той лишь разницей, что вы будете использовать OLD_IMAGE при обработке удалений, и вам нужно будет вычесть как минимум около 10 мс, чтобы учесть время, необходимое для выполнения логического удаления (шаг 1).