分享一则先前对Windows Server AppFabric分布式缓存的技术研究。
一. AppFabric 技术架构和原理
AppFabric与Memcached类似,采用C/S的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。
适用于使用 ASP.NET、Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 生成的应用程序。
Windows Server AppFabric 具有三项核心功能:分布式缓存、工作流程管理和服务管理。
- 针对 Web 应用程序,Windows Server AppFabric 提供了缓存功能,为应用程序数据提供高速缓存、扩充性及高可用性等特性,借此避免对数据源进行不必要的调用。
- 针对复合应用程序,Windows Server AppFabric 则让用户能更轻松地构建和管理 Windows Workflow Foundation 和 Windows Communication Foundation 所构建的服务。
- Windows Server AppFabric 能够有效地简化这些复合应用程序的开发、部署及管理工作。
当客户端第一次获取一些数据的时候,如ASP.NET应用程序用户提供一些信息资料,或者从数据库中读取的信息,它可以使用AppFabric Caching Services客户端类库将一个唯一的名称和这些信息一起存放在缓存群集中( cache cluster)。对于客户端来说,缓存集群中的所有缓存服务器就是单一的逻辑存储。客户端既不知道也不关心的哪台物理服务器的缓存哪些数据。
Windows Server AppFabric Caching 主要特点有:
- 任何可以被序列化的 CLR 对象都可以通过简单的 Cache API 将数据缓存
- 支持企业规模:可支持上百台主机的服务器架构
- 可弹性的调整配置,并通过网络缓存服务
- 支持动态调整规模,可随时新增节点
- 支持高可用性架构
- 自动负载平衡
- 可与 Event Tracing for Windows (ETW), System Center 等机制整合管理与监控
- 提供与 ASP.NET 的无缝整合,将 Session 数据储存至缓存,也可在 Web farm 架构下将应用程序数据缓存 ,减少数据库大量读取的负担
- 第一版遵循 cache-aside architecture ( 明确快取, Explicit Caching ),意即你必须在你的应用程序中明确指明你要新增(Put)或移除(Remove)快取的项目,所有快取数据并不会自动与任何源数据库进行同步。
二. AppFabric 逻辑架构
命名缓存也是一种缓存,可以为应用程序配置一个或者多个命名缓存,各个命名缓存可以配置成相互独立的,这样可以单独配置每个命名缓存以达到最优的性能。
三. 代码示例
1. 测试环境配置
双节点的AppFabric集群
Windows Server 2012测试环境
Windows Server AppFabric 1.1
主节点: 10.24.13.27 administrator/Test1234
从节点: 10.24.12.206 administrator/Test1234
AppFabric缓存服务配置共享文件路径:\WIN-5SF1MT124FACache
缓存服务配置文件:\WIN-5SF1MT124FAGSPCache ClusterConfig.xml
端口配置:
显示缓存配置:
2. 应用程序配置缓存
App.Config/Web.Config增加配置节:
3. 示例代码
4. DataCache类的主要方法
四、安装部署配置AppFabric
1. 安装前准备,启用Windows Update服务
在主节点上创建共享的文件夹:
保证在同工作组的机器中不需要输入用户名和密码便可访问共享的文件夹:
\WIN-5SF1MT124FACache
2. 安装AppFabric并配置成集群
3. 安装其他的AppFabric并加入集群
安装第二个AppFabric和第一个类似,不同的是配置AppFabric不同
4. 设置并启动AppFabric集群
以管理员身份运行Windows PowerShell
顺序执行下面这些Command :
增加一个分布式Cache管理模块
Import-Module DistributedCacheAdministration
设置cache cluster
Use-CacheCluster
授权你的某个帐户 domainusername :
Grant-CacheAllowedClientAccount WIN-5SF1MT124FA Administrator
验证授权是否成功:
Get-CacheAllowedClientAccounts
设置安全模式和保护级别:
Set-CacheClusterSecurity -ProtectionLevel None -SecurityMode None
最后启动:
Start-CacheCluster
五、常用命令
1.Start-CacheCluster
2.Stop-CacheCluster
3.Get-CacheHost 可以得到所有的Cache主机
4.Start-CacheHost GFTEST:22233 启动一个Cache主机
5.Stop-CacheHost GFTEST:22233 停止一个Cache主机
6.Get-CacheAllowedClientAccounts 得到授权的用户.
7.Grant-CacheAllowedClientAccount NetworkService 给用户授权
8.Export-CacheClusterConfig -File E:VelocityCacheClusterConfig.xml
9.Import-CacheClusterConfig -File E:VelocityCacheClusterConfig.xml
10.Get-CacheStatistics default 得到默认或当前cache的详细统计结果。
六、性能测试
1. 两个节点的虚拟机性能测试结果
2. 两个节点的物理服务器性能测试结果
3.并行读写缓存
周国庆
2017/6/21