代码之家  ›  专栏  ›  技术社区  ›  erikkallen

将ASP.NET应用程序移动到负载平衡环境

  •  5
  • erikkallen  · 技术社区  · 14 年前

    我有一个在单一服务器上运行良好的应用程序。我的客户现在想将其转移到负载平衡的环境中。做这件事的时候,哪些事情会咬我?

    目前我知道

    • 会话状态,以及
    • 机器按键。

    这两个都有描述 here 例如,我在寻找一些额外的东西。

    这些 similar questions ,但第一个解决了一般的负载平衡问题,我正在寻找一个迁移指南,第二个解决了一个特定的问题。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Daniel Dyson    14 年前

    你可能会经历的一件事是 数据库服务器上的负载增加 . 如果您实现了任何服务器端的数据缓存,那么对于给定的数据集,您将被用于您的站点访问数据库一次,缓存数据,然后在缓存超时之前不再访问数据库。这是一个很好的常用数据访问策略。

    在负载平衡环境中,后续请求可能会发送到不同的服务器,对于相同的数据,数据库将被命中两次。如果您有两个以上的服务器,可以选择更多服务器。这本身并不坏,但建议你密切关注它。如果数据库正在排队,那么运行WebFarm的好处可能会被否定。一如既往,基准测试、概要分析和运行测试。

    解决这个问题的一个方法是进行粘性会话。这是一种基于路由器的方法。一旦建立了用户会话,来自该用户的所有请求都将路由到同一服务器。这有它的缺点,最显著的是,负载平衡的效率可能会降低,更不用说失去服务器时的问题了。此外,只有在缓存大部分特定于用户的数据(如页面搜索结果)时,它才有帮助,而这些数据只缓存很短的时间。

    另一种解决方案是使用分布式内存缓存,如memcached、velocity或ncache。还有其他的,但这些是我曾经合作过的。

    另一件与上述情况无关的事情是: 如何处理来自用户的文件上载。 许多网站允许用户上载文件。如果以前没有将此类文件保存到中央存储区(如数据库或公共文件共享区),则需要将其保存。

        2
  •  0
  •   sashaeve    14 年前

    this article 它描述了有关准备ASP.NET应用程序进行负载平衡的一些技巧。