【问题标题】:High concurrency system on Google App EngineGoogle App Engine 上的高并发系统
【发布时间】:2018-06-25 12:19:30
【问题描述】:

这是我的情况。 我有一个项目托管在 Google Cloud 上,更具体地说是 GAE (NodeJS) 和 Firestore。

我在 Firestore 上存储了一个队列,它最多可以包含 30 - 40k 个条目。

每个条目基本上都是一个对象,我必须使用它对外部服务进行 api 调用。

该外部服务仅允许一个 IP 每秒 10 个请求。

目前我批量处理 10 个,并为每一个进行 api 调用,但速度很慢。

我已经尝试实例化 GAE 服务的多个实例,但我仍然遇到了限制(实例使用相同的 ip?!)。

另一种选择是将 api 调用转移到云函数中并在那里进行,但我认为我会打赌与 GAE 实例相同的结果。

那么,你怎么看?

非常感谢!

【问题讨论】:

  • 是的,同一应用服务的所有 GAE 实例发出的传出请求将具有相同的源 IP 地址。我倾向于同意您的假设,即 Cloud Functions 也是如此。

标签: node.js google-app-engine google-cloud-functions


【解决方案1】:

在我看来,每个 IP 每秒的请求数限制是为了限制传入请求的总量,并且玩弄此规则可能会导致该服务出现问题。处理这种情况的最佳方法是获得付费订阅或直接与服务提供商讨论该问题。

关于 App Engine 实例和 IP 地址,简短的回答是:

不,GAE 实例没有自己的动态 IP。

如需更多参考,您可以在 App Engine 的FAQ 中确认:

App Engine 目前不提供将静态 IP 地址映射到应用程序的方法。为了优化最终用户和 App Engine 应用程序之间的网络路径,不同 ISP 或地理位置的最终用户可能会使用不同的 IP 地址来访问同一个 App Engine 应用程序。 DNS 可能会随着时间的推移或从不同的网络位置返回不同的 IP 地址来访问 App Engine。

到 google 服务的 tcptraceroute 显示以下几点:

lga34s14-in-f14.1e100.net

根据Google Edge Network的描述:

我们的边缘接入点 (PoP) 是我们通过对等互连将 Google 的网络连接到互联网其余部分的地方。我们存在于全球 90 多个互联网交易所和 100 多个互连设施中。

总结一下:您的应用程序应该从最接近其目标的边缘点退出 Google 网络服务和客户端应用程序 GCP 托管您可以预期 Google 正在使用反向代理。

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多