2015-07-10 19 views
0

我正在使用ASP.Net Web API进行项目工作,该项目将接收大量的POST操作,其中我将需要将许多连续/同时记录写入D B。我没有每秒的确切数字,所以这更多的是一个概念设计问题。ASP.Net Web API - 缩放大量的写操作

我想要有一个标准的消息队列(RabbitMQ等)或内存数据存储(如Redis)来处理数据的初始入口,然后通过另一个进程将该数据保存到磁盘(或即使是一个内置的队列机制之一也有)。

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

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

感谢任何人和所有人的帮助。

-c

+0

你的数据库能够处理所有的写入?因为使用所有这些中间件可以使您的Web应用程序扩展,但它仍然意味着您的数据库具有相同的负载。我们说什么db?只需使用异步/等待,您的asp.net web api就可以非常快。 –

+0

谢谢你的回应。数据库现在是ms sql。幸运的是,发布的数据量相对较小。我将首先进入异步/等待路线。我一直在阅读单独提供的性能改进。你能想到任何要注意走这条路线的事情吗? – cra

回答

1

使用所有这些中间件将使你的web应用的规模,但它仍然意味着您的数据库相同的负载。只需使用异步/等待,您的asp.net web api就可以非常快。异步/等待你只需要小心地完成它们 - 从控制器到数据库和外部请求 - 不要将它们与任务混合在一起,因为你最终会遇到死锁。
而且您不要线程化,因为您将使用应用程序线程,并且这种方式将无法扩展 - 让线程可以被ASP.NET Web API使用。