【发布时间】:2019-12-10 16:04:07
【问题描述】:
这就是我想要完成的事情
- 访问者登陆我的网站
- Javascript 收集一些信息并发送命中
- 处理命中并将其插入 BigQuery
这就是我计划的解决方法
- 命中发送到 Cloud Functions HTTP 触发器(使用 Ajax)
- Cloud Functions 向 Pub/Sub 发送消息
- Pub/Sub 使用 Pub/Sub 触发器将数据发送到另一个 Cloud Function
- 第二个 Cloud Function 将命中处理到 Biguery 行并将其插入 BigQuery
有没有更简单的方法来解决这个问题?
需要考虑的其他一些细节
- 每天大约有 100 万次点击
- 不想使用 Cloud Dataflow,因为它会增加成本
- 不能(可能)跳过 Pub/Sub,因为当有人离开网站时会发送一些点击,并且请求可能没有足够的时间来处理所有内容。
【问题讨论】:
-
我真的认为您不需要 pub/sub 中间步骤。插入 pub/sub 的时间与将其写入 BQ 的时间大致相同。
-
@jimmartens 我想找出答案的唯一方法是设置并运行一些测试。刚刚使用类似的设置找到了本指南,尽管medium.com/@ridwanfajar/…
-
您有什么要求?你想优化什么?速度(命中和写入 BQ 之间的持续时间)是否值得关注?是不是成本太高了?是否需要可扩展性(您的目标是在 12 个月内达到 1000 万次点击)?今天,您的架构是最具可扩展性、稳健性和弹性的!
-
BQ 中的数据最多应在几分钟内可用。即使点击将用户带到新页面的链接,点击也需要进入数据库。使用 Dataflow 的成本会太高。每天有 100 万次点击,所以每年有 3.65 亿次点击。
标签: google-bigquery google-cloud-functions google-cloud-dataflow google-cloud-pubsub