Google App Engine上的高并发系统

时间:2018-06-25 12:19:31

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

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

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

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

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

此刻,我分批处理10个,每个API调用一次,但这很慢。

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

另一种选择是在api函数中移动api调用的内容,然后将其击中,但我认为我敢打赌与GAE实例具有相同的结果。

那么,你怎么看?

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

有关更多参考,您可以在FAQ for App Engine中进行确认:

  

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网络连接到Internet其余部分的地方。我们在全球90多个互联网交换所和100多个互连设施中都有代表。

总结:您的应用程序应从最接近其目标的Edge Point退出Google网络,这是有道理的,因为它始终是同一个IP地址相同的点,并且从服务和客户端应用程序GCP托管,您可以期望Google使用反向代理。