微软分布式缓存AppFabric(Velocity)学习-缓存概念(二)
2011-08-15 00:18
706 查看
接上一篇 学习中,顺便翻译,有不正确的地方欢迎指正,转载请注明出处http://cnblogs.com/xuf22
二、缓存概念
2. 缓存客户端与本地缓存
使用Velocity缓存,应用程序中需要用到DataCache对象存储缓存对象。这个对象就是缓存客户端,它为应用程序提供了一个缓存群集服务的name cache的引用。该对象由DataCacheFacory对象的GetCache方法创建。
出于性能考虑,建议在应用程序中尽量少创建DataCacheFactory对象,在应用程序中创建一个全局变量,以便缓存客户端可以在任何地方都给使用--用单件模式吧
缓存客户端分为两种:路由客户端和普通客户端。两种缓存客户端都可以将缓存存储在本地,这种被存储在本地的缓存称为:本地缓存。缓存客户端的存储选项可以通过应用程序配置文件指定。
2.1 安全考虑
缓存客户端应该用在运行数据中心的服务器上的应用程序中,在企业防火墙内。缓存服务和缓存主机之前的通信是不加密的,很容易受到“嗅探”和“Replay”攻击。
强烈建议使用加密的XML配置文件来指定缓存客户端。
2.2 客户端类型
下图中有两个使用了缓存的应用程序:路由(routing)和普通的(simple)
T0:取出对象//cacheClientA pulls the FM radio inventory from cache
DataCacheFactory clientACacheFactory = new DataCacheFactory();
DataCache cacheClientA = clientACacheFactory.GetCache("catalog");
DataCacheItem radioInventoryA =
cacheClientA.GetCacheItem("RadioInventory","electronics");
//cacheClientB pulls the same FM radio inventory from cache
DataCacheFactory clientBCacheFactory = new DataCacheFactory();
DataCache cacheClientB = clientBCacheFactory.GetCache("catalog");
DataCacheItem radioInventoryB=
cacheClientA.GetCacheItem("RadioInventory", "electronics");[/code]
Time One(T1):
Time Two: The Second Update Fails
保守式并发
当客户端取出对象时明确指出该对象已被取出,正在更新,所有对缓存对象的请求都被驳回,直到销被释放。当缓存对象被锁定时,读取操作会返回一个句柄。
二、缓存概念
2. 缓存客户端与本地缓存
使用Velocity缓存,应用程序中需要用到DataCache对象存储缓存对象。这个对象就是缓存客户端,它为应用程序提供了一个缓存群集服务的name cache的引用。该对象由DataCacheFacory对象的GetCache方法创建。
出于性能考虑,建议在应用程序中尽量少创建DataCacheFactory对象,在应用程序中创建一个全局变量,以便缓存客户端可以在任何地方都给使用--用单件模式吧
缓存客户端分为两种:路由客户端和普通客户端。两种缓存客户端都可以将缓存存储在本地,这种被存储在本地的缓存称为:本地缓存。缓存客户端的存储选项可以通过应用程序配置文件指定。
2.1 安全考虑
缓存客户端应该用在运行数据中心的服务器上的应用程序中,在企业防火墙内。缓存服务和缓存主机之前的通信是不加密的,很容易受到“嗅探”和“Replay”攻击。
强烈建议使用加密的XML配置文件来指定缓存客户端。
2.2 客户端类型
下图中有两个使用了缓存的应用程序:路由(routing)和普通的(simple)
T0:取出对象//cacheClientA pulls the FM radio inventory from cache
DataCacheFactory clientACacheFactory = new DataCacheFactory();
DataCache cacheClientA = clientACacheFactory.GetCache("catalog");
DataCacheItem radioInventoryA =
cacheClientA.GetCacheItem("RadioInventory","electronics");
//cacheClientB pulls the same FM radio inventory from cache
DataCacheFactory clientBCacheFactory = new DataCacheFactory();
DataCache cacheClientB = clientBCacheFactory.GetCache("catalog");
DataCacheItem radioInventoryB=
cacheClientA.GetCacheItem("RadioInventory", "electronics");[/code]
Time One(T1):
cacheClientA更新对象成功
cacheClientA将对象
RadioInventory更新,RadioInventory的版本号添加,这时cacheClientB中的RadioInventory对象已过期。
[code]//at time T1, cacheClientA updates the FM radio inventory
int newRadioInventoryA = 155;
cacheClientA.Put("RadioInventory", newRadioInventoryA,
radioInventoryA.Version,"electronics");
Time Two: The Second Update Fails
cacheClientB尝试修改RadioInventory为一个新值,为了阻止将cacheClientA的更新覆盖,cacheClientB的更新将会失败。
[code]//later, at time T2, cacheClientB tries to
//update the FM radio inventory, triggers exception ERRCA001
int newRadioInventoryB = 130;
cacheClientB.Put("RadioInventory", newRadioInventoryB,
radioInventoryB.Version,"electronics");
保守式并发
当客户端取出对象时明确指出该对象已被取出,正在更新,所有对缓存对象的请求都被驳回,直到销被释放。当缓存对象被锁定时,读取操作会返回一个句柄。
相关文章推荐
- 微软分布式缓存AppFabric(Velocity)学习-缓存概念(三)
- 微软分布式缓存 AppFabric(Velocity)学习-缓存概念(一)
- 微软分布式缓存 AppFabric(Velocity)-开发篇(三)缓存日志
- 微软分布式缓存 AppFabric(Velocity)-管理员指南
- 微软分布式缓存 AppFabric(Velocity)-开发篇(四)缓存通知
- 微软分布式缓存 AppFabric(Velocity)-开发篇(二)缓存的基础方法使用
- 微软分布式缓存AppFabric(Velocity)-开发篇(一)开发环境准备
- 使用微软分布式缓存服务Velocity(Windows Server AppFabric Caching Service)
- 微软分布式缓存 appfabric 安装部署
- 【转】ASP.NET 分布式缓存解决方案AppFabric 缓存
- 微软高性能缓存AppFabric(二)使用
- 微软企业库4.1学习笔记(十九)缓存模块7 扩展和修改缓存模块
- 微软企业库5.0 学习之路——第四步、使用缓存提高网站的性能(EntLib Caching)
- 微软企业库4.1学习笔记(十五)缓存模块3 使用数据库作为后端存储
- 微软企业库4.1学习笔记(十三)缓存模块
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式
- App.config :微软出于性能考虑,对ConfigurationManager采用了缓存策略
- Velocity:微软的分布式内存缓存
- Velocity 官方实例学习一 (app_example1)
- TimesTen 应用层数据库缓存学习:1. 基本概念