【问题标题】:Tracking Usage per API key in a multi region application跟踪多区域应用程序中每个 API 密钥的使用情况
【发布时间】:2018-04-16 08:23:57
【问题描述】:

我在 5 个地区部署了一个应用。

区域之间的延迟从 150 毫秒到 300 毫秒不等

目前,我们使用本文中概述的方法(使用跟踪部分): http://highscalability.com/blog/2018/4/2/how-ipdata-serves-25m-api-calls-from-10-infinitely-scalable.html

但我们将日志从 Stackdriver 导出到 Cloud Pub/Sub。然后我们使用 Cloud Dataflow 计算每个 API 密钥消耗的请求数,并将其更新到在 5 个区域进行地理复制的 Mongo Atlas 数据库中。

在我们的应用中,我们只从最近的 Mongo 副本读取使用信息,以实现低延迟。应用从不直接在 Mongo 中更新任何使用数据,因为这可能会产生延迟成本,因为数据必须在可能位于另一个区域的 Master 中更新。

直接从 Mongo 中的应用程序更新 API 密钥使用计数器似乎不可行,因为我们的流量以 10,000 RPS 进入,并且由于区域之间的延迟,我认为它会遇到其他问题。这只是一个预感,到目前为止我还没有测试过。我是根据我对https://www.mongodb.com/blog/post/active-active-application-architectures-with-mongodb的阅读得出这个结论的

一个问题是我们最终要为云发布/订阅和数据流付费。有避免这种情况的策略吗?

我在 Google 上进行了研究,但没有发现其他多区域应用程序如何实时跟踪每个 API 密钥的使用情况。我并不感到惊讶,据我了解,为了简单起见,大多数应用程序都在单个区域中运行,到目前为止,在多个区域部署应用程序而没有大量开销是不可行的。

【问题讨论】:

    标签: google-cloud-platform latency region usage-statistics throughput


    【解决方案1】:

    如果您想要实时,那么最好的选择是使用 Dataflow。您可以更改数据到达 Dataflow 的方式,例如使用 Stackdriver → Cloud Storage → Dataflow,但您将通过存储而不是通过 pub/sub,因此更多的是一种方便的选择,并在您的用例中比较每种产品成本的价格. Here’s Cloud Storage 的示例。

    【讨论】:

      猜你喜欢
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      相关资源
      最近更新 更多