1

我经常听到来自不同来源的这个问题,但从来没有很好地了解实现这一目标的技术。任何人都可以发光吗?问题是:您有一个每天有大量用户访问的网站。您的网站以分布式方式部署,有多个网络服务器和负载平衡器响应来自许多位置的传入请求。您如何获得第 1000000 个用户访问权限,并向他显示一个特殊页面,上面写着“恭喜,您是我们的第 1000000 个访问者!”。假设您有一个分布式后端。

4

2 回答 2

1

你可以用 jQuery 来做,例如:

$("#linkOfInterest").click(function() { //code for updating a variable/record that contains the current number of clicks });

CSS:

a#linkOfInterest {
//style goes here 
}

在 html 中的某处:

<a id="linkOfInterest" href="somepage.htm"></a>
于 2013-06-20T15:57:08.420 回答
0

您将不得不权衡性能或准确性。最简单的方法是让 memcached 实例跟踪您的访问者数量,或者使用其他具有原子增量操作的数据存储。由于只有一个事实来源,因此只有 1 位访问者会收到消息。这将至少延迟到商店的往返加载页面。

如果您不能承受延迟,那么您将不得不权衡准确性。分布式数据存储将无法比单个实例更快地自动增加字段。每个 Web 服务器都可以读取和写入本地节点,但另一个数据中心的另一个节点在事务协调之前也可能达到 100 万用户计数。在这种情况下,2 人或更多人可能会收到第 100 万条用户消息。

事后可以这样做。最终,数据存储将协调增量,您的应用程序可以决定严格的排序。但是,如果您已经决定单个原子请求花费的时间太长,那么此逻辑将发生得太晚而无法呈现您的页面。

于 2013-06-24T09:25:41.453 回答