拉通知方法


Pull notification methods

设计一个通知组件。我想了解使用哪种类型的拉通知方法来有效地在服务器上最小的压力下拉通知。

假设我想通知用户一个聊天消息,我想我需要非常有规律地提取数据,比如每500ms快速响应一次。然而,这样做可能会使系统过载。假设有100万用户浏览网站,那么每秒就有200万个请求!

我正在考虑写一个算法,它将在每次拉动时逐渐增加1秒的拉动间隔,最大可达60秒。如果有新数据,间隔将重置为500ms。这样,如果用户有频繁的通知,它将是即时的。但如果很长一段时间没有通知,可能会有一点延迟,最多一分钟。

从本质上讲,我在用户体验和服务器负载之间做出妥协,以找到两者的中间地带。

如果有的话,请告知这种方法可能存在的缺点。它有一个合适的名字吗?

或者,有没有更好的方法?

你所做的是拉扯或长拉扯。实际上,它对性能不利。

另一种方法是push (http://en.wikipedia.org/wiki/Push_technology)。当有新的东西时,你就推送数据。您可以使用web套接字来实现此功能。

你可以看看Apollo消息中间件,它具有对websockets的本地支持和良好的性能。http://activemq.apache.org/apollo/

如果有许多客户端连接,您正在使用的方法可能导致服务器上的网络流量过载。假设您连接了1000个客户端:服务器必须处理1000个不同的连接。更好的方法是使用推送通知系统。看看这个https://nodejs.org/it/docs/