|
|
1
4
Memcached有一个轻量级的原子
我不是memcached的老手,但我想有办法相当确定所有URL的计数器都保持缓存。没有持久性,因此您可能随时丢失计数器,但偶尔丢失这种数据可能是可以接受的。 |
|
|
2
3
你有没有尝试过另一种方法,比如外部统计服务?也许谷歌分析?它可以在不增加服务器负载的情况下为您提供所需的信息。 |
|
|
3
1
您是否有理由忽略对apache访问日志的处理?它们确实有时间戳的好处,并且由服务器自动创建,而且相当轻便。一个相当简单的perl或awk脚本可以保存日志的运行摘要,以便进行简单的解析。 |
|
|
4
0
首先,为什么要保留时间戳?您可以通过在数据库中为每个URL保留一条记录,并在每次单击时递增计数来保持精确计数。
实际上,您可能一次可以计算多个URL,而不会给服务器带来过重的负担,因此您可以选择一些方便的URL数量,十个或一百个,或者您的系统可以处理的任何数量。
|
|
|
5
0
这可能不是一个实用的解决方案,但既然你要求一种“聪明”的方法, here |
|
|
6
0
如果你想要精确的计数,Redis是完成这项任务的理想选择。它的速度与memcached大致相当,但提供了持久性。持久性基于按顺序分叉和写入磁盘,因此避免了在数据库中保存此类信息的高io负载。
如果你想要一个非常简单的方法:以无偏见的方式丢弃样本,(即
上面的方案有更复杂的变体,你用一个随着计数增长而吸取教训的概率来更新计数器(然后在读取计数器时通过概率函数对其进行适当的加权),这是一种卑鄙的重要性抽样形式。这些几乎同样简单,并且更好地保留了分布尾部的计数。
啊,对不起,我现在从评论中看到,你在一段时间内都在关注房价。我使用的方法与采样/计数器基本相同,只需将单个计数器存储一段时间(即每小时)。为了保存长期档案,需要为批处理作业从细粒度(每小时)表填充的较大时间段(每天、每周)提供额外的汇总表,以便从细粒度表中删除旧数据。 RRDTool是这一思想的一个更通用的实现,几个OSS监控解决方案都使用它。 |