2012-10-18 97 views
4

我剛開始使用的AppFabric ...使用AppFabric的本地緩存和服務器緩存的混合

我的應用是在醫療保健 - 我們對15000系統的用戶,他們在突發訪問患者信息(例如想到一組護士/醫生在住院時接觸患者)。

我想要做的是在緩存主機服務器上緩存內存 和其他項目(例如實驗室,藥物,診斷成像,報告)中的某些項目(例如患者人口統計信息)。底層數據來自各種第三方系統,其中一些系統返回數據的速度非常緩慢。

有誰知道是否有可能表明,某些項目進入本地緩存中,而其他人轉到服務器?有太多的數據不適合記憶。在查看MSDN文檔時,這裏是一個示例配置文件。

<dataCacheClient requestTimeout="15000" channelOpenTimeout="3000" maxConnectionsToServer="1"> 
     <localCache isEnabled="true" sync="TimeoutBased" ttlValue="300" objectCount="10000"/> 
     <clientNotification pollInterval="300" maxQueueLength="10000"/> 
     <hosts> 
     <host name="CacheServer1" cachePort="22233"/> 
     <host name="CacheServer2" cachePort="22233"/> 
     </hosts> 
     <securityProperties mode="Transport" protectionLevel="EncryptAndSign" /> 
     <transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456" 
          maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000" 
          receiveTimeout="600000"/> 
    </dataCacheClient> 

它看起來像爲整個緩存客戶端啓用本地緩存啓用?

爲了支持我描述的情況,這是否意味着我將不得不創建兩個緩存客戶端和我的代碼必須知道/瞭解哪個緩存客戶端將數據放入?或者在將數據存儲到緩存時可以使用API​​ /標記/參數嗎?或者,也許,通過使用地區/標籤處理?

謝謝!

回答

2

假設你正在使用的AppFabric 1.1,you can configure multiple dataCacheClient nodes具有不同的配置。因此,使用現有的例子,你會做這樣的事情:

<!-- local caching client --> 
<dataCacheClient name="LocalCaching" requestTimeout="15000" channelOpenTimeout="3000" maxConnectionsToServer="1"> 
    <localCache isEnabled="true" sync="TimeoutBased" ttlValue="300" objectCount="10000"/> 
    <clientNotification pollInterval="300" maxQueueLength="10000"/> 
    <hosts> 
    <host name="CacheServer1" cachePort="22233"/> 
    <host name="CacheServer2" cachePort="22233"/> 
    </hosts> 
    <securityProperties mode="Transport" protectionLevel="EncryptAndSign" /> 
    <transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456" 
         maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000" 
         receiveTimeout="600000"/> 

從代碼

然後你使用,需要一個構造函數有不同的DataCacheFactoryConfigurations名稱而不是僅使用默認值:

DataCacheFactoryConfiguration localCachingFactoryConfig = new DataCacheFactoryConfiguration("LocalCaching"); 

DataCacheFactoryConfiguration remoteOnlyCachingFactoryConfig = new DataCacheFactoryConfiguration("RemoteOnlyCaching"); 

然後你只需從相應工廠代碼基礎上哪種類型的緩存,你需要爲你正在使用的數據創建數據高速緩存的實例。

+0

謝謝,這就是我一直在尋找的。傻我,我的公司在v1.0上,並沒有意識到它。 – Raymond

+0

因此,如果我被困在v1.0上,有沒有辦法讓這個多客戶端工作? – Raymond

+0

不幸的是,在1.0中沒有基於配置的方法來解決這個問題。但是,通過編程方式自己配置DataCacheFactoryConfiguration實例,在純代碼中完全可行。您只需構建自己的配置條目來存儲不同的屬性。 –