【发布时间】: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