ASP.Net Web API - 扩展大量写操作

时间:2015-07-10 18:43:35

标签: asp.net-web-api redis rabbitmq message-queue scalability

我正在使用ASP.Net Web API开发一个项目,该项目将接收大量的POST操作,我需要向DB写入许多连续/同步记录。我没有每秒的确切数字,所以这更像是一个概念设计问题。

我正在考虑使用标准消息队列(RabbitMQ等)或内存数据存储(如Redis)来处理数据的初始数据,然后通过另一个进程将数据保存到磁盘(甚至内置的一个队列机制有一个)。

我知道我也可以使用线程来提高API的性能。

对于要查看哪些消息队列或内存存储,甚至只是架构建议,是否有人有任何建议?

感谢所有人的帮助。

-c

1 个答案:

答案 0 :(得分:1)

使用所有这些中间件会使您的Web应用程序扩展,但它仍然意味着您的数据库具有相同的负载。只需使用async / await,你的asp.net web api可以非常快。在async / await上你只需要小心地将它们完全放下 - 从控制器到数据库和外部请求 - 不要将它们与任务混合在一起,因为你最终会遇到死锁。
并且不进行线程化,因为您将使用应用程序线程,这样它将无法扩展 - 保留ASP.NET Web API使用的线程。