我有 3 个 Web 项目在 Azure 上运行,目前所有站点都在一个实例内,这对于降低成本很有帮助,但当其中一个 Web 项目出现需求高峰而导致其他服务减慢/停止时,效果就不那么好了。
其中 2 个站点位于同一域(其中一个具有不同端口),另一个站点位于子域。站点的优点在于您可以使用主机名来区分在同一端口上运行的站点。如果子域站点被引用为 Web 角色,则它将需要与其他两个 Web 角色不同的端口 - 根本不是我想要的!
问题是,虽然我可以使用两个云服务,但您无法在解决方案中同时调试它们。将它们放在两个解决方案中可以缓解问题,但它们共享一个经常更改的类库,根据我的经验,将其放在单独的 Web 角色解决方案中使得调试非常棘手。
非常感谢任何帮助!
最佳答案
这里真正的问题是什么?
首先,我不认为将所有站点置于单个 WebRole 中存在问题。当达到峰值时,只需横向扩展即可。是的,您将扩展所有站点,但这只是一个优势。 Windows Azure 负载均衡器使用 RoundRobin 算法,保证所有请求在所有实例之间均匀发送。我会再说一遍 - 当你看到峰值时,只需横向扩展,无需担心。毕竟,这就是 Azure 的意义。对于成本来说,这并不重要,因为无论如何你都会扩展。无论是每个网络角色一个站点,还是每个网络角色 10 个站点,规模就是规模,并且花费相同的资金。
至于另一个问题。我一直在处理很多多项目解决方案。我从未见过多个项目使用的公共(public)库出现问题。特别是当一切都在(源)控制之下时。 Visual Studio 具有“添加现有项目”的巧妙功能(当您右键单击解决方案时):
因此,您的公共(public)类库只是在许多解决方案中使用的单个项目,并在文件系统的单个位置上进行编辑。
作为底线,我要再说一遍 - 如果您唯一烦恼的是,当您在高峰期扩展站点时,您也会扩展其他站点,但不要这样做!如果您不想在高峰期进行扩展,并不想让网站瘫痪 - 就不要使用 Azure。
关于c# - 一个解决方案中包含多个 Azure 云服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525909/