如何获得网站的第100万次点击

时间:2013-06-20 15:47:22

标签: web-services web memcached distributed-computing

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

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