这是一个场景:
我有一个“数据馈送”-一种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之外,这里确实没有一个集中的问题-我想听听您的想法,经验和替代方法-我讨厌重新发明轮子,而且我敢肯定,到目前为止,人们的集体智慧超越我自己
谢谢。
最佳答案
我想建议其他一些可扩展的替代方案,您应该对预计的负载进行成本估算,以了解可行的方法-