Windows Server AppFabric分布式缓存详解

AppFabric Caching 原理与企业级实践:分布式内存协同系统深度解析 分布式缓存是提升.NET企业应用性能与一致性的关键技术,其核心在于内存数据的分区管理、状态协同与变更通知机制。AppFabric Caching并非简单键值存储,而是基于一致性哈希路由、命名缓存策略、Region事件分组和乐观并发版本控制的全栈式内存基础设施。它通过客户端智能路由、本地缓存分层、HA副本同步等设计,在保障低延迟的同时实现跨服务数据协同,特别适用于Session共享、引用数据分发和库存类资源数据强一致性场景。本文结合Windows Server 2008 R2 + .NET Framework 阅读详情

本文转载自https://msdn.microsoft.com/zh-cn/library/ff384253.aspx,主要内容是对msdn中对AppFabric分布式缓存的详细介绍的整合以及一些自己的理解。

AppFabric是什么

  AppFabric是微软提供的可以集成到 Web 应用程序和桌面应用程序的分布式缓存。其原名为Velocity,后更名为AppFabric。 AppFabric 能够提高性能、可伸缩性和可用性,而从开发人员的角度来看,其行为方式与普通的内存缓存一样。任何可序列化的对象都可以缓存,例如 DataSet、DataTable、二进制数据、XML、自定义实体以及数据传输对象。

体系结构和相关概念

物理架构

  AppFabric由多个可以相互通信,统一的应用程序缓存服务的群集。物理模型的主要组件包括缓存服务器,缓存主机Windows服务,缓存群集,基于PowerShell的缓存管理工具,群集配置存储位置和缓存客户端。
AppFabric缓存物理体系结构示意图
  物理模型主要包含以下几个概念:

缓存主机(cache host)

  AppFabric 缓存服务是运行在一个或多个服务器上的 Windows 服务。运行缓存服务的每个服务器均称为一个缓存服务器。对于每个缓存服务器,只可安装缓存服务的一个实例。缓存服务主机与数据源主机最好是在同一个域下,缓存主机服运行在Network Service账户下,缓存主服务上的各种操作用域下的高速缓存认证凭据。

缓存集群(cache cluster)

  缓存群集是以环状方式共同存储和分发数据的缓存服务的一个或多个实例的集合。数据存储在内存中,以最大程度地减少数据请求的响应次数。缓存群集的操作由角色进行管理,被命名为群集管理角色。它的职责主要包含以下三点:

  • 让缓存群集一直处于运行状态;
  • 监测缓存群集中的所有缓存主机;
  • 帮助缓存主机加入缓存群集。

群集配置存储区(Cluster Configuration Storage Location)

  集群每次启动时,必须从群集配置中的存储位置检索配置信息。下表显示了三种可能的方式,以及这些方法与群集管理选项的关系:

存储类型存储位置群集管理
XML文件共享网络文件夹主要主机
SQL Server数据库SQL ServerSQL Server(默认)或主要主机
自定义提供程序自定义存储自定义存储

基于PowerShell的管理工具(PowerShell-Based Cache Administration Tool)

  Windows PowerShell 是缓存服务的专用管理工具。Windows PowerShell 缓存管理 cmdlet 可以安装在任何域计算机上或缓存服务器上。通过安装 AppFabric 的缓存管理功能可以完成此操作。您必须具有对所有缓存服务器的管理员权限,才能使工具正常运行。

缓存客户端(Cache Client)

  AppFabric分布式缓存集群是设计用于应用服务器在企业数据中心,并部署在企业防火墙的内。任何使用服务器上运行的高速缓存的应用程序统称为缓存客户端。

逻辑架构

  逻辑概念上将AppFabric分为:命名缓存(named caches),缓存域(regions)和缓存对象(cached objects)。
AppFabric缓存逻辑体系结构示意图

命名缓存(named caches)

  命名缓存是一个通过配置在内存中形成的分布式缓存存储单元。你可以在一个应用程度中配置一个或多个name caches,每个name caches不会受其它配置的影响,这样你可根据程序的需要,配置多个name cache,并且每个name caches使用不同的缓存策略。
  如上图所示:name caches跨越分布在每个缓存主机上,如果你不为缓存指定名称,你的数据将被存储在默认的“default”缓存命名下。
  所有缓存都有群集配置来定义。使用PowerShell的缓存管理工具来创建或重新配置缓存。某些设置只能第一次创建缓存时配置。例如,您使用New-Cache命令启用高可用性或通知功能。其他设置可以以后改变,但可能需要重新启动整个缓存集群。

区域(regions)

  区域是一个逻辑上的缓存存储域(感觉可以理解为一个命名空间吧)。regions是一个可选项,不是通过配置创建的,你必需在代码中用CreateRegion函数创建。可以通过regions查找该region下的所有cache objects。为了提供这种附加的搜索功能,在一个区域内的对象仅限于一个单一的缓存主机。因此,使用该数据的应用程序无法实现分布式缓存的可扩展性优势。相反,如果你不指定一个区域,缓存的对象,否则可以负载平衡​​集群中的所有缓存主机。

缓存对象(caches objects)

  从缓存群集检索的对象采用其 System.Object 基类的形式,因此需要进行类型转换以将它们还原为其原始类型。当某个对象处于缓存中时,缓存群集会将附加信息与该对象关联。这些信息包括密钥、标记、版本号以及存储对象的缓存和区域。

编程架构

  当数据不存在于你的客户端缓存中时,需要重新从Caches Host中加载。客户端使用DataCache类来添加客户端cache。

缓存策略(Caching Strategy)

  应用程序就设计成在没有缓存存在时仍然可以正常运行,因为缓存并不是绝对持久有效的,它总有失效或不存在的可能性。AppFabric的高可用性可以有效的防止群集中的个别主机故障带来的问题,但是如果群集中有太多的主机挂了,那AppFabric还是会挂(相当与disk raid吧,坏了个别还可以跑)。
  还有许多其他的原因会导致程序找不到缓存:缓存可能已经过期或者被移除,可能已重新启动缓存服务器,缓存主机服务可能已重新启动,或缓存群集可能已被意外重新启动。所以务必确保在没有缓存的情况下,应用程序仍然可以访问到正数据并正常运行。

缓存客户端(Cache Clients)

  为了存储在缓存中的数据,可以使用GetCache方法用于返回一个DataCache对象, DataCache对象实例化后的实例被称为缓存客户端。有许多选项可用来配置缓存客户端的行为,编程方式或使用应用程序配置文件,或同时使用这两种方法。

应用程序级配置(Application Configuration)

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

缓存客户端与本地缓存

  使用AppFabric缓存,应用程序中需要用到DataCache对象存储缓存对象。这个对象就是缓存客户端,它为应用程序提供了一个缓存群集服务的name cache的引用。该对象由DataCacheFacory对象的GetCache方法创建。
  出于性能考虑,建议在应用程序中尽量少创建DataCacheFactory对象,在应用程序中创建一个全局变量,以便缓存客户端可以在任何地方都给使用--用单件模式吧
  缓存客户端分为两种:路由客户端和普通客户端。两种缓存客户端都可以将缓存存储在本地,这种被存储在本地的缓存称为:本地缓存。缓存客户端的存储选项可以通过应用程序配置文件指定。

客户端类型

下图中有两个使用了缓存的应用程序:路由(routing)和普通(simple):
这里写图片描述

路由客户端(Routing Client)

  路由客户端的性能要高于普通客户端,因为它在缓存的引导主机(Lead hots)上保存了一张路由表。该路由表用记录缓存群集中的所有缓存主机上的对象的地址并做唯一标示。路由客户端使用路由表可以直接找到对象的物理地址。

普通客户端(Simple Client)

  只要有可能,尽量使用Routing Client,但在情况下,如网络拓扑中,可能有些客户端只能访问缓存服务群集的中的部分主机,这时就要用到Simple Cleint来做为分布式缓存的数据源。为了在有限的网络通信情况下工作,Simple Client被设计为只访问缓存群集中的一台主机。它没有路由选择功能,不能跟踪对象的地,要获取缓存中的一个对象通常需要遍历所有主机。

本地缓存

  缓存主机存储的是序列化后的对象,客户端要使用该对象,必需先反序列化,为了提高取出对象的效率,可以启用本地缓存。路由客户端和普通客户端都可以使用本地缓存。
  当启用本地缓存后,对象将以复本的文本保本地计算机的内在中,客户端应用程序在从缓存主机取出对象时,先检查本地缓存是否已存在该对象。如果本地缓存已存在该对象,将直接从本地取出。
  本地缓存有两种过期策略:超时过期和通知过期。

线程并发(Object Consistency)

  本地缓存对象和缓存客户端对象在同一个进程空间中,只为DataCache是引用方式获取这些对象,在多线程应用程序中可能会存在线程同步问题。为了避免潜在的多线程中的问题,多线程应用程序在使用缓存对象时应先生成一个对象的复本,或对取其它方式来避免线程并发问题。另一种方法是为每一个线程创建一个DataCache对象。

并发模型

  AppFabric允许任何有网络权限和相关配置的缓存客户端公开的访问缓存数据,这样就面临着安全和并发的挑战。
  为了减少安全问题,所有的缓存客户端、缓存服务和主数据源服务器都应该在同一个域下,并在防火墙内,这是极度推荐的方法。
  为了解决并发问题,AppFabric提供了乐观并发模型和悲观并发模型。

乐观并发模型

  在乐观并发模型中,缓存对象的更新不进行锁定。但当缓存客户端从缓存获得对象时,它还获得并存储该对象的当前版本。当需要进行更新时,缓存客户端会将对象新值与已存储的版本对象一起发送。仅当发送的版本与缓存中对象的当前版本匹配时,系统才会更新对象。对象的每次更新都会更改其版本号,这可以防止更新覆盖其他人的更改。
  下面这个示例中,两个单独应用程序服务器上的两个缓存客户端(cacheClientA 和 cacheClientB)尝试更新同一个名为 RadioInventory 的缓存对象。

时间零点:两个客户端都检索同一个对象

  两个缓存客户端实各例化一个DataCacheItem类,并取出缓存同一个对象,两个DataCacheItem实例要准备要更新对象。
时间零点

时间 1:首次更新成功

  cacheClientA将对象RadioInventory更新,RadioInventory的版本号添加,这时cacheClientB中的RadioInventory对象已过期。
时间 1

时间 2:第二次更新失败

  cacheClientB尝试修改RadioInventory为一个新值,为了阻止将cacheClientA的更新覆盖,cacheClientB的更新将会失败。
时间 2

悲观并发模型

  在悲观并发模型中,客户端显式锁定要执行操作的对象。其他请求锁定的操作(系统不阻止请求)被拒绝,直到释放锁定。当锁定对象时,锁定句柄返回为输出参数。解除对象锁定需要使用锁定句柄。 如果客户端应用程序在释放锁定对象前结束,则提供超时以释放锁定。锁定的对象永不过期,但如果超过过期时间,则锁定的对象可能在被解除锁定后立即过期。

过期和回收(Expiration and Eviction)

  AppFabric中,对象并不是一直驻留在内存中。除了显示使用Remove方法将其移除,还有可能过期机制或回收机制从缓存群集中去除。

过期机制(Expiration)

  缓存过期机制允许缓存群集自动从缓存中删除缓存对象。使用Put或Add方法时,有一个超时时间的可选参数,用来决定缓存在内存中的生存时间。如果缓存对象没有设置超时时间,命名缓存(Named Cache)中的配置将决定对象的生成时间。
  如果对象在并发时被锁,对象不会因到期时间而从内存中移除。但当并发锁解锁时,对象将立即从内存只移除。

本地缓存失效机制(local Cache Invalidation)

  一旦对象被下载到本地缓存,您的应用程序将一直使用这些对象,直到他们是失效,无论是否由另一个客户端上缓存群集更新这些对象。出于这个原因,最好是不经常变化的数据缓存到本地。有两种类型的本地缓存失效机制:基于超时的失效和基于通知的失效。

基于超时的失效机制(Timeout-based Invalidation)

  将对象下载到本地缓存之后,这些对象将驻留在本地缓存中,直到其达到缓存客户端配置设置中指定的对象超时值。达到此超时值之后,对象将失效,以便下次请求时可以从缓存群集刷新。

基于通知的失效机制(Notification-based Invalidation)

  如果缓存客户端启用了本地缓存,则还可以使用缓存通知使本地缓存的对象自动失效。根据需要缩短这些对象的生存期,这样可以降低应用程序使用过时数据的可能性。

回收机制(Eviction)

  为了保持缓存主机的内存上面可以有足够的内存用于缓存数据,AppFabric使用LRU(最近最久未使用)算法,用一个界限值确保内存均匀分配在所有缓存主机中。
  当内存的使用率超过了界限值时,AppFabric将启动回收机制回收已过期对象。如果回心过期对象后,内存的使用率还在界限值之上,将使用LRU机制纠继续回收对象,不管对象是否已过期,直到将同存的使用率降到界限值以下。

指定过期和逐出设置

  过期和回收机制通过群集配置文件来设置。可以使用基于PowerShell的管理员工具来管理,另外以下方法允许你重写缓存的默认设置。

  • CreateRegion方法允许你启用和禁用域中对象的回收机制
  • Add和Put方法允许重写,可以指定过缓存中对象的过期时间
  • PutAndUnlock和Unlock方法允许重载,可以扩展对象解锁后的到期时间
  • ResetObjectTimeout 方法允许显示指定对象的生存时间,此方法重写缓存配置的设置

高可用性(High Availability)

  AppFabric的高可用性功能支持单独的缓存主机上存储数据的副本,使缓存数据持续可用。如果启用了群集的高可用性功能,应用仍然程序可以在群集中的部分缓存主机挂了的情况下取出数据。
  没有高可用性启用,AppFabric仍提供一些保护缓存数据的措施,对象不存储在是在域中,而是分布在集群的所有主机。由于分布式的特性,群集中的主机越多,因某一台机器故障而带来的数据访问问题会越少。
  仅管高可用性可以减少缓存主机和应用程序间的故障,但也有可能整个群集挂掉,所以应用程序设计时应该考虑到在没有缓存服务情况下的状态,毕竟缓存总有不存在的时候。

高可用性如何运行

  当启用高可用性功能时,每个独立的主机都保存了对象或域的复本。缓存群集管理维护这些复本,当主缓存数据失败时,会复本中的数据提供给应用程序。启用高可用性不会对编程方面产生任务影响。
高可用性

如何保持一致性

  无论是否启用高可用性,支持缓存的应用程序都按照仅存在缓存对象主要副本的情况运行。所有的 Add、Put 和 Remove 方法调用都首先在主要对象上启动,无论他们位于哪个缓存主机上。对维护主要对象或区域的缓存主机启动调用之后,结果操作将因是否启用高可用性而异。
  如果启用高可用性,会增加一个步骤通知维护辅助副本的主机即将发生更改。然后,包含对象主要副本的缓存主机在等待来自另一主机的确认以后,向客户端回复操作完成确认。
  例如下列的示例,缓存主机 A 收到请求以后,会立即开始处理请求并向缓存主机 B 通知此更改。然后,缓存主机 B 向缓存主机 A 发送回复确认。当缓存主机 A 收到确认以后,会完成更改并向支持缓存的应用程序发送回复确认。此过程可确保对象或区域的辅助副本始终与主要副本处于同一状态。此过程称为非常一致:
保持一致性

性能注意事项

  维护缓存复本时必需识别所有主缓存的变化,这里有一些性能会消耗在复本的同步中。需要考虑当主缓存丢失后,重新加加载缓存复本的代价。

缓存主机失败时发生的情况

  如果其中一个缓存主机出故障不会对应用程序产生任何影响,缓存群集将重新路由到缓存复本,同时将该缓存的复本的访问优先级提升到主复本。然后再生成该缓存的次要复本,并平均分布于其它可用主机。
  要启用高可用性,群集中最少要有三台缓存主机,并且有两台主机处于正常运行状态。

时间缓存主机 1缓存主机 2缓存主机 3HACache(启用高可用性的命名缓存)
T1正在运行正在运行正在运行可用
T2正在运行正在运行已停止可用
T3正在运行已停止已停止不可用

  在 T1 中,当有三个缓存主机可用时,缓存对象或区域的两个副本可以存储在这三个可用服务器中的任意一个上。在 T2 中,当一个缓存服务器失败时,HACache 继续可用,因为仍然有两个缓存主机可用于存储缓存对象或区域的两个副本。在 T3 中,当第二个缓存主机失败时,HACache 不可用。这是因为不再有另一个缓存主机可用于存储缓存对象或区域的第二个副本。

高可用性的一推荐做法

  • 让群集中有大量的缓存主机
  • 将缓存系统中的所有缓存服务、缓存主机、缓存客户端、数据源服务都部署在企业防火墙的同一个域下。
  • 使用SqlServer做为你的分布式缓存系统
  • 尽量少修改配置,因为这会重启整个群集,如果有可能,可以用重新创建name caches方法来代替修改配置
  • 必需在重启服务前使用Stop-CacheHost命令来停止缓存主机。用Stop-CacheHost命令来关闭群集中管理角色的主机不会成功,因为当管理角色的主机关闭后会导致整个群集关闭

缓存通知(Cache Notifications )

  AppFabric提供了缓存通知,当缓存群集中有对缓存的操作时,允许应用程序接收异步通知。缓存通知也提供了让本地缓存失效的功能。
  为了接收异步缓存通知,在应用程序中要添加一个缓存通知的回调函数。当您添加回调,您可以定义缓存操作触发一个缓存的通知,当缓存发变化时会调用该函数通知应用程序。

触发缓存通知

  如下图所示,改变这两个地区和缓存的对象(称为缓存内的项目)可以触发缓存通知。(缓存通知的类型由DataCacheOption类的成员定义)
触发缓存通知

通知范围(Notification Scope)

  根据应用程序的业务要求,你不一定要对缓存中所有对象和域的事件做监听。AppFabric可以从地区的级别和域级别的高速缓存级别缩小您的通知的范围。
这里写图片描述
  在缓存级别,应用程序将监听到缓存所有对象和域的变化;在域级别应用程序将监听到某个域中的有对象的变化;在Item level,应用程序将仅监听到某个对象发生的变化。
  可以用以下三个方法指定不能的监听级别:

  • AddCacheLevelCallback:当您希望收到有关所有区域和项目上发生的基于区域和项目的缓存操作的通知时。
  • AddRegionLevelCallback:当您希望收到有关某个特定区域上发生的基于区域和项目的缓存操作的通知时。
  • AddItemLevelCallback: 当您希望收到某个特定项目上发生的基于项目的缓存操作的通知时。

通知顺序(Notification Order)

  缓存客户端接收通知的顺序应保证在一个区域上下文中。 例如,假设您已经创建了一个名为 RegionA 的区域。 由于放入缓存区域的所有数据都限制到同一区域,因此有关 区域A(区域级别通知范围)的所有缓存操作均会按照与彼此相关的适当顺序到达缓存客户端。 不保证其他缓存主机上基于区域和项目的缓存操作按照与 区域A 中发生的操作相关的适当顺序到达。。

查询间隔(Polling Interval)

  使用缓存通知时,应用程序会按指定的时间间隔检查是否有新的通知可用,默认轮循时间是300秒。

通知丢失时

  由于服务器的负载问题,缓存主机只能处理一定量的缓存操作,所有一此缓存客户端可能在没有接收到通知时,缓存主机就将通知队列终止。缓存客户端也有可能因为某个缓存服务服务故障而丢失通知,虽然缓存群集仍然正常运行。这种情况下应用程序会接收到消息通知失败的通知,可以通过添加 AddFailureNotificationCallback函数处理此消息。

缓存群集丢失时

  丢失通知与丢失缓存群集之间有很大的区别,如果应用程序丢失通知,会接收到通知失败的通知,而缓存群集挂了之后应用程序将接收不到任务通知,再尝试连接群集时时应用程序会抛出异常。

启用缓存通知

  缓存通知和通知的级别都可以在群集的配置文件中设置。可以把它当做缓存的一个属性来创建缓存。默认情况下缓存通知是不启用的。

群集主机和群集管理(Lead Hosts and Cluster Management )

  AppFabric是一组动态服务同时运行的组合,为应用程序提供一个唯一的逻辑缓存。要做到这些,需要一些开销花在各主机的协同工作上。在AppFabric中,群集管理角色是用到管理缓存主机,最终组成一个缓存群集。
  根据分布式缓存的不同配置,有两个选项可用于群集管理角色。如果使用SQL Server数据来存储群集配置,SQL Server实例同时也是群集的管理角色。
  如果使用网络共享目录来存储群集配置,群集管理的角色将是被指定的一台缓存主机,这台主机被称为lead hosts,它除了有群集中的其它缓存主机的职责外还肩负着群集管理角色的重任。

群集管理角色的职责(Cluster Management Role Duties)

  • 确保缓存群集一直正常运行
  • 管理群集中的所有可用缓存主机
  • 帮助缓存主机加入缓存群集

  有两个主要配置用于决定如何配置缓存群集:

  • leadHostManagement:群集级别的配置,用于管理群集角色。为true时,lead hosts将履行群体管理职责。当选择网络共享目录为存储位置时,此配置仅能为true。当选择Sqlserver为存储位置时,可以通过将该值设置为true来指定某个主机为lead hosts。
  • quorumHost:缓存主机级别的配置。当从SqlServer为存储位置时,用更改主机位置。

  对于这两个属性,有四种可能的情况用于确定缓存主机如何运行。下表对这些情况进行了介绍:

leadHostManagement 群集级别设置leadHost 缓存主机设置设置组合说明有效的缓存主机责任
falsefalseSQL Server 或自定义提供程序执行群集管理角色。这不是主要主机。仅正常的缓存主机操作。
falsetrueSQL Server 执行群集管理角色。如果您将 leadHostManagement 设置更改为 true,则它是主要主机。仅正常的缓存主机操作。
truefalse主要主机执行群集管理角色,但它不是主要主机。仅正常的缓存主机操作。
truetrue主要主机执行群集管理角色。这是主要主机。正常的缓存主机操作,并与其他主要主机一起管理群集。

当主要主机执行群集管理角色时

  如果 leadHostManagement 和 leadHost 设置都为 true,则缓存主机会在群集中提升至责任更大的级别,并被指定为主要主机。主要主机除了执行普通缓存主机缓存数据相关的操作之外,它还要与其他主要主机一起管理群集操作。

当主要主机出现故障时

  为了保持可用的缓存集群,大多数Lead host必须保持可用。确保它有较少的服务器故障导致群集自行关闭。例如:有6个服务的缓存群体,两被指定为群集的管理者。
集群管理者模型
  如果一台普通主机挂了,群体仍正常运行。非lead hosts主机的数据将会丢失(假设高可用性未启用),但其余的服务和数据仍正常,群体仍可正常运行。如果所有非lead hosts主机都挂了,lead host将不会再被视为lead hosts。

当 SQL Server 执行群集管理角色时

  如果群集的 leadHostManagement 设置为 false,则无论 leadHost 设置如何,每个缓存主机仅承担与缓存数据相关的非主要主机的普通责任。在这种情况下,用于存储群集配置设置的 SQL Server 实例还用于执行群集管理角色。

如果发生服务器故障时

  在 SQL Server 执行群集管理角色时,为了使群集保持可用,一个或多个缓存主机必须能够访问 SQL Server 数据库。
SQL Server 执行群集管理角色
  例如,设想上图中显示的六服务器缓存群集。SQL Server 执行群集管理角色,所有六个缓存主机可以将其资源专用于缓存客户端的数据访问。如果群集中的任何一个缓存主机发生故障,则这些服务器上的数据都会丢失(假定未启用高可用性),但群集会继续运行。其他缓存主机上的数据会继续提供给缓存客户端。事实上,在这种情况下,如果群集丢失了六个缓存主机中的五个,它仍可以继续工作。

TCP/IP 通信

  AppFabric中,所有主机通过互相间的TCP/IP通信共同组成了缓存群集。为了确保缓存主机间的通信,应关闭主机音的防火墙。缓存客户端使用Tcp/IP方式对缓存进行操作,但它可以在有防火墙的状态下工作。
  AppFabric是下个设计为运行在防火墙内的高性能的程序。为了尽可能的提高性能,数据都未进行加密,所以很可能受到“sniffing”和“replay”攻击。

TCP/IP端口设置

  为了正常运行,每个缓存服务器需要配置缓存主机服务在防火墙例外列表中。使用三个独立的端口是:群集的端口,仲裁端口,和缓存端口。
  每个高速缓存的主机和缓存客户端指定端口,这些端口号可以不同。缓存群集通过群集配置来跟踪每个缓存主机,并维护主机间的通信。
  以下给出四个端口号的相关说明:

端口名称默认值应用程序配置文件属性群集配置文件属性
缓存端口22233cachePortcachePort
群集端口22234不适用clusterPort
仲裁端口22235不适用arbitratorPort
复制端口22236不适用replicationPort

安全考虑

  在安装过程中安装程序会自动配置这些端口到防火墙例外列表中。卸载后的缓存主机服务,我们建议手动根据企业的政策和服务器上的其他应用的需要重新配置这些端口。在某些情况下,这可能意味着在防火墙中关闭这些端口。

数据分类(Data Classification )

  能过选择适当的缓存数据类型,AppFabric可以为你的应用程序带来很多好处。数据可以采取多种形式,并驻留在您的应用程序的不同层次。分布式缓存使得不同类型的数据可以轻松存储和检索,不受服务边界限制和语义的差异影响。
  如下表所示,有三种类型的数据适合用于分布式缓存:引用、活动和资源。

数据类型访问模式
引用共享读取
活动独占写入
资源共享、同时读取和写入,被大量事务访问

引用数据

  引用数据(非独占写数据)是不会常发生变化的数据的一个版本。它是原数据的复本,引用数据通常是按照配置的间隔时间周期的刷新数据。
  由于引用数据不会经常更改,在一定程度上可以将数据缓存,而不用在每次读取数据时都访问数据源。使用引用数据有助于提高应用程序的规模和性能。因为浏览操作可能需要大量资源,因此,这种目录数据非常适合缓存。如果未缓存,这些操作可能会不必要地为数据源增加负担,并可能显著影响应用程序的响应时间和吞吐量。

活动数据

  活动数据(独占写数据)是由根据实时执行生成的业务数据的一部分。数据源做为业务事务的一部分,在事务结束后,数据将做为历史日志。
  例如定单数据,应用程序的Session状态或在线购物车。考虑到购物车是一个在线的程序,每个购物车都有一个会话状态。在这个购物的会话中,购物车的存储着用户选择的数据。购物车数据被一个交易的事务独占访问。因为数据集合并不共享,因此,可在分布式高速缓存中分发单个数据集合并将其存储在单独的缓存主机上。通过使用更多缓存主机动态增加分布式高速缓存,可以扩展应用程序以满足不断增长的需求。

资源数据

  并不是所有的数据都可能被归为引用数据(共享读)和活动数据(独占写)两种数据,还有已共享、同时读取和写入并由大量事务访问的数据,此类数据称为资源数据。
  为便于跟踪,资源数据通常存储在联机事务处理 (OLTP) 数据源中,并缓存在应用程序层,以提高性能并为数据源释放计算资源。由于某些类型的数据被共享并同步更新,因此,必须保持群集内缓存的一致性。

22、AppFabric 应用监控与数据管理全解析 本文全面解析了 AppFabric 的应用监控与数据管理功能。内容涵盖监控与跟踪的重要性、AppFabric 仪表盘的功能与操作、监控配置参数的设置、数据存档与清除的实现方法,以及不同监控级别的对比与适用场景。通过合理运用 AppFabric 的监控功能,可以有效保障应用程序的健康运行,及时发现并解决潜在问题,同时提升系统管理的效率和准确性。文章还提供了实际操作示例,帮助读者更好地理解和应用相关工具。 阅读详情

相关推荐

Windows Server AppFabric核心技术解析与实战

本文还有配套的精品资源,点击获取 简介:《Apress.Pro.Windows.Server.AppFabric.Mar.2010》详细探讨了Windows Server AppFabric,微软企业级应用平台的关键技术。本书深入介绍了AppFabric的架构,包括其缓存服务和托管服务,展示了如何通过AppFabric Caching和AppFabric Hosting提升...

weixin_33660045的博客 1212

Windows Server AppFabric简介

本文转载自https://msdn.microsoft.com/zh-cn/library/ff384253.aspx,主要内容是对msdn中对AppFabric介绍内容的整合以及一些自己的理解。简介 AppFrabic托管功能 解决的问题 特性与功能 体系结构 IIS和WAS ASPNET WCF和WF 运行时数据库 暂留持久化 托管承载 监控监视 管理API IIS Manage 托管功能 应用

wp_csdn的专栏 4391

WindowsServer2012 DFS分布式文件系统

WindowsServer2012 DFS分布式文件系统,windws共享文件服务器使用分布式布署提高可用性。双机热备的功能。

Windows Server AppFabric 简介

Windows Server AppFabric 扩展了 Windows Server 以为 Web 应用程序和中间层服务提供增强的托管、管理和缓存功能。 AppFabric 托管功能向 Internet 信息服务 (IIS)、Windows Process Activation Service (WAS) 和 .NET Framework 4 添加了服务管理扩展。其中包括托管服务和托管管理工具,

tomcat的专栏 1402

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

UE 顶点动画工具 (VAT)

导入模型需要勾选全精度UV。

iesoxj的博客 1641

[网络搭建与应用]WindowsServer-分布式文件系统服务器部署

配置DFS服务,与print.netskills.net做文件夹同步,在C盘创建文件夹dfs-root作为复制对象,复制组为dfs-backup,在每天0-1点复制,拓扑采用交错方式。云1和云2都在C盘新建文件夹---(dfs-root)云1和云2都安装DFS服务。

Luistin的博客 789

2025-E题国一-简易自行瞄准装置:基于嘉立创地猛星/天猛星与K230的视觉巡线云台系统设计

本文详细介绍了2025年全国大学生电子设计竞赛E题一等奖作品——基于嘉立创地猛星/天猛星与K230的视觉巡线云台系统设计。该系统通过地猛星主控实现小车巡线,天猛星主控驱动云台,结合K230开发板的视觉识别能力,构建了一套完整的视觉巡线云台系统,实现了自动巡线与精准瞄准功能。文章深入剖析了硬件选型、双闭环PID控制算法、视觉识别与目标跟踪等核心技术,并分享了系统调试与避坑经验。

weixin_42596011的博客 674

Windows Server AppFabric安装教程

AppFabric简介 Windows Server AppFabric 扩展了 Windows Server 以为 Web 应用程序和中间层服务提供增强的托管、管理和缓存功能。 AppFabric 托管功能向 Internet 信息服务 (IIS)、Windows Process Activation Service (WAS) 和 .NET Framework 4 添加了服务管理扩展。其中包

wp_csdn的专栏 3978

CTF-MISC:BUUCTF练习汇总(1-25题,不包括签到题)

解题思路:该题比较基础,wireshark打开过滤HTTP流量包,追踪HTTP流后可以看到base64密文,解密后得到jpg图片,打开图片即可看到flag,在线OCR识别即可提取出flag值。解题思路:zip压缩包解压需要密码,图片中的盲文为解压的密码,解压后得到MP3音频文件,内容为典型的摩斯密码;解题思路:由题目可以为LSB隐写,使用StegSolve打开图片查看最低有效位得到PNG信息,另存为图片后发现是二维码,扫描后即可得到flag。对应摩斯电码为:-.-. - …-. .-- .–. . …

燕麦葡萄干的博客 1万+

Ubuntu20.04下Docker无缝升级实战指南

本文提供了一份在Ubuntu20.04系统上安全、无缝升级Docker的实战指南。文章详细阐述了升级前的版本检查、数据备份等准备工作,逐步演示了通过APT包管理器进行升级或指定版本安装的操作步骤,并强调了升级后的验证与常见问题回滚方案,确保业务容器平稳过渡。

postgres8guard的博客 478

AppFabric分布式缓存架构原理与企业级实践指南

分布式缓存是现代高并发系统提升读性能、降低数据库压力的核心中间件。其本质是通过多节点内存协同,构建逻辑统一、物理分散的数据访问层,解决Web Farm中Session丢失、引用数据频繁查库、库存超卖等典型问题。关键技术原理包括哈希路由分片、客户端智能重试、主次节点异步复制与乐观锁机制,兼顾最终一致性与高可用。AppFabric作为.NET生态早期代表,虽已退出主流,但其命名缓存、Region分区、统一缓存视图等设计思想深刻影响了Redis Cluster、Azure Cache等后续方案。本文结合金融行情、

chuji3953的博客 375

毫米波与太赫兹:十射线模型建模

Pt=1,只考虑地面和前后两面墙的反射,反射系数为0.7。用matlab设计程序并实现该功能。,总计考虑10条路径,求出接收功率随。

SupermarketX的博客 785

Windows Server AppFabric分布式缓存研究

分享一则先前对Windows Server AppFabric分布式缓存的技术研究。 一. AppFabric 技术架构和原理 AppFabric与Memcached类似,采用C/S的模式,在 server 端启动服务进程,在启动时可以指定监听的 ip,自己的端口号,所使用的内存大小等几个关键参数。一旦启动,服务就一直处于可用状态。 适用于使用 ASP.NET、Windows Communi...

weixin_30470643的博客 239

驾驶行为检测数据集准备与处理详解

本文详细介绍了构建"未系安全带/打电话"检测模型的数据集准备流程。首先分析公开数据集(如StateFarm、AICityChallenge)的优缺点,并提供格式转换脚本。重点推荐自行采集+半自动标注方案:1)视频关键帧提取;2)使用预训练模型生成伪标签;3)人工修正标注;4)数据增强(光照变化、运动模糊等)。文章还包含数据配置文件编写指南,并针对类别不平衡、小目标检测等常见问题提出解决方案,如过采样、切片训练和负样本挖掘。通过这套流程可构建高质量数据集,为模型训练奠定基础。

u010117029的博客 356

解锁RK3588:内核模块签名与安全启动配置全攻略

RK3588作为一款高性能嵌入式SoC芯片,其内核模块签名与安全启动配置是保障系统安全的核心机制。本文详细介绍了RK3588的芯片特性,重点阐述了安全启动的硬件信任链原理和内核模块签名的实现方法。通过具体步骤演示了从密钥生成、模块签名到验证加载的完整流程,并深入解析了安全启动配置的硬件连接、软件工具准备、密钥烧录等关键环节。此外,还提出了防御旁路攻击和动态信任链扩展等高级安全策略,为RK3588在工业控制、智能安防等高安全要求场景中的应用提供了全面的安全解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 346

Windows Server AppFabric Caching

这种数据类型负责存储“较重要的数据”,而且这类数据都是不会经常变动的数据,而且每次变更数据都会建立一个新的版本,所以这类数据非常适合用来共享给多用户、多应用程序的情况,用来加速所有应用程序的访问速度,降低各应用程序对数据库系统造成的负荷。不管是 Reference Data (共享读取) 或者 Activity Data (独占写入) 已经很适合做数据缓存,但并非所有应用程序类型都支持这种方式快取,这里的“资源数据”指的是“共享的”且“同时需要被读写”的数据,而且读写量都非常大的情况。

HY9B60FO0的博客 237

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Windows Server AppFabric介绍

当客户端第一次获取一些数据的时候,如ASP.NET应用程序用户提供一些信息资料,或者从数据库中读取的信息,它可以使用AppFabric Caching Services客户端类库将一个唯一的名称和这些信息一起存放在缓存群集中( cache cluster)。对于客户端来说,缓存集群中的所有缓存服务器就是单一的逻辑存储。这篇文章将对微软的服务器系统Windows Server AppFabric进行一个简单的介绍,然后给实现一个将WCF宿主到Windows Server AppFabric上的一个实例。

zW5OwXnMo的博客 165

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Windows Server AppFabric正式发布

Windows Server AppFabric正式发布

ytfhjhv的博客 207

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Windows Server AppFabric 缓存(微软分布式缓存解决方案)

主要介绍一下Windows Server AppFabric特点,详细的介绍及代码参照MSDN,这里就不多此一举了。(同类产品Memcahed)       Windows Server AppFabric 扩展了 Windows Server 以为 Web 应用程序和中间层服务提供增强的托管、管理和缓存功能。 AppFabric 托管功能向 Internet 信息服务 (IIS)、Window

dz45693的专栏 2471

Windows Server AppFabric 缓存容量规划指南

此主题尚未评级 - 评价此主题 Jason Roth、Rama Ramani、Jaime Alva Bravo 2011 年 3 月 本白皮书为 Windows Server AppFabric 缓存 容量规划提供指南。 简介

霍力强的专栏 2800

WF4.0实战(二十):Windows Server AppFabric介绍

Windows Server AppFabric的服务器系统是一款主要面向私有云计算的系统。它将作为微软日后进军私有云市场的一个关键性产品,可以允许用户创建和维持他们自己的云计算系统架构。 这篇文章将对微软的服务器系统Windows Server AppFabric进行一个简单的介绍,然后给实现一个将WCF宿主到Windows Server AppFabric上的一个实例...

diejia1113的博客 230

Windows Server AppFabric:更好,更快,更便宜

<br />微软全球副总裁Soma,负责微软公司Developer Division的工作,在博客上发布了文章Windows Server AppFabric:更好,更快,更便宜。微软服务器和Internet信息服务(IIS)没有提供用于部署、管理和监控特定类别Web应用程序的全方位的服务,Windows服务器AppFabric的推出是为了响应大量组织和开发商的要求,多年来他们一直希望微软提供“应用程序服务器”。微软服务器AppFabirc基本填补了这个空白,它作为微软服务器自由扩展以及预计Windows服

shanyou的专栏 1209
上一篇: Windows Server AppFabric安装教程
下一篇: 人工鱼群算法详解
wp_csdn
博客等级 码龄12年 67粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值