Как я могу измерить задержку распространения потоков DynamoDB?

#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 в записях потока, ваши удаления должны выполняться в два этапа:

  1. логическое удаление, при котором вы записываете временную метку ‘logically_deleted =’ для элемента и
  2. физическое удаление, при котором вы фактически вызываете DeleteItem сразу после 1.

Затем вы будете использовать ту же математику, что и для создания и обновления, с той лишь разницей, что вы будете использовать OLD_IMAGE при обработке удалений, и вам нужно будет вычесть как минимум около 10 мс, чтобы учесть время, необходимое для выполнения логического удаления (шаг 1).