Clés de Partition seule question lorsque vous avez plusieurs fragments dans un cours d'eau (mais ils le sont toujours). Kinesis calcule le hash MD5 d'une clé de partition pour décider de ce fragment pour stocker l'enregistrement (si vous en décrire le flux que vous verrez le hachage de gamme comme une partie de l'éclat de description).
Alors, pourquoi est-ce important?
Chaque fragment ne peut accepter de 1 000 enregistrements et/ou de 1 MO par seconde (voir PutRecord doc). Si vous écrivez à un seul fragment plus rapidement que ce rythme, vous aurez un ProvisionedThroughputExceededException
.
Avec de multiples serveurs, la mise à l'échelle de cette limite: 4 tessons vous donne de 4 000 enregistrements et/ou 4 MO par seconde. Bien sûr, il y a des bémols.
Le plus important est que vous devez utiliser différentes clés de partition. Si tous les enregistrements de votre utilisation de la même clé de partition alors vous êtes encore écrit d'un seul éclat, parce qu'ils ont tous la même valeur de hachage. Comment vous résoudre cela dépend de votre application: si vous êtes à la rédaction de plusieurs processus, alors il peut être suffisant d'utiliser l'ID de processus du serveur d'adresse IP ou le nom d'hôte. Si vous êtes à l'écriture à partir d'un seul et même processus, alors vous pouvez soit utiliser l'information qui est dans le dossier (par exemple, un dossier unique ID) ou générer une chaîne de caractères aléatoires.
Deuxième mise en garde est que la partition de la clé de chefs d'accusation contre le montant de la réduction de la taille, et est stocké dans le ruisseau. Ainsi, alors que vous pourriez probablement obtenir un bon caractère aléatoire à l'aide de certains élément textuel dans l'enregistrement, vous seriez perdre de l'espace. D'autre part, si vous avez quelques aléatoire élément textuel, vous pouvez calculer votre propre hachage, puis stringify que pour la partition de la clé.
Enfin, si vous utilisez PutRecords (que vous devriez, si vous êtes à la rédaction d'un grand nombre de données), les dossiers individuels dans la requête peut être rejetée, tandis que d'autres sont acceptés. Cela se produit parce que ces enregistrements sont allés à un éclat qui a déjà à son écriture limites, et vous devez l'envoyer à nouveau (après un délai).