【问题标题】:Where to run my Kinesis Producer?在哪里运行我的 Kinesis Producer?
【发布时间】:2017-09-12 05:23:37
【问题描述】:

我需要构建一个仅将数据放入 Kinesis Stream 的 Kinesis Producer 应用程序。该应用程序需要连接到远程主机并维护一个 TCP 套接字,数据将从远程主机推送到该套接字。数据转换很少,因此生产者应用程序将非常简单......我知道我可以为此设置一个 EC2 实例,但如果有更好的方法,我想探索一下。

例子:

  • 您可以在 AWS Lambda 上构建生产者,但由于我必须维护一个长时间运行的 TCP 连接,所以这行不通。
  • 您可以使用 AWS IoT 维护与 WebSocket 的连接并在每条消息上调用 Lambda 函数,但我的连接只是标准 TCP 连接

问题:我可以使用 AWS 产品套件中的哪些其他产品来构建生产者?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-lambda amazon-kinesis


    【解决方案1】:

    这里没有合适的托管选项。如果你的任务是……

    • 发起并维护与您无法控制的第三方远程设备的持久 TCP 连接,
    • 在有效载荷从管道中下来的任何地方使用,
    • 处理/转换它,然后
    • 将其提供给充当 Kinesis 生产者的代码

    ...那么你需要一个服务器,因为没有一个服务可以做所有这些事情。 EC2 是您正在寻找的产品。

    【讨论】:

      【解决方案2】:

      生产者代码通常在您希望捕获的信息的来源事物上运行。

      例如:

      • 捕获网络事件时,生产者应该是监控流量的网络设备。
      • 捕获零售购买时,生产者是处理交易的系统。
      • 在捕捉地震时,Producer 是监测振动的设备。

      在您的情况下,远程主机应该是生产者,它将数据发送到 Kinesis。无需让远程主机将数据推送到 Lambda 函数,只需让远程主机直接推送到 Kinesis。

      更新

      你提到Kinesis Agent

      Kinesis Agent 是一个独立的 Java 软件应用程序,它提供了一种简单的方法来收集数据并将数据发送到 Kinesis Firehose。

      如果您使用的是 Amazon Kinesis Firehose,则 Kinesis 代理可以是您的生产者。它将数据发送到 Firehose。 或者,您可以为 Firehose 编写自己的 Producer。

      来自Writing to a Kinesis Firehose Delivery Stream Using the AWS SDK

      您可以使用 Kinesis Firehose API 通过适用于 Java、.NET、Node.js、Python 或 Ruby 的 AWS 开发工具包将数据发送到 Kinesis Firehose 传输流。

      如果您使用的是 Amazon Kinesis Streams,则需要编写自己的 Producer。来自Producers for Amazon Kinesis Streams

      生产者将数据记录放入 Kinesis 流中。例如,将日志数据发送到 Kinesis 流的 Web 服务器是生产者

      因此,Producer 只是适用于将数据发送到 Kinesis 的任何事物的术语,它由Consumer 检索。

      【讨论】:

      • 不,这不是真的。您所描述的是 Kinesis 代理应该运行的位置。我描述的远程主机是第三方的。
      【解决方案3】:

      几个选项:

      1. 您可以将 IoT 与 kinesis action 结合使用,让您的远程主机推送到 kinesis 流中。在这种情况下,您的远程应用程序将是直接与 AWS IoT 基础设施对话的设备。然后,您将设置一条规则,将所有消息转发到 kinesis 流进行处理。见https://aws.amazon.com/iot-platform/how-it-works/

        这样做的好处是您不再需要在任何地方托管生产者应用程序。但是您需要能够修改在远程主机上运行的应用程序。

      2. 您不必使用Kinesis Producer Library (KPL),您的数据源可以简单地重复调用PutRecordPutRecords。同样,这需要修改远程应用程序。

      3. 或者如您所知,您可以在 EC2 上运行 KPL 应用程序。通过网络与它交谈。这可以让您更好地控制事物的运行方式,并且需要对远程应用程序进行较少的修改。但是您现在有更大的开发运维负担。

      【讨论】:

        猜你喜欢
        • 2014-10-03
        • 2023-03-09
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多