微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多客户架构 AWS Firehose

如何解决多客户架构 AWS Firehose

首先,我有时很难知道将无服务器架构问题放在哪个 SE 网络上。我从字面上通读了所有 SE 网络的列表,但找不到比 SO 更合适的方法,所以我来了。根据我的搜索,这似乎也是提出 Firehose 问题的地方,而且我确实看到了 aws-serverless标签。如果有人可以指引我到更合适的地方问这种事情,请告诉我,并接受我的道歉。

场景

我的问题是关于 Firehose Delivery Streams 的。我正在设计一个解决方案,在该解决方案中,我将从不同客户那里摄取流数据,然后将其传送到 S3(Parquet、加密等)以进行报告。我的问题是关于构建交付流以处理来自多个客户的数据的最佳方式。

  • 客户 A 产生 500GB/年
  • 客户 B 产生 2GB/年
  • 客户 C 产生 2GB/年

选项 1

如果我通过一个 Firehose 运行所有这三个客户,所有数据将在 S3 中混合在一起。当我去查询客户 B 或 C 的数据(在 Athena 中)时,我仍然需要扫描来自客户 A 的大量数据。我检查了可能让 Firehose 按客户 ID 对数据进行分区,但即使 {{3} } 可用,它们无法从数据中读取值。

选项 2

我发现最好的做法是为每个客户使用一个 Firehose,然后让 Lambda 根据客户 ID 将记录放入正确的 Firehose。这似乎可行,但我对走这条路犹豫不决,因为:

  1. 这需要在任何时候添加客户时更改代码和部署(我们使用的是 CloudFormation)。这使得添加客户的过程难以自动化,并且架构的其余部分迄今已避免任何此类让步。
  2. 每个帐户有 100 条消防水管的(软?)限制,这让我相信这并不是针对“每个客户”的事情,因为我确信有些公司拥有数百个客户Firehose 支持的产品。
  3. 管理不同的环境会很困难,因为每个环境可能有不同的客户(例如,开发环境有一个模拟客户,如果我们要在生产中创建一个“模拟客户”消防水管具有一致的代码。这会导致在每个环境中创建未使用的资源并使其闲置。

问题

如何构建我的数据管道,以便将每个客户的数据存储在单独的分区中,而无需为每个新客户更改/部署代码

研究

我发现的其他问题并不是真正在问“使用此服务的正确方法是什么”,而是更多地问“我如何以 xyz 格式对数据进行分区”,所以我想缩小一点并谈谈结构以及适当使用 AWS 资源。

我已经参考过的类似问题:

感谢您的帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。