2015-07-10 57 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使用。