建议将数据写入Amazon Kinesis的方法

时间:2015-07-13 07:52:53

标签: amazon-sqs amazon-kinesis

我试图找出可以将数据写入kinesis的托管服务。用这种方式我需要我的消息应至少有一个交付到kinesis流。 是建议还是好主意使用SQS写入Kinesis。我正在寻找可以水平扩展的解决方案。

3 个答案:

答案 0 :(得分:7)

根据您的经验和环境,有多种选择可以写入Kinesis。

最直接的方法是直接调用put-record API。您可以使用put-record撰写一条记录,也可以将其与put-records一起批处理。各种SDK支持这些API调用(Java.NETphprubyjavascriptpython ..)。

由于Kinesis最有用的用例之一是在移动设备或浏览器上收集数百万用户的信息,因此浏览器中有适用于iOS,Android和JavaScript的专用移动SDK。见这里:http://aws.amazon.com/mobile/sdk/。您可以使用这些SDK来消除对Kinesis之外的摄取基础架构的需求。

其他一些选项是使用FluentD等工具,这些工具在发货日志中非常流行。在这里看到一个可以让您的生活更轻松的连接器:https://github.com/awslabs/aws-fluent-plugin-kinesis

另一个最近的选择是使用Kinesis Producer Library(KPL)添加将多个事件聚合到一个事件中的功能,以优化分片的分片容量。它还允许生产者向Kinesis写入异步,并且KPL将处理阻塞,退出和其他引发延迟的方法。

log4j appender也是一种流行的方式,可以直接将日志事件写入kinesis,而开发人员只需要很少的工作量。有关详情,请参阅此处:https://github.com/awslabs/kinesis-log4j-appender

答案 1 :(得分:2)

如果您从HTTP呼叫获取资源,请尝试使用Amazon API Gateway:http://aws.amazon.com/api-gateway/

这是一篇关于功能的好文章:https://aws.amazon.com/blogs/aws/amazon-api-gateway-build-and-run-scalable-application-backends/

答案 2 :(得分:0)

你可以在http中发送帖子动作以将记录放到kinesis:

POST / HTTP/1.1
Host: firehose.<region>.<domain>
Content-Length: <PayloadSizeBytes>
User-Agent: <UserAgentString>
Content-Type: application/x-amz-json-1.1
Authorization: <AuthParams>
Connection: Keep-Alive 
X-Amz-Date: <Date>
X-Amz-Target: Firehose_20150804.PutRecord 
{
    "DeliveryStreamName": "some_delivery_stream",
    "Record": {
        "Data": "..."
    }
}

https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecord.html