【问题标题】:ASP.Net Web API - scaling large number of write operationsASP.Net Web API - 扩展大量写入操作
【发布时间】:2015-09-29 15:15:13
【问题描述】:

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

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

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

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

感谢大家的帮助。

-c

【问题讨论】:

  • 你的数据库能处理所有的写入吗?因为使用所有这些中间件将使您的 Web 应用程序扩展,但它仍然意味着您的数据库上的负载相同。我们在说什么数据库?只需使用 async/await,您的 asp.net web api 就可以非常快。
  • 感谢您的回复。数据库现在将是 ms sql。幸运的是,发布的数据量相对较小。我将从 async / await 路线开始。我一直在阅读有关单独可以提供的性能改进的信息。你能想到走那条路要注意什么吗?

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


【解决方案1】:

使用所有这些中间件将使您的 Web 应用程序扩展,但它仍然意味着您的数据库上的负载相同。只需使用 async/await,您的 asp.net web api 就可以非常快。在 async/await 上,您只需要小心地一直执行它们 - 从控制器到数据库和外部请求 - 不要将它们与 Tasks 混合,因为您最终会遇到死锁。
不要使用线程,因为您将消耗应用程序线程,这样它就无法扩展 - 让线程由 ASP.NET Web API 使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多