ASP.Net Web API - 扩展大量写入操作
ASP.Net Web API - scaling large number of write operations
我正在使用 ASP.Net Web API 进行一个项目,该项目将接收大量 POST 操作,我需要将许多连续/同时的记录写入D B。我没有每秒的确切数字,所以这更像是一个概念设计问题。
我正在考虑使用标准消息队列(RabbitMQ 等)或内存中数据存储(例如 Redis)来处理数据的初始接收,然后通过另一个进程将该数据持久保存到磁盘(甚至一个内置的队列机制之一)。
我知道我也可以使用线程来提高 API 的性能。
关于要查看哪些消息队列或内存存储,甚至只是架构建议,有人有任何建议吗?
感谢大家的帮助。
-c
使用所有这些中间件将使您的 Web 应用程序可扩展,但它仍然意味着您的数据库上的负载相同。您的 asp.net 网络 api 可以非常快地使用 async/await。在 async/await 上,您只需要小心地执行它们 - 从控制器到数据库和外部请求 - 不要将它们与任务混合,因为您最终会陷入僵局。
而且你不要线程化,因为你会消耗应用程序线程,这样它就无法扩展 - 让 ASP.NET Web API.
使用线程
我正在使用 ASP.Net Web API 进行一个项目,该项目将接收大量 POST 操作,我需要将许多连续/同时的记录写入D B。我没有每秒的确切数字,所以这更像是一个概念设计问题。
我正在考虑使用标准消息队列(RabbitMQ 等)或内存中数据存储(例如 Redis)来处理数据的初始接收,然后通过另一个进程将该数据持久保存到磁盘(甚至一个内置的队列机制之一)。
我知道我也可以使用线程来提高 API 的性能。
关于要查看哪些消息队列或内存存储,甚至只是架构建议,有人有任何建议吗?
感谢大家的帮助。
-c
使用所有这些中间件将使您的 Web 应用程序可扩展,但它仍然意味着您的数据库上的负载相同。您的 asp.net 网络 api 可以非常快地使用 async/await。在 async/await 上,您只需要小心地执行它们 - 从控制器到数据库和外部请求 - 不要将它们与任务混合,因为您最终会陷入僵局。
而且你不要线程化,因为你会消耗应用程序线程,这样它就无法扩展 - 让 ASP.NET Web API.