在服务之间编写和传输事件(AWS)

时间:2015-05-07 19:52:01

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

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

另外,我们使用redshift查询数据。 感谢

正如人们在此提出的,我们看到了一些可能的解决方案: 1.具有亚马逊运动的Node.js 2.具有亚马逊平方的Node.js 3. Node.js用lambda处理它写入s3 4.我们在我们的一台服务器中使用写入本地mongodb的解决方案,并且每隔几分钟就会批量刷新到s3(我们可以将其更改为秒)

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

3 个答案:

答案 0 :(得分:3)

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

  

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

     

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

每秒1000次写入是基本单位,即碎片。您可以从1开始,然后在需求增加时添加第2个。

  

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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