zoukankan      html  css  js  c++  java
  • 微软分布式缓存 AppFabric(Velocity)学习-缓存概念(一)

    学习中,顺便翻译,有不正确的地方欢迎指正,转载请注明出处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的缓存管理工具,群集配置存储位置和缓存客户端。

    image

    缓存主机(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)缓存对象。

    image

    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

    1.4 配置概念(Configuration Model )

    Velocity支持许多缓存配置。配置可分为3个级别:用程序级,缓存主机级,缓存群集级。 Velocity还提供了用于指定和存储的缓存集群和客户端应用程序使用的配置。

    应用程序级配置(Application Configuration)

    每个Velocity的缓存客户端都必需有缓存客户端配置。可以在代码中指定配置也可以在应用程序的.config文件中配置。如果两种方式同时指定,代码中的配置将覆盖配置文件的配置。

    应用程序设置包涵了可以与cache hosts通信的唯一配置,同时需要指定本地缓存配置。

    缓存主机配置(Cache Host Configuration)

    每个缓存主机通过DistributedCache.exe.config文件配置,DistributedCache.exe.config在安装Velocity时自动创建,该配置是缓存服务运行必需要的,通常情况下你不需要修改该配置。

    群集配置(Cluster Configuration)

    所有在群集服务中的缓存主机都必需指定与群集通信权限的配置。群集配置指定了cache hosts和named caches的配置。群集服务配置在第一个群集中缓存主机安装时被指定的,之后的缓存主机安装时将自动从此主机同步。

    群集配置有两个可用选项。

    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

    Technorati 标签: 分类式缓存-Velocity

  • 相关阅读:
    腾讯、阿里、网易、杰士邦等30家中秋月饼设计盘点!(完整版)
    腾讯、阿里、网易、杰士邦等30家中秋月饼设计盘点!(完整版)
    最挑战程序员的9大任务,你都干过哪些?
    这些代码优化的方法,你都用过吗?
    这些代码优化的方法,你都用过吗?
    6-13/6-14/6-15
    机器学习实验二-集成学习
    Windows下python3登陆和操作linux服务器
    什么是CDN?
    VI.应用-Trajectory Data Mining
  • 原文地址:https://www.cnblogs.com/xuf22/p/2136493.html
Copyright © 2011-2022 走看看