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

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

  1. SQLite剖析之异步IO模式、共享缓存模式和解锁通知

    1.异步I/O模式     通常,当SQLite写一个数据库文件时,会等待,直到写操作完成,然后控制返回到调用程序.相比于CPU操作,写文件系统是非常耗时的,这是一个性能瓶颈.异步I/O后端是SQLi ...

  2. 【Excle数据透视表】如何创建非共享缓存的数据透视表

    一般情况下,利用同一个数据源创建多个数据表时,默认创建的是共享缓存的数据透视表.刷新一个数据透视表时会影响其他数据透视表的展示结果. 解决方案 创建非共享缓存的多个数据透视表 步骤一 单击工作表数据任 ...

  3. php 共享缓存之yac 快来替换掉APCU memcache

    yac缓存 Yac是用于PHP的共享和无锁内存用户数据缓存.它可以用来替换APC或本地memcached. 要求 PHP 7 + Install $/path/to/phpize $./configu ...

  4. 借助共享缓存redis实现分布式锁

    新开发的系统须要控制每一个时刻回收缓存的GC线程有且仅仅有一个在执行,假设有多个线程同一时候执行,会造成系统崩溃.假设仅仅有一个JVM进程那么非常好办.简单的借助synchronizedkeyword ...

  5. Kettle实现共享数据库连接及插入更新组件实例

    常用组件 1.共享数据库连接 新建的数据库连接都只属于某一个转换程序 如果你想让所有的转换程序都能使用这个连接,需要开启共享 2.表输入组件 需求∶将表中的数据,同步到另一张这张表中. 分析 这是一个 ...

  6. EhCache缓存学习

    在看hibernate的官方文档时,看到关于缓存的介绍. hibernate在缓存管理上做的很好,具体使用,本章不做讲解,本篇主要研究EhCache的用法.其中hibernate使用到的缓存提供商列表 ...

  7. QLogic改进ASP合作计划满足共享闪存缓存市场需求

    QLogic(Nasdaq:QLGC)日前宣布,针对该公司的高端合作伙伴计划(ASP),将出台数项增强型举措,从而为QLogic的合作伙伴提供必要的工具和经验,以成功解决其为虚拟化和集群企业环境下的应 ...

  8. Redis整合Spring结合使用缓存实例(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的 ...

  9. 使.NET WebBrowser不与IE或其他实例共享cookie

    由于C#中的WebBrowser与包括IE在内的所有其他WebBrowsers实例共享cookie,我希望WebBrowser拥有自己的cookie容器,该容器不共享之前在IE或其他实例中创建的任何c ...

  10. Redis整合Spring结合使用缓存实例

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:本文介绍了如何在Spring中配置redis,并通过Spring中AOP的思想,将缓存的方法切入到有需要进入缓存的类或方 ...

最新文章

  1. java中的compareTo函数
  2. uva111346Probability
  3. React学习笔记:入门案例
  4. Oracle Statspack分析报告详解(一)
  5. 渗透小助手——几个密码收集工具
  6. 【2019 NLP汇总】论文、博客、教程、工程进展全梳理(长文预警)
  7. Linux下通过WebShell反弹Shell的技巧
  8. 常用类 String,Stringbuffer,Stringbuilder 包装类 日期类
  9. php 结巴分词,将开源PHP组件注册为服务提供者,以结巴分词为例
  10. ps vita 说明书
  11. 易语言x64驱动鼠标键盘操作技术-支持全系统(win7-win11)
  12. Android 批量修改文件名称
  13. C++函数参数的缺省值
  14. Linux系统(centos/ubuntu)修改IP地址方法总结
  15. 北京的购车摇号新政的概率分析
  16. php设计模式 参考地址
  17. 看我如何用Python来分析《斗破苍穹》
  18. ICP许可证怎么申请?
  19. 三国皇帝的寡妇秘史(1)
  20. SEOER必备的经典外链知识

热门文章

  1. jupyter notebook添加虚拟环境
  2. 12满秩分解与奇异值分解(1)
  3. java编程给三个数字排序_JAVA程序.输入3个数字,有IF语句,从小到大排序
  4. linux关闭端口命令_linux 网络检测常用命令(tcp/udp 端口检测)
  5. python获取eth0_python实时获取tcpdump输出
  6. 并发编程游玩---ExecutorService的isShutdown()和isTerminated(),以及一些方法的区别
  7. 深度学习笔记(二):简单神经网络,后向传播算法及实现
  8. 【POJ 3977】【折半枚举】【超大背包】Subset【暑期 No.7】
  9. vscode 转到实现方法失效_动图炫技23个鲜为人知的VS Code快捷键
  10. (博主可帮找错)Servlet.service() for servlet [dispatcherServlet] path [] threw exception feign.Feig,可截图私聊博主