请帮助为聊天室计时器选择解决方案(nodeJS + socket.io + redis)。
创建了多个房间,每个房间只有一个主机,即该房间的管理员,每个房间将有500个成员。任何时候都可以有'n'个房间。一个房间将在创建1小时后被销毁。
节点服务器=>处理室的成员相关数据来自redis,并在一段时间后在每个房间广播。这个间隔(即何时广播)由一个数组决定,称之为timerArrayForRoom1
。此数组保存广播数据的时间(以秒为单位)。每个房间的阵列都不同。
现在,有两种方法 -
在nodeJS中使用setInterval(),以便在一段时间间隔后调用其广播方法。每个房间都有独立的间隔对象。
将timerArrayForRoom1
提供给房间的主机,让主机按照计时器阵列在几秒钟后触发一个事件。即在客户端使用setinterval()。节点服务器将对该事件采取行动。
第一种方法是独立于HOST,但它涉及在NodeJS中使用setInterval()。
哪一个更好实施,以便服务器能够支持1000个房间,其中有500个成员同时运行和广播?
哪个更可靠? (因为我读取setInterval()并不保证其调用函数的时间)
还是其他方法?
主机/管理员将是不同的设备,每个房间都是一个,所以第二种方法将在一定程度上平衡服务器负载。
答案 0 :(得分:0)
setInterval
是可行的方法。你已经给出了一个很好的理由,它与客户无关。同时它可能无法保证其执行时间。它是最接近执行时间的。
除非由于CPU密集型执行而导致服务器挂起,否则这应该相当准确。同时允许HOST或任何其他客户端启动事件也容易出现相同的缺陷。