Amazon web services 如何在Amazon Kinesis中扫描特定的流记录
我已经检查了所有关于运动的AWS文档。我所发现的只是生产者如何将数据流传输到运动流,消费者如何在初始化时使用这些流(类似于FIFO模型)。如果发送到流的数据在碎片中停留24小时,我希望多次访问特定值。然而,我没有找到一个合适的机制来做到这一点。有没有一种方法可以扫描运动流,而不是像FIFO模型那样处理流。没有,很遗憾,您不能这样做 如果您知道数据的位置(即Amazon web services 如何在Amazon Kinesis中扫描特定的流记录,amazon-web-services,amazon-kinesis,Amazon Web Services,Amazon Kinesis,我已经检查了所有关于运动的AWS文档。我所发现的只是生产者如何将数据流传输到运动流,消费者如何在初始化时使用这些流(类似于FIFO模型)。如果发送到流的数据在碎片中停留24小时,我希望多次访问特定值。然而,我没有找到一个合适的机制来做到这一点。有没有一种方法可以扫描运动流,而不是像FIFO模型那样处理流。没有,很遗憾,您不能这样做 如果您知道数据的位置(即检查点值),则可以从该位置开始读取碎片。但除此之外,没有搜索机制 如果您真的需要捕获特定值并多次处理它;您可能希望在用户应用程序上使用一些内存
检查点
值),则可以从该位置开始读取碎片。但除此之外,没有搜索机制
如果您真的需要捕获特定值并多次处理它;您可能希望在用户应用程序上使用一些内存中的数据库,如缓存结构。如果您有如此大的数据高速移动,Redis、Memcache或VoltDB可能会有所帮助。当您将记录放入Kinesis时,制作者将获得序列ID和碎片ID(请参阅此处PutRecord的API:) 响应语法:
{
"SequenceNumber": "string",
"ShardId": "string"
}
您可以使用此序列ID和碎片ID从消费者端的kinesis流中获取记录(请参见此处GetShardIterator的API:)
请求语法:
{
"ShardId": "string",
"ShardIteratorType": "string",
"StartingSequenceNumber": "string",
"StreamName": "string"
}
请注意,如果您正在寻找更多的发布子模型,您应该使用而不是Kinesis,它更适合于近实时的事件流处理(主要是FIFO顺序)。is'nt Kinesis是发布者-订阅者模型。如果是这种情况,那么我们应该能够捕获流中的任何数据点并将其发布或处理多次?是的,如果您仔细实施,这种方法可能会奏效。但别忘了,检查点只是一个占位符,就像光标一样。它与特定数据不对应。Kinesis不是键值存储。在Kinesis的后台系统中,有一个称为“碎片迭代器”的概念。要组成碎片迭代器,您需要将“起始序列号”作为一个参数(这是一个~56个字符长的数值,您可以在KCL应用程序的dynamo db中将其视为检查点)。然后,Kinesis客户端提供一个关于起始序列号(约224个字符)的碎片迭代器。构造碎片迭代器后,您需要“碎片中的其余数据,从该点开始”。太长,读不下去了您不能调用一条记录。