学习中,顺便翻译,有不正确的地方欢迎指正,转载请注明出处http://cnblogs.com/xuf22
一、Velocity是什么
官方地址:http://www.microsoft.com/download/en/details.aspx?id=2517
“Velocity”是适用与所有数据源的一个高速、“scalable in-memory ”的缓存,通过使用该缓存,可以减少不必要的数据源访问请求,极大的提高应用程序的性能。通过使用分布试的缓存应用,可以满足吞吐量不断增长的应用程序请求。“Velocity”分布在高速缓存群集中,不需要大量人为干涉,从而减少了负载均衡的复杂度。后期发布更名为【AppFabric】
二、缓存概念
1.基本概念
1.1 物理概念
“Velocity”是一个由多个可以相互通信,统一的应用程序缓存服务的群集。物理模型的主要组件包括缓存服务器,缓存主机Windows服务,缓存群集,基于PowerShell的缓存管理工具,群集配置存储位置和缓存客户端。
缓存主机(cache host):
“Velocity”以服务形式运行在一个或多Windows服务上,这些服务即为缓存主服务,运行主缓存服务的主机称作缓存服务器。你仍然可以在安装过“Velocity”的主机上运行其它程序,如:Web服务。但一个主机只能安装一个“Velocity”实例。
缓存服务主机与数据源主机最好是在同一个域下,缓存主机服运行在Network Service账户下,缓存主服务上的各种操作用域下的高速缓存认证凭据。“Velocity”使用权限较低的网络服务帐户,可以有效的减少被恶意攻击造成的损害。
缓存群集(cache cluster ):
缓存群集是指一个或多个缓存主服务的组成的一个环形的、共同存储分发数据的解决方案。将数据存储在内存中,以减少请求数据的响应时间。群集的操作和控制由"cluster management role”管理,它包括以下三点:
1.让缓存群集一直处于运行状态
2.监测缓存群集中的所有缓存主机
3.帮助缓存主机加入缓存群集
群集配置存储区(Cluster Configuration Storage Location)
集群每次启动时,必须从群集配置中的存储位置检索配置信息。下表显示了两种可能的方式
基于PowerShell的管理工具(PowerShell-Based Cache Administration Tool)
缓存客户端(Cache Client)
“Velocity”分布式缓存集群是设计用于应用服务器在企业数据中心,并部署在企业防火墙的内。任何使用服务器上运行的高速缓存的应用程序统称为缓存客户端。
1.2 逻辑模型
逻辑概念上将Velocity分为:(named caches)缓存命名(这个真不知道怎么翻译),(regions)缓存域和(cached objects)缓存对象。
named caches:
是一个通过配置在内存中形成的分布式缓存存储单元。你可以在一个应用程度中配置一个或多个name caches,每个name caches不会受其它配置的影响,这样你可根据程序的需要,配置多个name cache,并且每个name caches使用不同的缓存策略。
如上图所示:name caches跨越分布在每个缓存主机上,如果你不为缓存指定名称,你的数据将被存储在默认的“default”缓存命名下。
所有缓存都有群集配置来定义。使用PowerShell的缓存管理工具来创建或重新配置缓存。某些设置只能第一次创建缓存时配置。例如,您使用New-Cache
命令启用高可用性或通知功能。其他设置可以以后改变,但可能需要重新启动整个缓存集群。
regions:
regions是一个逻辑上的缓存存储域(感觉可以理解为一个命名空间吧)。regions是一个可选项,不是通过配置创建的,你必需在代码中用CreateRegion函数创建。可以通过regions查找该region下的所有cache objects。为了提供这种附加的搜索功能,在一个区域内的对象仅限于一个单一的缓存主机。因此,使用该数据的应用程序无法实现分布式缓存的可扩展性优势。相反,如果你不指定一个区域,缓存的对象,否则可以负载平衡集群中的所有缓存主机。
caches objects:
从缓存中取出的数据都是System.Object类型,需要通过类型转换得到它的原始类型。当一个对象存在与Caches时,Caches将关联该对象的版本,键,标签等。
1.3 编程概念(Programming )
当数据不存在于你的客户端缓存中时,需要重新从Caches Host中加载。客户端使用DataCache类来添加客户端cache。
缓存策略(Caching Strategy)
应用程序就设计成在没有缓存存在时仍然可以正常运行,因为缓存并不是绝对持久有效的,它总有失效或不存在的可能性。Velocity的高可用性可以有效的防止群集中的个别主机故障带来的问题,但是如果群集中有太多的主机挂了,那Velocity还是会挂(相当与disk raid吧,坏了个别还可以跑)。
还有许多其他的原因会导致程序找不到缓存:缓存可能已经过期或者被移除,可能已重新启动缓存服务器,缓存主机服务可能已重新启动,或缓存群集可能已被意外重新启动。所以务必确保在没有缓存的情况下,应用程序仍然可以访问到正数据并正常运行。
缓存客户端(Cache Clients)
为了存储在缓存中的数据,可以使用GetCache方法用于返回一个DataCache对象, DataCache对象实例化后的实例被称为缓存客户端。有许多选项可用来配置缓存客户端的行为,编程方式或使用应用程序配置文件,或同时使用这两种方法。
以下代码演示DataCache读写缓存
DataCache Demo
Velocity支持许多缓存配置。配置可分为3个级别:用程序级,缓存主机级,缓存群集级。 Velocity还提供了用于指定和存储的缓存集群和客户端应用程序使用的配置。
应用程序级配置(Application Configuration)
Storage type | Storage location | Cluster management |
SQL Server Compact data file |
shared network folder |
lead hosts |
SQL Server database |
SQL Server |
SQL Server (default) or lead hosts |