我正在开发一个网站,需要能够跟踪广告展示次数。我的环境是带有 IIS 的 ASP.Net,使用 SQL Server DMBS 和可能的 Memcached,因此不会有太多的数据库访问。我还必须考虑可扩展性,因为我希望这个应用程序成为全局现象(祈祷并努力工作)!所以情况是这样的:
- 我的客户将为 Y 次广告展示支付 X 金额
- 这些广告展示次数(目前仅限文字广告)将显示在特定页面上。
- 页面由 Memcached 提供,减少了数据库访问
- 展示广告时,需要在数据库的展示次数中添加“+1”勾号
所以困境是这样的:我需要能够向每个广告展示计数器添加“+1”刻度线,但我无法在每次加载广告时运行该 SQL 语句。我需要以某种方式将“+1”印象数存储在 session 中(或其他地方),然后每 X 分钟、几小时或一天运行一批。
请记住,可扩展性是这里的一个重要因素。如果大家有任何建议,我们将不胜感激。
最佳答案
我见过一些项目通过在每个网络场服务器上部署 SQL Server Express 版本并依靠 Service Broker 将跟踪审核传送到中央服务器来处理此问题。由于场中的每台服务器都会更新本地 SQL 实例,因此它们可以扩展到天空。 Service Broker 确保近乎实时的可靠交付。我见过网络场在很长一段时间内 24x7 平均每秒处理 300-400 个请求,并且 Service Broker 的排队特性能够在数小时内吸收每秒 5000-7500 次点击的峰值并在合理的时间内恢复,不会造成审计损失,积压工作仍处于控制之中。
如果你真的希望扩大规模并成为下一个 MySpace,那么你应该向 how they do it 学习。 ,而基于队列的异步、解耦处理就是游戏的名称。
关于asp.net - 引用广告印象进行大规模 SQL 插入的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303237/