【问题标题】:Writing and transferring events between services (AWS)在服务之间写入和传输事件 (AWS)
【发布时间】:2015-05-07 19:52:00
【问题描述】:

我们有一个 php 服务需要非常快速地记录数据(每秒处理 1000 个客户端。每个客户端都将记录写入日志。因此每秒写入 1000 次),然后将记录的数据近乎实时地发送到另一个服务.我们正在使用 AWS。您将如何将数据传输到另一个亚马逊服务? 我们应该使用数据库吗(同步写入会阻止 php 请求,不是吗?)我们应该使用亚马逊 SQS 之类的东西还是任何其他亚马逊解决方案?

此外,我们正在使用 redshift 来查询数据。 谢谢

因此,正如人们在这里所建议的那样,我们看到了一些可能的解决方案: 1. 带有亚马逊 kinesis 的 Node.js 2. 带有亚马逊 sqs 的 Node.js 3. Node.js 写入 s3 并使用 lambda 处理它 4. 我们在其中一个服务器中使用了一种解决方案,即写入本地 mongodb 并每隔几分钟批量刷新到 s3(我们可以将其更改为秒)

每种解决方案的优缺点是什么? 谢谢!

【问题讨论】:

  • 网络延迟超过一毫秒。我认为这是不可能的。
  • 我们可以忍受几秒钟的延迟(对于其他服务)

标签: php amazon-web-services amazon-ec2 amazon-sqs


【解决方案1】:

亚马逊为您的用例提供了完美的产品。运动

Amazon Kinesis 可以连续捕获和存储 TB 级数据 每小时来自数十万个来源,例如网站 点击流、金融交易、社交媒体订阅源、IT 日志和 位置跟踪事件。

来源:http://aws.amazon.com/kinesis/

每秒 1000 次写入是基本单位,即一个 Shard。如果您的需求增加,您可以从 1 开始,然后添加 2。

分片是 Amazon Kinesis 流的基本吞吐量单位。一 shard 提供 1MB/sec 数据输入和 2MB/sec 数据容量 输出。一个分片每秒最多可支持 1000 条 PUT 记录。你 根据您的指定流中所需的分片数量 吞吐量要求。每小时向您收取每个分片的费用 率。

【讨论】:

  • 你从哪里看出它很贵?你是怎么计算的?
  • 定价在这里。 aws.amazon.com/kinesis/pricing 对于我描述的每秒 1000 PUT 的 1 个分片,价格约为 86.15 美元/月。现在,如果您在整个月的每一秒内每秒维护 1000 条记录,并且您的大小为 1k 每个 put。基本分片价格为每月 11.16 美元,然后您支付顶部的 PUT。 "Expensive" is all relative。特别是如果您每秒执行 1000 个或更多请求。
  • 感谢您的计算!所以是的,它没那么贵
【解决方案2】:

您可以使用多个步骤,例如,您可以在接受日志条目的 Web 服务器上本地安装一个非常基本的 node.js 服务(这将为您提供最小的延迟和最大的吞吐量)。然后 node.js 服务可以将日志条目传输到您想要的位置(数据库、SQS、SNS 等)。

【讨论】:

    【解决方案3】:

    您可以结合使用 s3 和 lambda。 每个人都将数据写入 s3,对于添加到 s3 存储桶的每个对象,您都可以运行 lambda 函数来处理它。这两种服务都非常便宜且具有高度可扩展性。

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 2019-02-17
      • 2013-04-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多