使用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/FLAG/参数?也许是使用区域/标签来处理?

谢谢!

假设您使用的是AppFabric 1.1,则可以配置具有不同配置的多个DataCacheClient节点。因此,使用您现有的示例,您将做类似的事情:

<!-- 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");

然后,您只需根据适当的工厂在代码中创建数据acache实例,该实例基于您需要的数据所需的哪种缓存。

最新更新