SharedCahce是高性能分布式内存对象和复制的缓存系统.提供分布式缓存和复制拓扑技术,减少了对应用程序对的数据库依赖负载系数.下面是官方对SharedCache简短介绍:
Shared Cache is high performance distributed and replication cache system built for .Net applications running in server farms.
Shared Cache provides distributed and replicated cache topologies which minimize load factor on your databases. Your advantages from this point of view is quite simple, you can scale out your application linear only with hardware and non additional software cost. Shared Cache is written in C# and its 100% managed code.
SharedCache主要特点:(自己做了简短翻译 不足之处还望谅解)
A:速度快.轻量级组件
(1)速度快:在大量的性能测试中SharedCache能保持多版本的性能连贯如一.
(2)简单:Caching provider 是非常简单且易于使用的,并能在短短几分钟内快速运行起来.
(3)最小依赖:Nlog是唯一依赖
B:可伸缩性
(1)提供缓存存储:SharedCache初始化在提供缓存容量存储并把存储空间设置为最大.
(2)可伸缩调整:-并发负载在多CPU服务器
SharedCache主要三种表现形式:
A:分布式分区缓存:高度的伸缩性,无共享架构,自动分区的数据在所以集群成员实现共享,线性的可扩展,分区中的数据量分配均匀,服务器每个部分数据出入量保持不变(工作可以由每个服务器上执行的最高配置额),为服务器添加 直到到达数据交换条件时.
这种分布式特点具体体现在:
(1)缓存分区:缓存的大小和处理能力,可在成长中的簇的大小成正比
(2)负载平衡:管理数据的责任是自动负载均衡集群上
(3)点对点点:为分区缓存沟通是所有的点至点,使线性可伸缩性
具体分布式缓存结构图如下:
B:复制缓存(这个很常用在普通的项目中,主要对自定义对象和数据库数据的缓存管理上体现出来)
主要表现是最大性能体验.所有数据都将完全复制到所有群集成员。通过完全复制的数据使用情况,群集的所有成员将实现自己的零延时的访问和最大的性能要求.通过零延时访问。由于数据复制到每个成员,它可在每个成员没有网络延迟和无等待时间直接访问数据,这提供了最佳/缓存中存取数据的速度.
但是其中具有限制如下:
成本与更新:更新复制的缓存需要推动了新版本的数据到所有其他群集成员,这将限制可扩展性,如果有一个应用程序的需要时高频率的更新,那么每名成员数据被复制到每个群集成员,所以CLR的堆空间用在每个成员,这将影响大的缓存性能. 所以这点上对版本更新比较频繁的应用程序缓存性能有了点折扣,这点一定注意,但是对于没有特殊需求的应用程序而言, 这个复制缓存应用的最为广泛.
具体共享缓存结构图如下:
B:复制缓存(这个很常用在普通的项目中,主要对自定义对象和数据库数据的缓存管理上体现出来)
主要表现是最大性能体验.所有数据都将完全复制到所有群集成员。通过完全复制的数据使用情况,群集的所有成员将实现自己的零延时的访问和最大的性能要求.通过零延时访问。由于数据复制到每个成员,它可在每个成员没有网络延迟和无等待时间直接访问数据,这提供了最佳/缓存中存取数据的速度.
但是其中具有限制如下:
成本与更新:更新复制的缓存需要推动了新版本的数据到所有其他群集成员,这将限制可扩展性,如果有一个应用程序的需要时高频率的更新,那么每名成员数据被复制到每个群集成员,所以CLR的堆空间用在每个成员,这将影响大的缓存性能. 所以这点上对版本更新比较频繁的应用程序缓存性能有了点折扣,这点一定注意,但是对于没有特殊需求的应用程序而言, 这个复制缓存应用的最为广泛.
具体共享缓存结构图如下:
C:单例缓存(主要是针对应用程序有可及时扩展需求的一种实用缓存实例)
主要特点:建立一个可扩展的系统架构,没有限制系统的可扩展性,线性的分区在indeXus.Net共享缓存的数据,例如可扩展性,每个部分的缓存数据吞吐量(工作可以由每个服务器上执行的最高缓存配额)保持不变,当在服务器添加,直至交换结构一定程度才交换数据。 这提供了最佳/缓存中存取数据的速度,
当你需要扩展时,而任何系统可扩展的变动都无需重新配置重构.及其灵活.
具体的缓存结构图:
首先在项目中初步试用SharedCache.试用前需下载SharedCache源码结构 (选择最新版本)下载地址:http://www.codeplex.com/sourcecontrol/list/changesets?ProjectName=SharedCache
A:SharedCache源码结构具体分析:
首先看看用VS2008打开源码总体结构呈现 如下截图:
解决方案的默认启动项目是SharedCache.WinService.这个启动项时一个控制台应用程序,能够通过控制台查看SharedCache在服务器部署过程,以及缓存数据在服务器端查找过程(将在后面是事例中演示)
SharedCache由3个主要的项目组成MergeSystem.Indexus.WinServiceCommon、MergeSystem.Indexus.WinService和MergeSystem.Indexus.Notify。WinService可以以Windows服务方式加载,也可以以控制台方式运行,如果注册为Windows服务,则可以通过MergeSystem.Indexus.Notify程序来了解其状态 若是以控制台方式运行,则运行时的信息会在控制台窗口中显示。当然也可以配置通过NLog.dll记录日志。
大部分的功能都封装在WinServiceCommon项目中,WinService项目只负责监听和数据中转,这个项目中只有几个文件,如上图。
Indexus是个windows服务,也是程序的入口点,其类图如下图:
具体的SharedCache特点和项目目录结构详细说明如上,下小节会做一个简单实用SharedCache实例DEMO.演示SharedCache功能.
本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765239