我的 Windows Azure 部署中有一个 WebRole,有几个实例。在这个角色中,我做了很多缓存。因此,我的客户每次都会向另一个实例询问特定信息,该信息可能未存储在请求的实例上。我所有的缓存信息都有一个“实例”属性,所以我可以将我在云中的请求路由到特定实例(通过内部端点)。
有没有办法为我的实例而不是我的部署获取 URL?就像是:
instance1.mydeployment.cloudapp.net?
我认为有些东西会很有帮助。
谢谢你。
我的 Windows Azure 部署中有一个 WebRole,有几个实例。在这个角色中,我做了很多缓存。因此,我的客户每次都会向另一个实例询问特定信息,该信息可能未存储在请求的实例上。我所有的缓存信息都有一个“实例”属性,所以我可以将我在云中的请求路由到特定实例(通过内部端点)。
有没有办法为我的实例而不是我的部署获取 URL?就像是:
instance1.mydeployment.cloudapp.net?
我认为有些东西会很有帮助。
谢谢你。
就在这里。我不确定它来自什么 SDK,但是在您的 csdef 文件中,您可以将您的正常端点部分更改为如下所示
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" localPort="80" />
<InstanceInputEndpoint name="Endpoint2" localPort="80" protocol="tcp"><!--localPort must be 80 for this to work-->
<AllocatePublicPortFrom>
<FixedPortRange min="10016" max="10020"/> <!--make a range that covers the # instances you might need or scale too - bear in mind azure port limits ~25 -->
</AllocatePublicPortFrom>
</InstanceInputEndpoint>
</Endpoints>
现在你应该可以同时访问
sticky session
您的方法与 Tomcat 服务器的问题非常相似。由于您生活在 .NET 世界中,我强烈建议您更改您的体系结构以不中继此粘性路由。
如果你真的想实现那个特定的目标(我不知道为什么会想要),可以通过应用程序请求路由。这并不容易,但它是可行的。您可以在此处阅读有关如何在 Azure Web 角色上安装 ARR 的信息。但是您必须维护 ARR 的自动配置和重新配置,尤其是在添加或删除实例时。
坦率地说,粘性会话的整个想法被打破了。即使您设法处理 ARR 的自动安装和配置,请告诉我当 Azure Fabric 控制器为来宾操作系统更新关闭 1 个实例时会发生什么。由该实例提供服务的用户会发生什么情况?
我建议您使用分布式 Windows Azure 缓存作为在实例之间共享缓存数据的可靠解决方案。
据我所知,您无法为各个实例获取单独的 URL。
编辑:以下答案可能会有所帮助: Azure Web Role Internal Endpoint - Not Load Balanced
看看这个例子:http ://blog.maartenballiauw.be/post/2011/10/21/Running-Memcached-on-Windows-Azure-for-PHP.aspx
我知道,它是 PHP 和 memcache 的教程,但它使用 InternalEndpoint 通过 TCP 进行角色通信。也许它可以帮助您了解如何解决您的问题。