什么是正确的架构\设计来执行javascript客户端到aws数据库网站跟踪系统



我们希望建立跟踪网站交互/事件的数据管道系统。目标是跟踪网站中的用户行为,因此我们希望选择正确的架构来实现它,并具有以下两个限制:1) 系统是亚马逊2) 这是一个预算项目,所以我们不能将红移用于

基于以上两个限制,我的计划是实现以下架构:

网站javascript-->AWS-S3-->(AWS Lambda)-->AWS-RDS

网站javascript客户端-aws firehose数据传输系统到S3-跟踪用户交互,并将它们加载到aws firethose,后者最终将它们写入aws-S3。

AWS Lambda(Python)-定期任务,从AWS-S3提取日常事件并将其加载到AWS-RDS。

我之所以选择AWS-RDS是因为它在目标方面的成本效益

感谢对上述实现的任何评论,或您可能建议使用的任何其他架构建议,而不是上述

如果我正确理解您的问题,您将提出以下解决方案来为您的应用程序执行web分析:

WebServer-->Firehose-->AWS-S3-->AWS Lambda-->AWS-RDS

我看到下面的优点和缺点与上述设计

优点:

  1. 低成本
  2. 易于实施

缺点:

  1. RDS的销售可能不足以处理大量网络流数据的分析,这些数据往往增长迅速
  2. 需要处理lambda的负载平衡、故障场景和其他复杂性
  3. 您需要处理RDS的数据转换,因为它希望结构化数据被吸收到关系表中

通过Firehose将数据存储在S3中的建议听起来是一个不错的解决方案。但请记住,Firehose的最小间隔是一分钟,因此您的应用程序需要容忍这种较小的延迟。您可以使用Kinesis Streams来获得毫秒延迟,但您需要管理自己的应用程序代码和实例来处理Streams。

在Kinesis Firehose或Streams中摄取数据后,您还可以探索以下替代方案:

  • 如果您的AWS地区有Kinesis Analytics,请使用它实时跟踪网络用户的活动。目前仅在选定的AWS地区可用
  • 在Firehose中,使用lambda转换数据,并将其以优化的格式存储在S3中,以便使用AWS Athena进行进一步分析
  • 使用Elastic Search作为目的地,并使用ELK堆栈而不是RDS执行web分析
  • 尽管您提到不能使用RedShift,但它仍然可能是时间序列分析的最佳解决方案。探索存储在S3中的红移、红移频谱和格式化数据可能仍然是一个具有更好兼容性的成本效益解决方案

添加一些来自AWS的参考,您可以在决定解决方案之前进行这些参考:

实时网络分析与Kinesis数据分析解决方案

使用Amazon Kinesis和Amazon Elasticsearch 对流媒体数据进行近实时分析

使用Amazon Athena 读取分析管道的模式

亚马逊Redshift Spectrum将数据仓库扩展到EB——无需加载

嘿,folky,这越来越常见了。

通常情况下,模式是点击Kinesis流的事件,然后您可以使用Kinesis分析实时监控用户与网站的互动。您可以将流连接到firehose,将数据卸载到S3存储桶中,也可以合并Lambdas来转换数据。

并行处理Lambdas和Kinesis流存在一些主要的复杂性,因此该解决方案可能不如使用AWS Kafka那样可扩展。或者运行一个作业,将s3数据移动到rds中,以进行您可能需要的任何临时报告。

以下是AWS已经使用kinesis 进行实时网络分析的模式

最新更新