Azure ASP.NET云服务的单个实例或多个实例是什么?

时间:2014-06-14 10:11:02

标签: asp.net azure

使用Azure云服务时,asp.net中的单个和多个实例站点之间有什么区别?

2 个答案:

答案 0 :(得分:5)

好的 - 这里有一些概念你需要回答你的问题。

// Arrange.

首先,我将主要基于link to documentation对您的问题做出一些假设,因此我的答案不那么含糊。

  1. 您正在处理Azure WebSites而非云网络角色或使用IIS的自定义Windows虚拟机。 **
  2. 您正在尝试记住Session对象的内容(即:State数据)。
  3. 对于Azure网站,您不确定实例多个实例是什么。
  4. 注意:我的答案适用于运行IIS的网站,网络角色和Windows VM ......但我只是希望能够清楚地了解问题。

    // Act.

    当您创建网站(在WebSite,Web角色或带IIS的自定义Windows服务器中)时,网站会有一些已定义的内存边界/空间/花园/墙/魔术泡泡,称为App Pool 。这意味着您的网站与单一服务器上的其他网站100%隔离。你做的事情不好,也不会弄乱别人的网站。

    因此,安装在该单个服务器上的网站称为实例

    接下来,我们决定我们需要处理这么多人访问我们的网站,因此我们需要向外扩展。这意味着,制作本网站的副本/克隆,具有分割负载的效果。如果您扩展到3个副本,那么每个网络服务器应该(为简单起见)将工作负荷分成3 - 所以每个处理大约33%的负载***。

    现在,您在3台服务器上拥有1个网站,这称为多个实例

    因此,实例是一个术语,用于描述网站安装的服务器数量。

    好的 - 那么为什么这很重要?这与State有什么关系(正如您正在阅读/引用的那篇文章所建议的那样)?

    还记得我说过一个实例是一个服务器吗?如果你有多个实例你有多个服务器?好吧..既然网站存在于不同的服务器上 - 除非你做一些特殊的东西,否则他们不能在他们之间共享他们的State数据。这个特殊的东西就是那个文档正在聊天的内容,有许多时髦的术语,如InprocOutProcDistributed caching等。

    // Assert.

    TL; DR;是你现在知道当你扩展并在不同的硬件上拥有你网站的多个副本时,这就是所谓的多实例,当你这样做时(有多个副本),那么你需要考虑一些特殊代码来处理这些多个服务器之间State的共享 - 如果你需要共享状态。

    现在 - 有一张美丽的Mola Mola照片阅读所有这些:)

    enter image description here

    ***是,是的。有许多算法可以处理扩展站点的负载平衡,例如循环法等。让我们保持这个问题非常简单。 K + thxgoodbai。

答案 1 :(得分:0)

"多个实例"意味着它所说的 - 不仅仅是在两个IIS实例上托管的网站的单个实例。如果您使用进程内状态跟踪,则无法平衡两个Web服务器之间的流量(通常使用粘性会话来解决此问题,但这不是Azure的负载平衡功能的选项。)

相关问题