Decidir una estrategia para volver a particionar - 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.

Decidir una estrategia para volver a particionar

El objetivo de realizar cambios en las particiones en Amazon Kinesis Data Streams es que la secuencia pueda adaptarse a los cambios en la velocidad del flujo de datos. Puede dividir fragmentos para aumentar la capacidad (y los costos) de la secuencia. Puede fusionar fragmentos para reducir el costo (y la capacidad) de la secuencia.

Una forma de hacerlo sería dividir todas las particiones del flujo, lo que duplicaría su capacidad. Sin embargo, esto podría facilitar una capacidad adicional mayor que la que necesita realmente y, por tanto, crear costos innecesarios.

También puede utilizar métricas para determinar cuáles son sus particiones calientes o frías, es decir, particiones que reciben muchos más datos o muchos menos datos de lo esperado. A continuación, puede dividir los fragmentos "calientes" de manera selectiva para aumentar la capacidad de las claves hash que se dirigen a esos fragmentos. Del mismo modo, podría fusionar fragmentos "fríos "para aprovechar mejor su capacidad.

Puede obtener algunos datos de rendimiento de su flujo a partir de las métricas de Amazon CloudWatch que publica Kinesis Data Streams. Sin embargo, también puede recopilar sus propias métricas para las secuencias. Podría registrar los valores de las claves hash generadas por las claves de partición de sus registros de datos. Recuerde especificar la clave de partición en el momento en el que añada el registro a la secuencia.

putRecordRequest.setPartitionKey( String.format( "myPartitionKey" ) );

Kinesis Data Streams utiliza MD5 para procesar la clave hash de la clave de partición. Dado que especifica la clave de partición para el registro, podría utilizar MD5 para calcular el valor de la clave hash de dicho registro y registrarla.

También puede registrar la ID de los fragmentos a los que están asignados los registros de datos. Puede consultar la ID de fragmento utilizando el método getShardId del objeto putRecordResults que devuelve el método putRecords y el objeto putRecordResult que devuelve el método putRecord.

String shardId = putRecordResult.getShardId();

Con los valores de ID de fragmento y clave hash, puede determinar qué fragmentos y claves hash reciben la mayor o menor cantidad de tráfico. A continuación, puede utilizar los cambios en los fragmentos para proporcionar más o menos capacidad, según proceda para estas claves.