Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – AWS Kinesis中的分区键是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在阅读AWS Kinesis.在以下程序中,我将数据写入名为TestStream的流中.我运行了这段代码10次,在流中插入10条记录.

var params = {
    Data: 'More Sample data into the test stream ...',PartitionKey: 'TestKey_1',Streamname: 'TestStream'
};

kinesis.putRecord(params,function(err,data) {
   if (err) console.log(err,err.stack); // an error occurred
   else     console.log(data);           // successful response
});

所有记录都已成功插入.分区键在这里真正意味着什么?它在后台做什么?我读了它的documentation,但不明白@R_450_10331@.

解决方法

分区键仅在流中有多个分片时才起作用(但总是需要它们). Kinesis计算分区键的MD5哈希值,以决定存储记录的分片(如果您描述流,您将看到哈希值作为分片描述的一部分).

那为什么这很重要?

每个分片只能接受1,000条记录和/或每秒1 MB(参见PutRecord doC).如果您以比此速率更快的速度写入单个分片,则会获得ProvisionedThroughputExceededException.

使用多个分片时,可以缩放此限制:4个分片可为您提供4,000条记录和/或每秒4 MB.当然,有一些警告.

最大的是你必须使用不同的分区键.如果所有记录都使用相同的分区键,那么您仍然在写一个分片,因为它们都具有相同的哈希值.如何解决这个问题取决于您的应用程序:如果您是从多个进程编写的,那么使用进程ID,服务器的IP地址或主机名就足够了.如果您是从单个进程编写的,则可以使用记录中的信息(例如,唯一的记录ID)或生成@L_696_9@字符串.

第二个警告是分区键计入总写入大小,并存储在流中.因此,然你可能通过在记录中使用一些文本组件来获得良好的@L_696_9@性,但你会浪费空间.另一方面,如果您有一些@L_696_9@文本组件,您可以从中计算自己的哈希值,然后将其用于分区键.

最后,如果您使用的是PutRecords(如果您正在编写大量数据,则应该使用),请求中的个别记录可能会被拒绝,而其他记录则会被接受.发生这种情况是因为这些记录转到已经处于其写入限制的分片,并且您必须重新发送它们(在延迟之后).

大佬总结

以上是大佬教程为你收集整理的node.js – AWS Kinesis中的分区键是什么?全部内容,希望文章能够帮你解决node.js – AWS Kinesis中的分区键是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。