我想设计一个通知组件。我想了解在那里使用什么类型的拉动通知方法来有效地拉动通知,同时减轻服务器上的压力。
比方说,我想通知用户聊天消息,我想我需要定期提取数据,比如每500毫秒快速响应一次。但是,这样做可能会使系统过载。假设我有一百万用户浏览网站,每秒有200万个请求!
我正在考虑编写一种算法,在每次拉动时将拉动间隔增加1秒,最多为60秒。如果有新数据,间隔将重置为500毫秒。这样,如果用户频繁通知,它将是即时的。但如果没有更长时间的通知,可能会有一段时间的延迟。
从本质上讲,我在用户体验和服务器负载之间做出了妥协,为两者找到了中间立场。
如果有的话,请告知这种方法的可能缺点。它有适当的名称吗?
或者,那里有更好的方法吗?
答案 0 :(得分:0)
你正在做的是拉或长拉。实际上它对性能不利。
另一种方法是推(http://en.wikipedia.org/wiki/Push_technology)。当有新的东西时你推送数据。 你可以用它来实现这个。
您可以查看Apollo消息传递中间件,它们具有对websockets和良好性能的本机支持。 http://activemq.apache.org/apollo/
答案 1 :(得分:-1)
如果连接了许多客户端,您使用的方法可能会导致服务器上的网络流量过载。假设您连接了1000个客户端:服务器必须处理1000个不同的连接。更好的方法是使用推送通知系统。看看https://nodejs.org/it/docs/