将Asp.net应用程序移动到负载平衡的环境中

eri*_*len 5 asp.net load-balancing

我有一个在单个服务器上运行良好的应用程序.我的客户现在希望将其转移到负载均衡的环境中.这样做时哪些事情可能会让我感到困惑?

目前我知道

  • 会话状态,和
  • 机器钥匙.

例如,这两个都在这里描述,所以我正在寻找其他的东西.

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

Dan*_*son 2

您可能会遇到的一件事是数据库服务器上的负载增加。如果您实现任何服务器端数据缓存,您将习惯于您的站点针对给定数据集访问数据库一次,缓存数据,然后在缓存超时之前不再访问数据库。对于经常访问的数据来说,这是一个很好的策略。

在负载均衡的环境中,后续请求可能会发送到不同的服务器,并且相同的数据会访问数据库两次。如果您有 2 台以上服务器,则更多。这本身并不坏,但建议您密切关注。如果数据库正在排队,则运行网络场的好处可能会被抵消。与往常一样,进行基准测试、分析并运行测试。

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

另一种解决方案是拥有分布式内存缓存,例如 memcached、Velocity 或 NCache。还有其他人,但这些是我合作过的。

另一件需要注意的与上述无关的事情是:您如何处理用户上传的文件。许多网站允许用户上传文件。如果此类文件之前尚未保存到中央存储(例如数据库或公共文件共享),则需要将其保存。