我有ASP.NET WebAPI应用程序,客户端可以在其中执行更新。因此,当多个/并发请求到达应用服务器时,它会被负载均衡器划分。所以我有两个应用服务器,在它们前面有负载均衡器,所以负载是分开的。但是在后端,我们有不可扩展的内部SQL Server。因此,如果API同时获得多个请求,则很少有请求更新失败的原因是SQL Server超时。当我检查sp哪个超时时,SP根据发送的参数和一些配置的表生成动态查询。
另外,当我尝试在选择时间使用简单的update语句更新表时,也会遇到此问题。这里的表一次由多个应用程序更新。
我不确定解决问题的最佳策略是什么。
我应该使用RabbitMQ来最大程度地减少数据库负载。但是RabbitMQ可能会延迟更新,因为我的业务流程之一需要实时更新然后执行某些操作。
有人可以指导我处理这种情况。
为多个用户提供更新服务时最重要的考虑因素:始终使用TRANSACTION来更新数据库。确保事务包含更新所有需要的表所需的所有SQL,并在发出COMMIT时一次执行。