我正在调查windows azure中的一个新产品。特别是“网站”,我无法找到有关它如何处理会话数据的任何信息。有人知道吗?我将滑块移动到2个实例,这一切似乎都“正常工作”,但如果我确定它是在共享会话数据(或不是?),我会觉得使用它会更好。
答案 0 :(得分:5)
你有一些选择来解决这个问题
sql solution
表存储解决方案
memcache解决方案
Sql 是经典的解决方案。 Sql使用经典的sql请求处理所有会话。
表存储可以创造奇迹(根据我的经验)。它非常容易扩展,而且实现起来非常简单(只需几行代码就可以了。)
Memcache 解决方案是最佳解决方案。 Azure提供了一个“缓存服务器”集群来存储会话(或其他可序列化对象)。它非常容易扩展,并且工作非常快。我在我的生产环境中使用此解决方案,遇到0个问题并且性能非常好。
为了实现Memcache,您只需要在web.config上添加这些行:
<configuration>
<configSections>
<section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere"/>
<!-- more config sections here -->
</configSections>
<dataCacheClients>
<dataCacheClient name="default">
<hosts>
<host name="YOUR_NAME_HERE.cache.windows.net" cachePort="YOUR_PORT_HERE"/>
</hosts>
<securityProperties mode="Message">
<messageSecurity authorizationInfo="YOUR_KEY_HERE">
</messageSecurity>
</securityProperties>
</dataCacheClient>
</dataCacheClients>
<!-- more configurations here -->
摘要
如果您不关心成本并希望尽可能获得最佳性能,请选择memcache解决方案。如果您需要保持低成本,请选择桌面存储。
答案 1 :(得分:5)
如果您想了解有关Windows Azure网站架构的更多信息,我建议您在2012年TechEd上观看此会话Windows Azure Web Sites: Under the Hood
答案 2 :(得分:2)
由于上面的链接视频已经过时了,我想我会分享我在Azure上的会话能够找到的内容。
Azure使用Application Request Routing。
ARR巧妙地通过为用户提供一个特殊的cookie(称为亲和力cookie)来跟踪连接用户,这允许它在后续请求时知道他们正在与哪个服务器实例进行通信。这样,我们可以确定一旦客户端与特定服务器实例建立会话,只要他的会话处于活动状态,它就会继续与同一服务器通信。
参考: https://azure.microsoft.com/en-us/blog/disabling-arrs-instance-affinity-in-windows-azure-web-sites/
答案 3 :(得分:1)
您的目标是ASP.NET 4.5吗?
如果没有使用4.5明确配置任何提供程序,它将默认使用现在包含在Machine.config中的ASP.NET Universal Providers。因此默认情况下它将使用SQL会话状态提供程序。我希望它能使用本地数据库,所以我不确定如何共享状态。
您可以通过打开一些会话来测试它,然后将实例数量减少到一个,看看某些会话是否会失去状态。
负载均衡器可能正在使用会话亲缘关系,在这种情况下,您可能不会注意到它是否没有共享会话状态。
答案 4 :(得分:-1)
您有多少个网络角色?如果你把它保持为1你应该没问题,但是你可以阅读详细信息here,了解如果你运行的是一个Web场,多个Web角色将如何创建相同的会话状态问题...运行Web场时,选项是在数据库中保持会话状态。所以你可以想象,如果你需要运行多个web角色,那么你可以依靠sql Azure(虽然Table Storage非常酷,而且非常适合会话状态)
但是为了更直接地回答您的问题,您可以使用多个Web角色来分配处理负载,web role只是一个“前端Web应用程序和IIS内部托管的内容”。再说一次,如果您只使用一个Web角色,那么您的应用程序可能正常工作。但请注意,如果您需要扩展您的Web角色,它会使您的会话持久性增加。