SharedCache-共享缓存概况和初步运用实例(1)

简介:

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


相关文章
|
1月前
|
缓存 JavaScript 搜索推荐
vue中的一个内置组件Keep-Alive的作用及使用方法介绍——缓存不活动的组件实例
vue中的一个内置组件Keep-Alive的作用及使用方法介绍——缓存不活动的组件实例
98 1
|
3月前
|
缓存 Java
Java本地高性能缓存实践问题之创建一个AsyncCache实例的问题如何解决
Java本地高性能缓存实践问题之创建一个AsyncCache实例的问题如何解决
|
3月前
|
存储 缓存 监控
Java本地高性能缓存实践问题之在EncacheTest示例中正确移除一个缓存实例的问题如何解决
Java本地高性能缓存实践问题之在EncacheTest示例中正确移除一个缓存实例的问题如何解决
|
6月前
|
存储 缓存 NoSQL
NoSQL缓存数据库的使用场景实例和命令速查表
【5月更文挑战第8天】Redis 是一个内存数据结构服务,用 C 编写,支持五种数据结构,不仅限于键值对。它用于缓存、消息队列、订阅/发布系统等,提供持久化、主从复制和集群支持。了解其核心数据结构和应用场景是有效利用 Redis 的关键。
119 3
NoSQL缓存数据库的使用场景实例和命令速查表
|
5月前
|
缓存 分布式计算 关系型数据库
数据管理DMS操作报错合集之当进行RDS实例的可用区迁移时,提示“缓存清理”是什么意思
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
102 3
|
4月前
|
缓存 JavaScript API
vue3 生命周期(生命周期钩子 vs 生命周期选项 vs 缓存实例的生命周期)
vue3 生命周期(生命周期钩子 vs 生命周期选项 vs 缓存实例的生命周期)
102 0
|
6月前
|
缓存 JavaScript
keep-alive 是 Vue 内置的一个组件,被用来缓存组件实例。
keep-alive 是 Vue 内置的一个组件,被用来缓存组件实例。
|
6月前
|
缓存 NoSQL Java
SpringBoot - 缓存入门详解与注解使用实例
SpringBoot - 缓存入门详解与注解使用实例
191 1
|
缓存 应用服务中间件 数据库
【系统架构】大型网站系统架构演化实例——使用缓存改善网站性能
【系统架构】大型网站系统架构演化实例——使用缓存改善网站性能
90 0
|
消息中间件 存储 缓存
ZMQ之共享键值缓存(克隆模式)
ZMQ之共享键值缓存(克隆模式)
ZMQ之共享键值缓存(克隆模式)