![](/img/trans.png)
[英]How to shutdown all dynamic instances in Google App Engine without re-deploying the app?
[英]How to broadcast data to all Google App Engine instances?
为简单起见,假设我的应用程序需要允许数千名用户查看聊天室的实时只读流。 主机可以键入消息,但没有其他用户可以 - 他们只是实时查看主机键入的内容。 想象一下,用户正在关注体育赛事的文字游戏。
每个用户通过使用对GAE服务器的简单/get-recent-messages
调用每秒轮询一次来检查新消息。 (在您提出要求之前,我相信使用Google的频道API会太昂贵。)
考虑到这个应用程序同时被成千上万的用户使用,这意味着运行了数十到数百个GAE实例,我如何获得这些/get-recent-messages
调用以返回最小聊天室消息,延迟小于1000毫秒,同时最小化服务器负载和GAE成本?
我有一些想法:
思考?
你应该看看这个视频 。 我会选择memcache / datastore版本和少量缓存(1-2秒),这样您就可以减少为流量提供服务所需的实例数量。 如果您仍然需要100-500个实例来为您的流量提供服务,我仍然会选择memcache / datastore版本。 如果memcache是你的瓶颈,请将它分成10个键。
另一种解决方案是使用Compute Engine和Web服务器,您可以通过套接字连接用户。 您可以通过HTTP与计算实例通信,并将值存储在内存中或使用pull队列。
如果您确实需要与所有实例进行通信,请查看模块之间的通信
Pub / sub可能是您在发布新消息的实例与读取新消息的实例之间进行通信的一个很好的选择。 根据我在文档中阅读的内容,您应该能够直接将您的用户订阅到Pub / Sub(仅拉出)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.