横向扩展 ASP.NET Web Api 2.0?

Posted

技术标签:

【中文标题】横向扩展 ASP.NET Web Api 2.0?【英文标题】:Scale out ASP.NET Web Api 2.0? 【发布时间】:2015-06-11 10:58:07 【问题描述】:

我目前正在评估 NodeJS 和 Microsoft ASP.NET Web Api 的 REST Api 实现,该实现将处理大量流量,虽然我可以看到 NodeJS 如何通过各种附加模块和技术进行横向扩展,但我找不到一个例子来说明你如何可以用 ASP.NET Web Api 做同样的事情。

将 ASP.NET Web Api 横向扩展和负载平衡到多台服务器的最佳方式或技术是什么?

【问题讨论】:

【参考方案1】:

您可以横向扩展任何 Web Api 应用程序,就像使用其他 ASP.Net 应用程序一样。您基本上有两个或多个 Web 服务器,并有一个负载均衡器或流量管理器来处理它们之间的请求。

什么是最好的技术?嗯,这是一个选择问题。

我的观点是性能瓶颈在数据层。您应该考虑实现某种内存缓存设施,例如 Redis,以帮助实现可扩展性。

【讨论】:

在较新版本的 .Net 中使用异步等待模式将使效率更接近 NodeJS 和 nginx 等事件驱动架构 感谢您的回答。是的,我知道异步等待模式及其与 NodeJS 的同等性能。这就是我寻求负载平衡解决方案的原因,因为与 Node.js 相比,这是 Web Api 唯一的缺点。使用 NodeJ,您可以使用 Nginx、Varnish HAProxy、Node.js 集群等选项,这些选项被广泛使用,并且有大量示例。 Web Api 负载均衡的例子其实是我所追求的。 您仍然可以使用 HAProxy 通过 WebAPI 进行负载平衡。它位于 Web 服务器的前面,并对流量进行负载平衡。看看 SO 架构,它使用了 ASP.Net 的混合技术 - highscalability.com/blog/2011/3/3/… highscalability.com/blog/2014/7/21/… 肯定有围绕水平缩放的复杂性。令牌键、应用程序上下文等

以上是关于横向扩展 ASP.NET Web Api 2.0?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net WEB API 2.0 - CORS

从头编写 asp.net core 2.0 web api 基础框架

应用程序中断访问 dbcontext、Asp .net 核心 web api 2.0 与实体框架核心 2.0 数据库第一种方法

ASP.NET Core 2.0 中 Web API 的本地用户帐户存储

Asp.net Core 2.0 web api 基础框架 详解

asp.net core 2.0 web api基于JWT自定义策略授权