【发布时间】:2015-09-11 20:32:02
【问题描述】:
我有一个 MVC 和 WebAPI 应用程序,需要将用户执行的活动记录回我的数据库。这几乎总是一次插入到少于 5 列的表中(即很少有数据通过网络)。我目前使用的数据接口是Entity Framework 6
每隔一段时间,我就会有大量用户需要记录他们执行了一项活动。在这种情况下,“大量”可能是每秒几百个请求。这通常最多只会持续几分钟。其余时间,我看到网站的流量非常可控。
当流量激增时,我的一些客户端会出现超时错误,因为在服务器将数据插入数据库之前页面没有完成加载。现在,将数据实际插入数据库对于用户继续使用应用程序来说是不必要的,因此我可以将这些请求缓存在本地某处,然后再批量插入它们。
对于 ASP.NET MVC 有没有什么好的解决方案来缓冲传入的请求数据,然后每隔几秒将它们批量插入到数据库中?
就我的环境而言,我有几台服务器在负载平衡的 Web Farm 中运行 Server 2012 R2。如果可能的话,我宁愿保持无状态,因为用户可能会在每个请求中访问不同的服务器。
【问题讨论】:
-
不知何故,我在想“这就像分析跟踪(事件等)”,所以我的大脑朝那个方向发展 - 有什么东西阻碍了客户端的方法吗?收集数据并在客户端上持续存在直到您定义为“批处理”的“某个时间”?有点像“可怜的 (wo)man/s 消息队列”:) 或者,如果你想一想,它就像一个“客户端购物车”(根据需要添加、删除、刷新)。
标签: c# asp.net entity-framework web-traffic