Tablas de metadatos de DynamoDB y equilibrio de carga en KCL
KCL administra los metadatos, como los arrendamientos y las métricas de uso de la CPU de los procesos de trabajo. 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 arrendamiento, la tabla de métricas de procesos de trabajo y la de estado de coordinadores.
nota
KCL 3.x presentó dos nuevas tablas de metadatos: las tablas de métricas de procesos de trabajo y de estado de 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 Permisos de IAM necesarios 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 creadas por la aplicación de consumo de KCL al retirar la aplicación de consumo para evitar costos innecesarios.
Tabla de arrendamiento
Una tabla de arrendamiento es una tabla exclusiva de Amazon DynamoDB que se utiliza para realizar un seguimiento de las particiones que los programadores de la aplicación de consumo de KCL están arrendando y procesando. Cada aplicación de consumo de KCL crea su propia tabla de arrendamiento. La KCL, por defecto, utiliza el nombre de la aplicación de consumo para el nombre de la tabla de arrendamiento. Puede definir un nombre de tabla personalizado con la configuración. KCL también crea un índice secundario global en la tabla de arrendamiento con la clave de partición de leaseOwner para detectar los arrendamientos de manera eficiente. El índice secundario global refleja el atributo leaseKey de la tabla de arrendamientos base. Si la tabla de arrendamiento de la aplicación de consumo de KCL no existe cuando se inicia la aplicación, uno de los procesos de trabajo creará la tabla de arrendamiento 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 aplicación de consumo 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 arrendamiento representa una partición que procesan los programadores de su aplicación de consumo. Algunos de los campos claves son los siguientes:
-
leaseKey: este es el ID de partición para el procesamiento de un solo flujo. Para el procesamiento de varios 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 de varios flujos, consulte Procesamiento de varios flujos con KCL . -
checkpoint: el número secuencial de punto de comprobación más reciente del fragmento.
-
checkpointSubSequenceNumber: cuando se utiliza la característica de agregación de Kinesis Client Library, esto es una extensión del valor checkpoint que realiza un seguimiento de los registros de los usuarios individuales en el registro de Kinesis.
-
leaseCounter: se utiliza para comprobar si un proceso de trabajo está procesando el arrendamiento de forma activa. leaseCounter aumenta si la propiedad del arrendamiento se transfiere a otro proceso de trabajo.
-
leaseOwner: el proceso de trabajo actual que mantiene este arrendamiento.
-
ownerSwitchesSinceCheckpoint: las veces que este arrendamiento ha cambiado procesos de trabajo desde el último punto de control.
-
parentShardId: ID de la partición de origen. Se asegura de que la partición origen esté completamente procesada antes de que comience el procesamiento en las particiones secundarias, lo que mantiene el orden de procesamiento de registros correcto.
-
childShardId: lista de los ID de las particiones secundarias resultantes de la división o fusión de esta partición. Se utiliza para rastrear el linaje de la partición y administrar el orden de procesamiento durante las operaciones de repartición.
-
startingHashKey: el límite inferior del rango de claves hash de esta partición.
-
endingHashKey: el límite superior del rango de claves hash de esta partición.
Si utiliza el procesamiento de varios flujos con KCL, verá los dos siguientes campos adicionales en la tabla de arrendamiento. Para obtener más información, consulte Procesamiento de varios flujos con KCL .
-
shardID: ID de la partición.
-
streamName: identificador del flujo de datos en el siguiente formato:
account-id:StreamName:streamCreationTimestamp.
Tabla de métricas de procesos de trabajo
La tabla de métricas de procesos de trabajo es una tabla única de Amazon DynamoDB para cada aplicación de KCL que se utiliza para registrar las métricas de uso de la CPU en cada proceso de trabajo. KCL utilizará estas métricas para realizar asignaciones de arrendamiento eficientes a fin de lograr un uso equilibrado de los recursos entre los procesos de trabajo. Por defecto, KCL utiliza KCLApplicationName-WorkerMetricStats para el nombre de la tabla de métricas de procesos de trabajo.
Tabla de estado de coordinadores
Una tabla de estado 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 procesos de trabajo. Por ejemplo, la tabla de estado de 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. Por defecto, KCL utiliza KCLApplicationName-CoordinatorState como el nombre de la tabla de estado de coordinadores.
Modo de capacidad de DynamoDB para las tablas de metadatos creadas por KCL
Por defecto, Kinesis Client Library (KCL) crea tablas de metadatos de DynamoDB, como la tabla de arrendamiento, la tabla de métricas de procesos de trabajo y la tabla de estado de coordinadores, mediante el modo de capacidad bajo demanda. Este modo escala la capacidad de lectura y escritura de forma automática para adaptarse al tráfico sin necesidad de planificar la capacidad. Recomendamos mantener el modo de capacidad como 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:
-
Supervise los patrones y usos de lectura y escritura de su aplicación (RCU, WCU) mediante las métricas de Amazon CloudWatch.
-
Conozca los requisitos de rendimiento máximo y medio.
-
-
Calcule la capacidad necesaria:
-
Calcule las unidades de capacidad de lectura (RCU) y las unidades de capacidad de escritura (WCU) según el análisis.
-
Contemple factores como la cantidad de particiones, la frecuencia de los puntos de control y la cantidad de procesos de trabajo.
-
-
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.
-
-
Supervise y optimice periódicamente:
-
Supervise continuamente las métricas de CloudWatch para
ThrottledRequests. -
Ajuste la capacidad a medida que su carga de trabajo cambie con el tiempo.
-
Si se encuentra con ProvisionedThroughputExceededException en las tablas de metadatos de DynamoDB de su aplicación de consumo de KCL, deberá 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 registros de puntos de control frecuentes u opera en un flujo con muchas particiones, 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 KCL asigna los arrendamientos a los procesos de trabajo y equilibra la carga
KCL recopila y supervisa continuamente las métricas de uso de la CPU de los hosts de procesamiento que ejecutan los procesos de trabajo 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 procesos de trabajo de DynamoDB. Si KCL detecta que algunos procesos de trabajo muestran índices de uso de la CPU más altos que otros, reasignará los arrendamientos entre ellos para reducir la alta carga de trabajo. 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 proceso de trabajo 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 procesos de trabajo o al utilizar el escalado automático para administrar de manera eficiente la capacidad de cómputo y lograr un menor costo.
importante
KCL puede recopilar las métricas de uso de la CPU de los procesos de trabajo únicamente 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 procesos de trabajo, volverá a utilizar el rendimiento por proceso de trabajo para asignar los arrendamientos y equilibrar la carga entre los procesos de trabajo de la flota. KCL supervisará el rendimiento que recibe cada proceso de trabajo en un momento dado y reasignará los arrendamientos para asegurarse de que cada uno obtenga un nivel de rendimiento total similar en los arrendamientos asignados.