Могу ли я использовать выделенный (отдельный) кластер для хранения сессии appfabric?
Мы не хотим использовать кластер кэширования для этого, потому что на данный момент мы сталкиваемся с некоторыми проблемами стабильности кластеров кэша, поэтому они постоянно обслуживаются (полностью наша вина). Можем ли мы использовать выделенный кластер для хранения сеансов? (забыть кластер, хотя бы один хост?)
Это будет похоже на использование двух кластеров в одном приложении, одного для кэширования и одного для хранения сеансов, и они будут лежать в одном файле конфигурации.
Правильный ли мой подход? Любая помощь будет оценена. Спасибо!
Благодаря @CyberMax я смог настроить эту среду. Но я получаю сообщение об ошибке при запуске страницы:
Раздел конфигурации dataCacheClients не может быть прочитан, так как в нем отсутствует объявление раздела
Вот мой конфиг:
<configuration>
<configSections>
<!-- required to read the <dataCacheClient> element -->
<section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35"
allowLocation="true"
allowDefinition="Everywhere"/>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Microsoft.ApplicationServer.Caching.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<!--specify the named cache for session data-->
<add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="sample-cache" dataCacheClientName="VirtualCache"/>
</providers>
</sessionState>
</system.web>
<dataCacheClients>
<dataCacheClient name="serverCache">
<localCache isEnabled="false" sync="NotificationBased" objectCount="100000"/>
<clientNotification pollInterval="5"/>
<!--cache host(s)-->
<hosts>
<host name="!@13452662.gf.com" cachePort="22233"/>
<host name="!@13452663.gf.com" cachePort="22233"/>
</hosts>
<securityProperties mode="None" protectionLevel="None" />
<transportProperties maxBufferPoolSize="2147483647" maxBufferSize="2147483647" channelInitializationTimeout="60000" receiveTimeout="900000"/>
</dataCacheClient>
<dataCacheClient name="VirtualCache">
<localCache isEnabled="false" sync="NotificationBased" objectCount="100000"/>
<clientNotification pollInterval="5"/>
<hosts>
<host name="localhost" cachePort="22233"/>
<host name="localhost" cachePort="22234"/>
<host name="localhost" cachePort="22235"/>
<host name="localhost" cachePort="22236"/>
</hosts>
</dataCacheClient>
</dataCacheClients>
</configuration>
РЕДАКТИРОВАТЬ:
изменения dataCacheClient
в dataCacheClients
приводит к этой ошибке:
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: Web configuration error. Check your Web.config file, or revert to the last working version.dataCacheClientName
Source Error:
Line 31: <providers>
Line 32: <!--specify the named cache for session data-->
Line 33: <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="sample-cache" dataCacheClientName="VirtualCache"/>
Line 34: </providers>
Line 35: </sessionState>
1 ответ
Да, ты можешь.
При настройке провайдера состояния AppFabric Sesison вы можете указать имя dataCacheClient. Это имя раздела dataCacheClient для использования из раздела конфигурации dataCacheClients. По умолчанию поставщик будет использовать раздел dataCacheClient с именем "default".
, такие как
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider" compressionEnabled="false">
<providers>
<add name="AppFabricCacheSessionStoreProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="default"
useBlobMode="true"
dataCacheClientName="dataCacheClient1"/>
</providers>
</sessionState>
Вы можете иметь несколько dataCacheClient в вашем файле конфигурации.
<dataCacheClients>
<dataCacheClient name="dataCacheClient1">
<hosts>
<host name="CacheServer1" cachePort="22233" />
</hosts>
</dataCacheClient>
<dataCacheClient name="dataCacheClient2">
<hosts>
<host name="CacheServer1" cachePort="22233" />
</hosts>
</dataCacheClient>
</dataCacheClients>
Таким образом, нет проблем иметь кластер с несколькими кешами.
Редактировать:
Здесь конфигурация для AppFabric 1.0
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--configSections must be the FIRST element -->
<configSections>
<!-- required to read the <dataCacheClient> element -->
<section name="dataCacheClient"
type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
allowLocation="true"
allowDefinition="Everywhere"/>
</configSections>
<!-- cache client -->
<dataCacheClient>
<!-- cache host(s) -->
<hosts>
<host
name="CacheServer1"
cachePort="22233"/>
</hosts>
</dataCacheClient>
<system.web>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<!-- specify the named cache for session data -->
<add
name="AppFabricCacheSessionStoreProvider"
type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider"
cacheName="NamedCache1"
sharedId="SharedApp"/>
</providers>
</sessionState>
</system.web>
</configuration>
Здесь конфигурация для AppFabric 1.1
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="dataCacheClients"
type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
allowLocation="true" allowDefinition="Everywhere"/>
</configSections>
<dataCacheClients>
<dataCacheClient name="default" channelOpenTimeout="10000">
<hosts>
<host name="CacheServer1" cachePort="22233" />
</hosts>
</dataCacheClient>
</dataCacheClients>
<system.web>
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider" compressionEnabled="false">
<providers>
<add name="AppFabricCacheSessionStoreProvider"
type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
cacheName="default"
useBlobMode="true"
dataCacheClientName="default"/>
</providers>
</sessionState>
</system.web>
</configuration>