1

我们正在尝试在 AWS 上实现我们电子商务的点击流。点击流将捕获“匿名”用户所做的所有操作。匿名用户通过 UUID 进行跟踪,该 UUID 在他们第一次访问期间生成,存储在 cookie 中。我们在这里使用 AWS 示例来建议一个解决方案架构,如下图所示:

在此处输入图像描述

现在有2个问题:

  1. 电子商务中不同的页面有不同的点击流数据。例如,在 Item view page 上,我们也想发送 Item 相关信息,例如 itemId。或者在结帐页面上,我们希望很少有与点击流数据相关的订单相关信息。我们是否应该为不同的页面设置单独的 Firehose 传输流来支持自定义点击流数据?或者我们应该将通用点击流记录(某些属性可能为空值)发送到 FH 传输流?

  2. 在某些时候,我们的匿名用户会被识别(例如,他们登录,所以我们知道他们的 User_ID)所以我们希望链接 {UUID 和 User_ID} 以便能够获得客户 360 度视图。我们是否应该考虑使用单独的流 + 单独的 S3 存储桶来跟踪 UUID+ User_ID 映射?那么我们是否应该使用 Athena 来显示客户 360 的汇总报告?我们是否应该聚合数据并在 Redshift 中创建客户维度?对此有什么好的解决方案?

问候,丽娜

[更新]:下图是该问题的可接受解决方案吗? 在此处输入图像描述

4

1 回答 1

1

您应该根据您打算如何访问数据来做出决定。鉴于点击流数据的增长速度,如果您想以合理的响应时间和成本对数据产生任何有意义的见解,您将需要使用数据分区。在此处阅读有关此内容的更多信息。

为了能够可靠地做到这一点,您将不得不使用多个 Kinesis 流。

您选择不使用多个流的唯一情况是成本问题。但是考虑到您将在点击流应用程序中使用它,并且如果您在具有活跃用户的网站上使用它,则可以轻松地使用传入事件的数量来有效地使用分片。

免责声明:个人观点:我建议您将其移至 Kinesis Firehose,以便您可以灵活地开始将数据加载到 redhift,而在后期进行最小的流程更改,同时还可以备份 S3 中的数据以备不时之需存储/备份。考虑到数据量,Athena 可能不是对数据执行分析查询的好选择。您可以查看使用 Redhift 外部表,其中数据仍位于 S3 上。至于 redshift 实例本身的成本,您现在可以暂停集群。在此处阅读公告。

要解决您添加的更新架构图,您可以完全跳过 Glue。Kinesis 可以直接将数据加载到 S3,您可以使用 RedShift 频谱定义外部表。

一般的方法是将数据加载到 Redshift 并将其备份到 S3。然后在 Redshift 上,您可以定期删除旧数据(比如一年多前)。这平衡了成本与性能,因为查询将对 Redshift 的数据具有更高的性能。

至于转换,您可以直接使用带有 Kinesis Firehose 的 Lambdas。在此处阅读有关此内容的更多信息。

编辑 1:添加了关于使用 Redshift 的意见以及为什么它有用且具有成本效益

编辑 2:添加了有关简化新提议架构的详细信息。

于 2020-07-14T09:54:30.210 回答