我正在使用ASP.Net Web API开发一个项目,该项目将接收大量的POST操作,我需要向DB写入许多连续/同步记录。我没有每秒的确切数字,所以这更像是一个概念设计问题。
我正在考虑使用标准消息队列(RabbitMQ等)或内存数据存储(如Redis)来处理数据的初始数据,然后通过另一个进程将数据保存到磁盘(甚至内置的一个队列机制有一个)。
我知道我也可以使用线程来提高API的性能。
对于要查看哪些消息队列或内存存储,甚至只是架构建议,是否有人有任何建议?
感谢所有人的帮助。
-c
答案 0 :(得分:1)
使用所有这些中间件会使您的Web应用程序扩展,但它仍然意味着您的数据库具有相同的负载。只需使用async / await,你的asp.net web api可以非常快。在async / await上你只需要小心地将它们完全放下 - 从控制器到数据库和外部请求 - 不要将它们与任务混合在一起,因为你最终会遇到死锁。
并且不进行线程化,因为您将使用应用程序线程,这样它将无法扩展 - 保留ASP.NET Web API使用的线程。