我是在一个网站上工作,我将需要能够跟踪广告印象。我的环境是带有IIS的ASP.Net,使用Server,并可能使用Memcached,因此访问数据库的次数不多。我还必须考虑可伸缩性,因为我希望这个应用程序成为一个全球性的现象(让我的手指祈祷和工作我的屁股)!情况是这样的:
因此,困境是:我需要在每个广告印象计数器上加上"+1“标记,但我不能每次加载该广告时运行该SQL语句。我需要在会话(或其他地方)中存储"+1“印象计数,然后每X分钟、每小时或每一天运行一次批处理。
请记住,可伸缩性是这里的一个重要因素。各位如有任何建议,将不胜感激。
发布于 2010-02-20 20:42:48
我看到项目通过在每个web场服务器上部署版本并依赖Service将跟踪审计交付给中央服务器来解决这一问题。因为场中的每个服务器都更新了一个本地SQL实例,所以它们可以扩展到天空的高度。服务经纪人保证了近乎实时可靠的交货.我见过网络场平均每秒处理300-400次请求,长时间内处理24x7次请求,而且Service Broker的排队特性能够在结束时吸收每秒5000至7500次点击量的峰值,并在合理的时间内恢复,而不需要审计损失,而且待办事项仍在控制之中。
如果您真的希望扩展并成为下一个MySpace,那么您应该向他们是怎么做的学习,并且基于队列的异步、解耦处理是游戏的名称。
发布于 2010-02-20 18:52:24
你可以做的事情是把计数增加到一个不那么固定的商店,并定期(每1分钟,5分钟,每小时.)同步到您更可靠的数据库。
如果你的临时商店倒闭,你会在一段短时间内失去点击次数;这样做的净效果是,在一次罕见的故障事件中,为广告付费的人会得到一些免费的印象。
您可以向memcache发送一个“通过+1原子递增此值”命令。您还可以在每次显示广告时将一行写入平面文件,并让您的“每5分钟”同步作业旋转日志,然后对刚刚旋转的文件中的所有行进行计数。
https://stackoverflow.com/questions/2303237
复制相似问题