好的 - 这里有一些概念需要您了解才能回答您的问题。
// Arrange.
首先,我主要根据link to documentation对你的问题做一些假设,这样我的回答就没有歧义了。
- 您处理的是Azure WebSites,而不是云 Web 角色或带有 IIS 的自定义 Windows 虚拟机。 **
- 您正在尝试使用
Session 对象(即:State 数据)记住内容。
- 对于 Azure 网站,您不确定什么是 instance 或 multiple 实例。
注意:我的回答适用于网站、Web 角色和 Windows VM 的运行 IIS .. 但我只是想在 Q 上说清楚。
// Act.
当您创建网站时(在网站、Web-Role 或带有 IIS 的自定义 Windows Server 中)该网站有一些定义的内存边界/空间/花园/墙/魔术气泡,称为 App Pool。这意味着您的网站与该单个服务器上的其他网站 100% 隔离。你做了坏事,它不会扰乱其他人的网站。
因此,安装在该单一服务器上的网站称为实例。
接下来,我们决定我们需要处理这么多访问我们网站的人,因此我们需要向外扩展。这意味着,制作具有拆分负载效果的本网站的副本/克隆。如果您扩展到 3 个副本,那么每个网络服务器应该(为简单起见)将工作负载分成 3 份 - 因此每个服务器处理大约 33% 的负载***。
现在,您在 3 台服务器上拥有 1 个网站,这称为多实例。
因此,实例是一个术语,用于描述网站安装在多少台服务器上。
好的 - 那么为什么这很重要,这与 State 有什么关系(正如您正在阅读/参考的那篇文章所建议的那样)?
还记得我说过一个实例是单个服务器,如果您有多个实例,那么您有多个服务器?好吧.. 现在网站存在于不同的服务器上——除非你做一些特殊的事情,否则它们不能在它们之间共享State 数据。那个特别的东西就是那个文档在谈论的东西,有很多时髦的术语,比如Inproc、OutProc、Distributed caching等。
// Assert.
所以 TL;DR;是您现在知道,当您向外扩展并在不同的硬件上拥有网站的多个副本时,这称为多实例,当您这样做时(拥有多个副本),那么您需要考虑一些处理在这些多台服务器之间共享State 的特殊代码——如果您需要共享状态。
现在 - 有一张漂亮的 Mola Mola 的照片来阅读所有这些内容:)
*** 是是是.. 有许多算法可以处理横向扩展站点的负载平衡,例如循环法等。为了这个问题,让我们保持非常简单。克? thxgoodbai。