【问题标题】:how to scale MVC 4 WebApi and Entitiy Framework如何扩展 MVC 4 Web Api 和实体框架
【发布时间】:2012-08-09 03:32:48
【问题描述】:

我有一个使用 MVC 4 构建的 Web 应用程序,后端带有 WebApi,它具有实体框架。

我已经使用结构映射将实体框架注入 webapi。并将 webapi 客户端注入 MVC 4 应用程序。

他的应用程序运行良好,但很快我将需要扩展。

MVC 4 应用程序位于一台服务器上,webapi 位于另一台服务器上,并且有一个数据库服务器。

如何水平扩展 webapi?如果我添加 webapi 服务器和数据库服务器,是否有实体框架的配置将采用多个连接字符串并进行循环查询?是否有可用于 EF 的分片。

httpclient怎么样?故障转移,例如客户端需要多个 IP,如果一个失败,请求会转到另一台服务器?

如何缩放它们?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework scalability asp.net-web-api


    【解决方案1】:

    通常会添加额外的 Web 服务器,然后使用负载平衡器在它们之间分配传入请求。这里有一些注意事项。

      1234563 /p>
    • 如果性能问题源于数据库 IO 问题(缺少表索引、索引碎片、请求提取大量结果集、未达到最佳磁盘\硬件配置等...),那么添加更多 Web 服务器将不解决问题。第一步是监控和分析您的数据库并确保其运行良好。

    【讨论】:

    • 我已经知道这些了。 HttpClint 或 DbContext 怎么样?他们是否采用多个连接字符串并进行一致的哈希和负载平衡?
    • 不,您应该为所有 Web 服务器保留一个数据库。 Microsoft 对 SQL Server 的建议始终是先扩展再扩展。水平扩展 SQL Server 非常困难,请参阅msdn.microsoft.com/en-us/library/ms181131(v=sql.105).aspx 了解更多信息。如果我需要水平扩展数据库,我不会使用 Microsoft SQL。
    • 单一数据库?你在开玩笑吗?我在一家媒体公司工作,他们有 30 个同步的 sql 服务器用于跟踪。哪台服务器每天可以处理十亿笔交易,更不用说sql server了。
    • 如果您必须水平扩展 Microsoft SQL,则需要重新设计应用程序以使用分布式分区视图,或者寻找第三方应用程序来平衡集群。
    • AWS 已经提供了这一点。同样,azure 也有解决方案。但是,为拥有大量数据和访问者的应用程序使用单个集中式数据库是一个糟糕的主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2011-05-06
    • 1970-01-01
    • 2013-03-12
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多