我需要向我网站的用户提供实时市场数据。我通过向外部API发出请求来获得股票价格。我使用socket.io向用户提供数据。 由于市场数据每毫秒都在变化,我需要至少每隔5或10秒更新一次。
我们说我在我的网站上连接了3个用户:
目前,我的服务器只需轮询2个不同的股票价格并缓存它们。
现在我有两个策略,包括优点/缺点:
策略1
在全球范围内,这种策略很容易开发,但我将面临成千上万的计时器运行的问题(如果我有数千名同时访问者)。
策略2
使用全局计时器获取列表/队列中的所有股票并通过socket.io broadcast提供服务:
通过这种策略,我不会遇到多个计时器的问题。问题是我的服务器每隔5秒就会同时开始执行数千个http请求。 (在策略1中,http调用将在0到5秒之间的随机范围内)。 我可以通过使用像队列/出队这样的东西来解决这个问题,但这足以每5秒清除一次队列吗?
论文是我想到的两种策略,但也许还有其他策略,或者我应该只使用这两种策略中的一种进行一些更改。你觉得怎么样?