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.
KCL administra los metadatos, como los arrendamientos y las métricas de uso de la CPU de los trabajadores. KCL rastrea estos metadatos mediante tablas de DynamoDB. Para cada aplicación de Amazon Kinesis Data Streams, KCL crea tres tablas de DynamoDB para administrar los metadatos: la tabla de arrendamientos, la tabla de métricas de los trabajadores y la tabla de estados del coordinador.
nota
KCL 3.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 las aplicaciones de KCL puedan crear y administrar tablas de metadatos en DynamoDB. Para obtener más información, consulte Se requieren permisos de IAM para las aplicaciones de consumo de KCL.
La aplicación de consumo KCL no elimina automáticamente estas tres tablas de metadatos de DynamoDB. Asegúrese de eliminar estas tablas de metadatos de DynamoDB creadas por la aplicación de consumo de KCL al retirar la aplicación de consumo para evitar costes innecesarios.
Tabla de arrendamientos
Una 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 de KCL. Cada aplicación de consumo de KCL crea su propia tabla de arrendamientos. De forma predeterminada, KCL utiliza el nombre de la aplicación de consumo como nombre de la tabla de arrendamientos. Puede establecer un nombre de tabla personalizado mediante la configuración. KCL también crea un índice secundario global en la tabla de arrendamientos con la clave de partición de LeaseOwner para descubrir los arrendamientos de manera eficiente. El índice secundario global refleja el atributo leaseKey de la tabla de arrendamientos base. Si la tabla de arrendamientos de su aplicación de consumo de KCL 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 consumidor de KCL 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 consumo. Los campos clave incluyen los siguientes:
-
LeaseKey: para el procesamiento de un solo flujo, este es el ID del fragmento. Para el procesamiento de múltiples flujos con KCL, se estructura 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, consulte. Procesamiento 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. 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 con KCL, 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 única de Amazon DynamoDB para cada aplicación de KCL y se utiliza para registrar las métricas de uso de la CPU de cada trabajador. KCL utilizará estas métricas para realizar asignaciones de arrendamiento eficientes a fin de lograr un uso equilibrado de los recursos entre los trabajadores. De forma predeterminada, KCL utiliza KCLApplicationName-WorkerMetricStats
el nombre de la tabla de métricas de los trabajadores.
Tabla de estados de coordinadores
Una tabla de estados de coordinadores es una tabla de Amazon DynamoDB exclusiva para cada aplicación de KCL y se utiliza para almacenar información de estado interna de los trabajadores. Por ejemplo, la tabla de estados de los coordinadores almacena datos relacionados con la elección del líder o los metadatos asociados a la migración local de KCL 2.x a KCL 3.x. De forma predeterminada, KCL utiliza el nombre KCLApplicationName-CoordinatorState
de la tabla de estados de los coordinadores.
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 métricas de Amazon. CloudWatch
-
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 evitar que la tabla de metadatos de KCL alcance el límite de capacidad y se vea limitada.
-
-
Supervisión y optimización periódicas:
-
Supervise continuamente CloudWatch las métricas para
ThrottledRequests
. -
Ajuste la capacidad a medida que su carga de trabajo cambie con el tiempo.
-
Si encuentra tablas de DynamoDB ProvisionedThroughputExceededException
en los metadatos de su aplicación de consumo de KCL, 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, puede que no sea suficiente a medida que aumente su uso. Por ejemplo, si su aplicación de consumo de KCL 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 asigna KCL los arrendamientos a los trabajadores y equilibra la carga
KCL recopila y monitorea continuamente las métricas de uso de la CPU de los hosts de procesamiento que ejecutan a los trabajadores para garantizar una distribución uniforme de la carga de trabajo. Estas métricas de uso de la CPU se almacenan en la tabla de métricas de trabajadores de DynamoDB. Si KCL detecta que algunos trabajadores muestran índices de uso de la CPU más altos que otros, reasignará los contratos de arrendamiento entre los trabajadores para reducir la carga de trabajo de los trabajadores que utilizan mucho. 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 utilización de la CPU entre la flota de aplicaciones de consumo, puede ajustar la capacidad de su flota de aplicaciones de consumo al elegir el número correcto de trabajadores o utilizar el escalado automático para administrar de manera eficiente la capacidad informática y lograr un menor costo.
importante
KCL puede recopilar las métricas de uso de la CPU 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 uso de la CPU de los trabajadores, volverá a utilizar el rendimiento por trabajador para asignar los arrendamientos y equilibrar la carga entre los trabajadores de la flota. KCL supervisará el rendimiento que recibe cada trabajador en un momento dado y reasignará los arrendamientos para asegurarse de que cada trabajador obtenga un nivel de rendimiento total similar en los arrendamientos asignados.