使用 AWS Kinesis Firehose 的网站点击流 + customer 360

Website Click stream flow + customer 360 using AWS Kinesis Firehose

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

现在有 2 个问题:

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

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

此致, 莉娜

[更新]:下图是否是问题的可接受解决方案?

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

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

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

免责声明:个人意见:我建议您将其移至 Kinesis Firehose,这样您就可以灵活地开始将数据加载到 redhift 中,同时在后期阶段进行最少的流程更改同时还将S3中的数据备份为冷storage/backup。考虑到数据量,Athena 可能不是对数据执行分析查询的好选择。 您可以查看使用 Redhift 外部表,其中数据仍然位于 S3 上。至于 redshift 实例本身的成本,您现在可以暂停集群。阅读公告here.

为了解决您添加的更新架构图,您可以完全跳过Glue。 Kinesis可以直接加载数据到S3,你可以用RedShift spectrum定义外部表。

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

至于转换,您可以直接将 Lambda 与 Kinesis Firehose 一起使用。阅读更多相关信息 here

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

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