Tablas de metadatos de DynamoDB y equilibrio de carga en KCL - Amazon Kinesis Data Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tablas de metadatos de DynamoDB y equilibrio de carga en KCL

KCLadministra los metadatos, como los arrendamientos y las métricas de CPU uso de los trabajadores. KCLrastrea estos metadatos mediante tablas de DynamoDB. Para cada aplicación de Amazon Kinesis Data StreamsKCL, crea tres tablas de DynamoDB para administrar los metadatos: tabla de arrendamientos, tabla de métricas de trabajadores y tabla de estados de coordinadores.

nota

KCL3.x introdujo dos nuevas tablas de metadatos: las tablas de métricas de los trabajadores y las tablas de estados de los coordinadores.

importante

Debe agregar los permisos adecuados para que KCL las aplicaciones puedan crear y administrar tablas de metadatos en DynamoDB. Para obtener más información, consulte IAMpermisos necesarios para las aplicaciones de consumo KCL.

KCLla aplicación de consumo no elimina automáticamente estas tres tablas de metadatos de DynamoDB. Asegúrese de eliminar estas tablas de metadatos de DynamoDB creadas KCL por la aplicación de consumo al retirar la aplicación de consumo para evitar costes innecesarios.

Tabla de arrendamientos

La tabla de arrendamientos es una tabla exclusiva de Amazon DynamoDB que se utiliza para realizar un seguimiento de los fragmentos que alquilan y procesan los programadores de la aplicación de consumo. KCL Cada aplicación de KCL consumo crea su propia tabla de arrendamientos. KCLutiliza el nombre de la aplicación de consumo como nombre de la tabla de arrendamientos de forma predeterminada. Puede establecer un nombre de tabla personalizado mediante la configuración. KCLtambién crea un índice secundario global en la tabla de arrendamientos con la clave de partición de leaseOwner para detectar eficientemente los arrendamientos. El índice secundario global refleja el leaseKey atributo de la tabla de arrendamientos base. Si la tabla de arrendamientos de su aplicación de KCL consumo no existe cuando se inicia la aplicación, uno de los trabajadores crea la tabla de arrendamientos para su aplicación.

Puede consultar la tabla con la consola de Amazon DynamoDB mientras se ejecuta la aplicación de consumo.

importante
  • El nombre de cada solicitud de KCL consumidor debe ser único para evitar que se duplique el nombre de la tabla de arrendamiento.

  • Se le realizará el cobro de los costos de su cuenta asociados a la tabla de DynamoDB, además de los costos propios asociados a Kinesis Data Streams.

Cada fila de la tabla de arrendamientos representa un fragmento que están procesando los programadores de su solicitud de consumidor. Entre los campos clave se incluyen los siguientes:

  • leaseKey: Para el procesamiento de un solo flujo, este es el ID del fragmento. Para el procesamiento de múltiples flujos conKCL, está estructurado como. account-id:StreamName:streamCreationTimestamp:ShardId leaseKey es la clave de partición de la tabla de arrendamiento. Para obtener más información sobre el procesamiento multiflujo, consulteProcesamiento multiflujo con KCL .

  • checkpoint: el número secuencial de punto de comprobación más reciente del fragmento.

  • checkpointSubSequenceNúmero: cuando se utiliza la función de agregación de la biblioteca de productores de Kinesis, se trata de una extensión del punto de control que rastrea los registros de los usuarios individuales dentro del registro de Kinesis.

  • leaseCounter: Se utiliza para comprobar si un trabajador está procesando el arrendamiento de forma activa en ese momento. leaseCounter aumenta si la propiedad del arrendamiento se transfiere a otro trabajador.

  • leaseOwner: El trabajador actual que tiene este contrato de arrendamiento.

  • ownerSwitchesSincePunto de control: cuántas veces este contrato de arrendamiento ha cambiado de trabajador desde el último punto de control.

  • parentShardId: ID del padre de este fragmento. Se asegura de que el fragmento principal esté completamente procesado antes de que comience el procesamiento en los fragmentos secundarios, manteniendo el orden de procesamiento de registros correcto.

  • childShardId: Lista de fragmentos secundarios IDs resultantes de la división o fusión de este fragmento. Se utiliza para rastrear el linaje de los fragmentos y gestionar el orden de procesamiento durante las operaciones de refragmentación.

  • startingHashKey: El límite inferior del rango de claves hash de este fragmento.

  • endingHashKey: El límite superior del rango de claves de hash de este fragmento.

Si utilizas el procesamiento multiflujo conKCL, verás los dos campos adicionales siguientes en la tabla de arrendamientos. Para obtener más información, consulte Procesamiento multiflujo con KCL .

  • shardID: ID de la partición.

  • streamName: El identificador del flujo de datos en el siguiente formato:account-id:StreamName:streamCreationTimestamp.

Tabla de métricas de los trabajadores

La tabla de métricas de los trabajadores es una tabla de Amazon DynamoDB exclusiva para KCL cada aplicación y se utiliza para CPU registrar las métricas de uso de cada trabajador. Estas métricas se utilizarán KCL para realizar asignaciones de arrendamiento eficientes a fin de lograr un uso equilibrado de los recursos entre los trabajadores. KCLse utiliza KCLApplicationName-WorkerMetricStats como nombre de la tabla de métricas de los trabajadores de forma predeterminada.

Tabla de estados del coordinador

La tabla de estados de Coordinator es una tabla de Amazon DynamoDB exclusiva para KCL cada aplicación y se utiliza para almacenar información de estado interna de los trabajadores. Por ejemplo, la tabla de estados del coordinador almacena datos sobre la elección del líder o los metadatos asociados a la migración local de la versión KCL 2.x a la 3.x. KCL KCLse utiliza como nombre KCLApplicationName-CoordinatorState de la tabla de estados de los coordinadores de forma predeterminada.

Modo de capacidad de DynamoDB para tablas de metadatos creado por KCL

De forma predeterminada, la biblioteca de clientes de Kinesis (KCL) crea tablas de metadatos de DynamoDB, como la tabla de arrendamientos, la tabla de métricas de los trabajadores y la tabla de estados de los coordinadores, mediante el modo de capacidad bajo demanda. Este modo escala automáticamente la capacidad de lectura y escritura para adaptarse al tráfico sin necesidad de planificar la capacidad. Le recomendamos encarecidamente que mantenga el modo de capacidad como modo bajo demanda para un funcionamiento más eficiente de estas tablas de metadatos.

Si decide cambiar la tabla de arrendamiento al modo de capacidad aprovisionada, siga estas prácticas recomendadas:

  • Analice los patrones de uso:

    • Supervisa los patrones y usos de lectura y escritura de tu aplicación (RCU,WCU) mediante las CloudWatch métricas de Amazon.

    • Comprenda los requisitos de rendimiento máximo y medio.

  • Calcule la capacidad requerida:

    • Calcule las unidades de capacidad de lectura (RCUs) y las unidades de capacidad de escritura (WCUs) en función de su análisis.

    • Tenga en cuenta factores como la cantidad de fragmentos, la frecuencia de los puntos de control y el número de trabajadores.

  • Implemente el escalado automático:

    • Utilice el escalado automático de DynamoDB para ajustar automáticamente la capacidad aprovisionada y establecer los límites de capacidad mínima y máxima adecuados.

    • El escalado automático de DynamoDB ayudará a KCL evitar que la tabla de metadatos alcance el límite de capacidad y se vea limitada.

  • Supervisión y optimización periódicas:

    • Supervise continuamente CloudWatch las métricas paraThrottledRequests.

    • Ajuste la capacidad a medida que su carga de trabajo cambie con el tiempo.

Si utiliza tablas de ProvisionedThroughputExceededException DynamoDB de metadatos para KCL su aplicación de consumo, debe aumentar la capacidad de rendimiento aprovisionada de la tabla de DynamoDB. Si establece un nivel determinado de unidades de capacidad de lectura (RCU) y unidades de capacidad de escritura (WCU) al crear la aplicación de consumo por primera vez, es posible que no sea suficiente a medida que aumente su uso. Por ejemplo, si su aplicación de KCL consumo realiza controles frecuentes o funciona en una transmisión con muchos fragmentos, es posible que necesite más unidades de capacidad. Para obtener información sobre el rendimiento aprovisionado en DynamoDB, consulte Capacidad de rendimiento de DynamoDB y actualización de una tabla en la Guía para desarrolladores de Amazon DynamoDB.

¿Cómo se asignan los arrendamientos a los trabajadores y se equilibra la carga KCL

KCLrecopila y monitorea continuamente las métricas de uso de CPU los hosts de cómputo que ejecutan a los trabajadores para garantizar una distribución uniforme de la carga de trabajo. Estas métricas CPU de uso se almacenan en la tabla de métricas de trabajadores de DynamoDB. Si KCL detecta que algunos trabajadores muestran tasas de CPU utilización más altas en comparación con otros, reasignará los contratos de arrendamiento entre los trabajadores para reducir la carga de trabajo de los trabajadores más utilizados. El objetivo es equilibrar la carga de trabajo de manera más uniforme en toda la flota de aplicaciones de consumo, evitando que un solo trabajador se sobrecargue. A medida que KCL distribuye la CPU utilización entre la flota de aplicaciones de consumo, puede dimensionar correctamente la capacidad de su flota de aplicaciones de consumo eligiendo la cantidad correcta de trabajadores o utilizar el escalado automático para administrar de manera eficiente la capacidad de cómputo y lograr un menor costo.

importante

KCLpuede recopilar las métricas de CPU utilización de los trabajadores solo si se cumplen ciertos requisitos previos. Para obtener más información, consulte Requisitos previos. Si KCL no puede recopilar las métricas de CPU utilización de los trabajadores, KCL utilizará el rendimiento por trabajador para asignar los arrendamientos y equilibrar la carga entre los trabajadores de la flota. KCLsupervisará el rendimiento que recibe cada trabajador en un momento dado y reasignará los arrendamientos para garantizar que cada trabajador obtenga un nivel de rendimiento total similar en los arrendamientos asignados.