NCache 作为 NHibernate 二级缓存

学习如何使用 NCache 作为 NHibernate 的二级缓存。 NCache 提供 NHibernate 二级缓存提供程序,您可以通过 web.config 或 app.config 更改插件。 NCache 在此还实现了数据库同步功能,因此您可以指定哪些类应与数据库同步。 NCache 允许您为此指定 SqlDependency 或任何符合 OLEDB 的数据库依赖项。

NCache 是一种企业分布式缓存解决方案,旨在提高您的应用程序可扩展性和性能。 在今天的教程中,我们将了解如何使用 Level 2 Cache 提供程序扩展 NHibernate 应用程序 NCache.

NHibernate L1 缓存的限制

NHibernate 是一款出色的 ORM 工具,适用于您的应用程序,它简化了不同团队的编码标准。

NHibernate L1 缓存的限制
NHibernate L1 缓存的限制

NHibernate 默认为您提供进程内缓存,您可以在其中为每个事务临时将数据保存在工作进程中。 这适用于单服务器应用程序,但这成为企业应用程序的性能瓶颈。

在企业应用程序中,您通常在负载平衡方案中拥有多个 Web 服务器,并且它们的多个工作处理器在每个服务器上运行。 因此,它会导致在您的数据库上针对来自每个工作进程的相同数据放置多个冗余查询,这最终会减慢您的应用程序的速度,并且还会导致每个工作进程端单独在其自己的内存中进行冗余存储,并且您当您需要扩大用户群时无法扩展。

NHibernate L2 缓存提供者模型

所以,要克服这些限制 NHibernate 为您提供 2 级缓存提供程序,您可以在其中插入二级缓存。

  • 理想情况下,二级缓存应该是
    • 进程外
    • 在记忆中
    • 分布式缓存
  • 可靠且高度可用
  • 可扩展

NHibernate L2 缓存提供者模型

二级缓存与您的进程内缓存一起使用。 每当您第一次从数据库中获取数据时,NHibernate 会自动将该数据推送到二级缓存中,该二级缓存由所有工作进程共享。

理想情况下,二级缓存应该是内存中缓存,因为您希望提高应用程序性能。 它必须是一个进程外缓存,即使您的工作进程回收也不会被刷新。 它需要分布式,因此可以在不同 Web 服务器上的多个工作进程之间共享。

记住你只能增加你的 应用程序可扩展性和性能,如果您的底层缓存基础架构具有高度可扩展性且面向性能。

NCache - NHibernate L2 缓存提供程序

所以,这里我们有这样一个 2 级缓存提供程序 NCache.

NCache - NHibernate L2 缓存提供程序
NCache - NHibernate L2 缓存提供程序

这是一个进程外的内存分布式缓存解决方案,它有一个 动态聚类 能力,它跨越多个服务器。 应用程序的事务负载在运行时平均分配到所有缓存服务器,以获得更高的性能和 NCache 保持数据在整个集群中复制,以便在您丢失任何缓存服务器时为您提供一致的故障转移。

NCache 支持同步和异步复制模式。 因此,您可以在没有任何性能开销的情况下保持数据复制。 的表现 NCache 当您将更多服务器添加到缓存层时,它会线性增长。 缓存大小没有限制,因此,您可以随心所欲地增加数据大小。

您还可以在运行时将更多服务器动态包含到缓存集群中,以增加事务能力并拥有更多内存。

它还为您提供仪表板样式的监控,帮助您快速浏览缓存性能、缓存上的客户端应用程序活动以及缓存消耗的各种系统资源。

右侧的图片显示了 分区副本拓扑,它使数据在多个服务器上进行分区和复制。 分区副本是内部最流行的拓扑 NCache.

NCache NHibernate 的分布式二级缓存

所以,这是一个高级架构图。

高级架构图
高级架构图

当您从以下位置插入此 2 级提供程序时 NCache 在您的企业应用程序中,它不需要在您的应用程序中进行任何代码更改。 您只需要在您的 web.config中 or 应用程序配置文件,我们会谈到它。 因此,如果您已经在前一个事务中获取了数据,则不会再有多余的调用进入您的数据库。

在像这样的负载平衡网络场中,一旦您第一次从数据库中获取数据,NHibernate 会自动将数据推送到二级缓存,并且该缓存由所有 Web 服务器共享。 因此,它可以帮助您减少数据库的负载。

NCache 二级缓存可配置特性

因此,通过配置更改,您可以为二级缓存提供程序配置许多功能。

  • 使用 NHibernate 区域
  • 使缓存对象过期:
    • 滑动或死亡时间
    • 绝对到期
  • 数据库同步:
    • SQL 依赖
    • 轮询依赖
  • 使用同步。 /异步。 缓存操作
  • 设置缓存项优先级

NCache 二级缓存可配置特性

例如,您可以使用 NHibernate 区域,可以将缓存对象设置为绝对或空闲时间到期,还可以配置 SQL 依赖项 数据库同步. 支持同步和异步缓存操作,您还可以配置缓存项优先级。

因此,我将带您完成一个快速的分步实践会议来配置 NCache 示例应用程序的二级缓存提供程序。

我建议你 下载免费的 30 天企业版 从我们的网站。 这是一款功能齐全且功能丰富的产品,即使在评估阶段也是如此。

NHibernate 集成示例 NCache

一旦安装 NCache,这是它在您的系统上的样子。

NHibernate 集成示例
NHibernate 集成示例

它安装了一堆 Visual Studio 示例。 让我们以 NHibernate 示例为例,在 Visual Studio 中打开。 如果您使用的是 Video Studio 2010,您可能需要重新构建示例。您可能还需要进行转换。

让我们看一下您需要为二级缓存提供程序的 app.config 进行的配置更改 NCache.

app.config 文件
app.config 文件

您只需要定义一个名为 'ncache' 在您的 app.config 中为这样的缓存提供程序,然后您可以像这样为缓存提供程序添加一个属性。

我们还定义 NCache 部分本身具有多个区域。 这些区域是 NHibernate 区域。 每个区域映射到不同的缓存名称 NCache.

因此,我们在这里有一个默认区域,它适用于您未指定任何 NHibernate 区域的所有实体,并且我们有特定的名称区域,例如“客户”区域。 在每个区域内,您可以为属于该区域的每个类指定多个属性。

NHibernate 区域
NHibernate 区域

例如,为此设置 SQL Dependency,设置缓存项的优先级,使用同步或异步,将过期策略设置为相对时间或空闲时间。

运行缓存

因此,为了运行示例,您需要拥有几个缓存。 默认缓存和运行的“myPartitionReplicaCache”,在您的 NCache 经理.

让我们去 NCache 经理,我现在使用“myPartionedReplicaCache”和默认缓存设置了 2 个服务器设置。 让我们运行您的应用程序,查看客户列表,例如,一旦您从数据库中获取数据,只需观察发送数据给它的两个服务器的请求/秒。

请求/秒同等回答
请求/秒同等回答

因此,这两台服务器上大约有 49 加 42 项,平均分配给两者,如果我再次运行查询,我将能够直接从二级缓存集群获得这些结果,而不是进入您的数据库。 因此,只需查看来自两台服务器的同等响应的请求数/秒。

缓存可靠性测试

我们可以进行可靠性测试。 我们可以关闭其中一台缓存服务器,您仍然会看到缓存集群能够为您提供项目并从剩余的服务器中恢复它。

为此,我们将不得不停止其中一台服务器,我将这样做。 我们有 2 台服务器,21 和 22。我将停止 22,就好像它已退出集群,然后重新运行查询。

停止缓存服务器
停止缓存服务器

您将看到 49 加 42,这 91 个项目在其中一台服务器上仍然可用。 他们现在已经从另一台服务器恢复,如果我再次重新运行查询,再次查看客户列表,我应该能够从集群中获取该服务器的所有项目。 您可以从该服务器看到 Requests/sec 正在进行,Fetches/sec 正在进行。

可靠性测试成功
可靠性测试成功

因此,您现在拥有可靠的缓存,无论您的缓存服务器之一在运行时是否不可用。 其他缓存服务器可以恢复数据并很好地响应您的查询。 同时,您正在减少数据库的负载。 不再有多余的查询进入您的数据库。

NHibernate 的集成代码 NCache

我们确实提供了 NHibernate 的集成代码 NCache,正如您在我打开的项目中看到的那样,您可以使用此源代码为您的特定 NHibernate 版本进行优化或自定义。

NHibernate 的集成代码 NCache
NHibernate 的集成代码 NCache

如果你去的话 NCache 安装文件夹,这里有代码。 所以,非常感谢您今天的时间,我们今天看到,如何 NCache 可能有用。 可靠性和可扩展性如何 NCache 是,提高您的 NHibernate 应用程序的性能。 请继续关注来自的更多更新 NCache. 我们将在接下来的教程中讨论各种功能。 如果您有任何问题,请给我们发送电子邮件 support@alachisoft.com

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。