这是一个场景:
我有一个“数据馈送”-一种REST / JSON服务,该服务定期更新(比方说-每10秒钟左右),并且如果数据集发生更改-那么所有订阅的侦听器都需要更新。

目前,它是通过基于HTTP的长轮询来实现的,这是一种技术手段-但主要概念是客户端不会打扰服务器,服务器不会打扰客户端-除非有什么麻烦。
发生新情况时,所有客户都会立即收到通知。
该技术由Java / Tomcat7,异步IO(asyncResponse)组成。

我认为这很好用:我可以以每小时约$ 0.07的价格(AWS M3.Medium实例)驱动10K并发会话。

(问题-我认为效果很好,但是我想听听一些基准数字进行验证。或者换句话说-您认为这是一个不错的选择吗?请分享!)

如果我所有的客户都收到相同的数据集(相同的JSON),有没有办法我可以进行更多优化?

我正在考虑IP V6“多播”-这样可以将我的带宽消耗降低几个数量级-但这可行吗?

例如,要支持100万并发用户,假设每10秒更新一次,则我需要每秒支持10万次“点击”(或响应)。如果响应大小为10K,则带宽开始成为一个大问题:
10K * 100K * 60 * 60 * 24->每24小时86 Giga。

除了IPv6之外,这里确实没有一个集中的问题-我想听听您的想法,经验和替代方法-我讨厌重新发明轮子,而且我敢肯定,到目前为止,人们的集体智慧超越我自己

谢谢。

最佳答案

我想建议其他一些可扩展的替代方案,您应该对预计的负载进行成本估算,以了解可行的方法-

  • 假定提要可能在多个客户端之间共享(我不知道这是否与您的应用程序相关)-使用CDN。在此处查看此类解决方案的说明-http://tech.ftbpro.com/post/78969626647/growing-x20-without-spending-an-extra-penny-on-hosting
  • 使用专门的消息传递服务作为您的主干。在该字段中最突出的一个是PubNub
  • 10-02 05:07
    查看更多