使用方法 NCache as AppFabric 可再生

录制的网络研讨会
作者:罗恩·侯赛因和扎克·汗

AppFabric 已经到了生命的尽头,如果您正在考虑从这里去哪里,那么您必须观看此网络研讨会。 该网络研讨会向您展示了迁移 .NET 应用程序的不同方法 AppFabric 至 NCache.

NCache 是一个非常快速且可扩展的 .NET/.NET Core 分布式缓存系统,它为 AppFabric 这使您可以迁移到 NCache 应用程序中的代码更改最少甚至没有。 您的 Appfabric 您的应用程序中使用的 API 开始使用 NCache 无缝。 您还可以开始使用由 NCache 用于缺少的高级缓存功能 AppFabric.

以下是本次网络研讨会的内容:

  • 概述 AppFabric 及其报废问题
  • 为什么 NCache 是最好的选择和替代 AppFabric
  • 不同的迁移方式 NCache
    • 通过无代码更改包装器
    • 通过直接 NCache API调用
    高级分布式缓存功能,仅 NCache 提供
  • 迁移的动手示例和演示

今天的主题是:“如何使用 NCache 作为 AppFabric 选择?” 今天的网络研讨会将涵盖无数主题。 特别是概述 AppFabric 及其寿命终止问题。 以及,为什么 NCache 是您的最佳选择 AppFabric 以及我们提供的任何高级分布式缓存功能,您可以使用它们来代替 AppFabric 用于提供和动手示例和演示,您可以如何 从...迁移 AppFabric 至 NCache?

现在,请注意,这是一个实时网络研讨会,因此,您可以随时使用问题选项卡插入您可能遇到的任何问题或疑问或疑虑,我们将能够为您解决。 最后,在网络研讨会结束时,我们还将举行单独的问答环节,因此,如果有人有任何问题想要保留到最后,我们也可以就这些问题与您联系。 好的,不用多说,罗恩请您发言。

所以,今天的话题是一个非常具体的话题。 你知道,它会覆盖 AppFabric 生命周期结束的问题,并且由于 Microsoft 本身建议您应该迁移该技术。 因此,如果您使用的是 AppFabric 应用程序,如果它仍然是您的应用程序架构的一部分,我们将提供一些选项 NCache 迁移出来,你知道,我会告诉你这个过渡是多么顺利。 迁移是多么容易 AppFabric 并且能够使用 NCache 原样,然后能够使用的一些扩展功能 NCache 这 AppFabric 完全缺乏。 所以, AppFabric 是一个非常有限的产品。 它曾经工作得很好,但它已经结束了,对,所以,它没有被备份。 它不再更新了。 因此,现在是您摆脱它的时候了。

所以,今天我们将介绍所有细节。 关于使用有哪些不同的选择 NCache,作为 App Fabric 的替代产品,以及从它迁移的难易程度,以及如果您开始使用,您将获得哪些好处 NCache. 所以,我们有一些技术细节要介绍。

概述 AppFabric

那么,让我们谈谈 AppFabric 一般来说。 我很确定你们中的大多数人已经知道 AppFabric 及其架构。 如果它正在您的环境中使用,那么,您应该有亲身体验 AppFabric. 它是一个内存中的 .NET 分布式缓存系统。 它主要用作免费的分布式缓存,它是 Windows Server 的一部分。 它主要用于 Web 应用程序、中间层服务和任何其他 .NET 应用程序,这些应用程序需要缓存以保存对数据库的访问。 它由 Microsoft 发布和支持。 2010 年发布了 1.0,1.1 年发布了 2015,这是最后一个版本 AppFabric. 缓存 API,如何使用 AppFabric? 它主要是 .NET 应用程序,消耗 AppFabric 数据类,然后暴露 Wrapper,你知道,暴露 API AppFabric 通过那个图书馆。 您还可以使用一些提供程序,它们 AppFabric 曾经拥有。 ASP.NET 会话状态提供程序和 ASP.NET 输出缓存提供程序。 因此,如果您不想使用数据缓存,如果您更专注于特定于 Web 的缓存,那么您可以使用这些无代码更改选项,这是两个无需任何代码更改即可使用的功能。

AppFabric 架构图

这是架构分解。 很简单,你有你的缓存服务器,它们被称为缓存主机 AppFabric. 它允许您制定缓存集群。 有一些限制,有一个多数规则的概念。 您需要至少有 3 台服务器,如果任何一台服务器出现故障,您就违反了多数规则。 因此,高可用性和数据可靠性可能会受到影响,因此也出现了 Lead Host 的概念。

AppFabric 架构图

但是,这里的想法是您拥有托管缓存的缓存服务器。 他们为缓存制定了一个存储库,然后您的应用程序能够连接此缓存存储库,由多个服务器备份并允许您执行缓存操作。

它曾经拥有基于 PowerShell 的缓存管理工具。 缓存配置和集群配置通常在存储位置、文件系统或数据库上。 所以,这是另一个依赖 AppFabric. 因此,这里概述了启用缓存的应用程序服务器或缓存客户端如何连接到此缓存服务器,您知道,谁将在您的环境中实际托管缓存。

AppFabric 已经是生命的尽头了。 第一个公告发布于 2016 年 2016 月。Microsoft 开始建议您应该从该技术迁移出去,因为它不再受支持。 他们于 20 年 XNUMX 月宣布该产品的生命支持生命周期结束,然后他们在一年内结束了主流支持。 所以 XNUMX17 是他们主流支持的终结,就, AppFabrics 来自微软的官方支持,然后是扩展支持。 他们已经延长了几年的支持,但目前的最后日期将是 2022 年。

所以,基本上就是这样,我们预计这可能是微软给出的最后一个扩展。 因此,他们强烈建议您放弃这项技术。 它不是开源的。 因此,它也没有任何社区来支持它。 在线资源,据你所知,当我准备这个网络研讨会时, AppFabric Microsoft 门户的帮助文档非常困难,因为您开始使用它。

因此,获得帮助资源非常困难。 官方支持不再存在。 提供有限的扩展支持。 将不再提供错误修复。 不会向功能集添加更多增强功能。 如果您使用较新的平台,例如, .NET Core,平台兼容性,安全更新不会成为其中的一部分。 所以,这基本上是生命的终结。 这是一个过时的货架产品,这就是为什么 Microsoft 建议您迁移它并使用替代品,这也是我们举办此网络研讨会的原因,以便您有一个简单的迁移选项,作为 NCache,作为您的替代选项。

主要使用 App Fabric 是非常有风险的,因为主要供应商 Microsoft 已经给出了迁移的建议。 正如我们所说,生产部署面临风险,因为没有支持、没有错误修复、没有增强、没有兼容性或安全更新。 你要走了。 发生故障的成本非常高,因为您可能在关键任务应用程序中使用它,并且如果该应用程序正在使用 AppFabric 如果出现问题或出现问题,您不知道该去哪里。 因此,它会影响您的业务,也会影响整体用户体验。

因此,我们建议您执行迁移。 具体来说,当您拥有如此简单的迁移选项时 NCache 优惠。 因此,我们强烈建议您优先完成此项目,事实上,在本次网络研讨会中,在本次网络研讨会结束时,您将完全有能力使用现有的 AppFabric 应用程序,我将向您展示逐步迁移的指南,您知道, 迁移 AppFabric 至 NCache. 该应用程序可以完全停止使用 AppFabric 并开始使用 NCache 然后我会告诉你,它是多么简单。 这是一个三步过程,我将在本次网络研讨会中介绍,这应该会给你一个很好的想法,如何开始使用 NCache 作为备选。 到目前为止有任何问题吗?

所以,这只是一些介绍性的细节。 关于如何的一些细节 AppFabric 诞生了? 有什么问题以及如何实际迁移出来?

NCache 作为迁移选项

所以, NCache 是一个迁移选项。 这是一个非常自然的选择。 NCache 是 100% 原生 .NET 产品,目前已投放市场超过 15 年,拥有完整的市场跟踪记录,具有很大的吸引力,大量使用的实际自定义部署 NCache 在他们的应用中,我们的客户遍布各地,在不同的行业中也是如此。

  • 因此,您在迁移方面获得的第一个好处 AppFabric 至 NCache 就是,你得到Windows平台。 所以, AppFabric 是基于 Windows 的产品, NCache 也是基于 Windows 的原生产品。 因此,我们有一个基于 .NET 的缓存服务器,因此您可以在 Windows 上本地部署它。 如果你正在使用 AppFabric,您可能使用的是 2012 年或 2016 年的盒子。 因此,您可以使用同一组操作系统并且仍然可以安装 NCache 在同一个盒子上。 因此,没有任何特定的硬件要求或操作系统要求,您必须匹配,以便从另一种技术迁移。 因此,这与您在环境中已有的内容非常兼容。
  • 它是最古老最稳定的 .NET 分布式缓存。 我们是该领域的市场领导者。 我们拥有庞大的客户群,他们正在使用 NCache 在他们的 .NET 应用程序中。 自从, AppFabric 也是基于.NET API。 所以,它是一个非常自然的选择,从哪里开始使用 NCache API 或使用我们的包装器方法,这是一个无需更改代码的选项并迁移 AppFabric 并开始使用 NCache. 它完全支持。 对。 所以,这就是我们在之前的幻灯片中提出的要点 AppFabric 是生命的尽头。 它没有得到任何社区的支持。 它不是开源的。 没有官方支持。 提供扩展支持,但最终将停止。 所以,你有风险。
  • NCache,您从服务器以及从客户端的角度获得完全支持的软件。 如果您发现任何性能问题、任何安全问题、任何错误、任何东西、任何新功能都需要,您可以与我们联系,然后我们将与您合作。
  • 它功能更强大,功能也更丰富。

所以,我刚刚列出了一些最常见的,你知道的,你应该考虑的因素 NCache 作为一种,作为一种选择。 主要是因为 .NET 和 Windows 支持。 其次,它在行业内或在 .NET 应用程序中拥有良好的记录,并得到完全支持。 我们的团队提供官方常规和 24x7 支持选项。 而且,我们将讨论您可以扩展哪些不同的功能。 因此,您可以扩展现有的缓存用例。 我们看到客户来找我们,他们有一个用例 AppFabric 但是当他们采用 NCache 他们想扩展他们的用例并开始使用那些仅在 NCache 和 AppFabric 完全没有这些功能。 所以,这是你应该考虑的另一个因素 NCache 是一个迁移选项。

NCache 企业部署

NCache 部署,在一个典型的大型企业中,这就是 NCache 好像。 您再次拥有一组服务器,托管缓存集群,并且不像 AppFabric,您不必拥有多数规则或主导主机概念。 这是一个 100% 点对点架构的缓存集群。 它使用基于 TCP/IP 的集群协议。 您在服务器团队上创建一个缓存集群,这些集群有助于来自与其连接的客户端应用程序的请求处理能力。 因此,这些可能是您的 ASP.NET 或 ASP.NET Core 网络应用程序。 它也在较新的堆栈上。 .NET 或 .NET Core 网络服务或 .NET Core 服务器应用程序。

所以,一般来说,任何 .NET, .NET Core 甚至 Java 应用程序,都可以连接到 NCache 并利用 NCache 缓存。 这很简单。

你可以从 2 开始 NCache 服务器制定一个缓存集群和 2 是获得高可用性和数据可靠性功能的最低要求。 即使单个服务器也可以工作,但我强烈建议您至少使用 2 个 NCache 服务器利用高可用性和数据可靠性。 而且,它非常灵活。 它允许您根据需要创建尽可能多的缓存。 作为采用 NCache.

我们在我们的常规中以非常详细的方式介绍了这一部分 NCache 架构网络研讨会 但这更像是一张介绍性幻灯片,所以,如果有任何具体问题,请告诉我 NCache 部署。

NCache 可以部署在单独的专用服务器上,您的应用程序位于单独的盒子中 NCache 在单独的盒子上,或者你可以有 NCache 以及在同一个盒子上的应用程序。 因此,Windows Server 主机托管 NCache 也可以作为你的客户盒子,一个网络服务器盒子。 只是您的应用程序部署在同一台机器上 NCache 也在运行。 因此,这也是一种可能性,或者您可以拥有单独的缓存服务器层,并且您的应用程序可以位于单独的盒子上。 所以,我们非常灵活。

它可以在 微软Azure,以及 AWS 和任何公共或私有云中。 你只需要那个 .NET Framework 作为先决条件 NCache 这就是它所需要的。 就像我说的,它非常灵活,非常易于使用的产品。 与 App Fabric 相比,这将是从 AppFabric 至 NCache 如果你打算采用它。

迁移选项

因此,接下来我将讨论迁移选项,并向您展示实现这一目标的动手示例。

应用数据缓存

因此,对于数据缓存,虽然我们讨论过我们有 .NET API,然后我们有会话和输出缓存功能 AppFabric,因此,这必须是您的整体用例 AppFabric. 如果您目前正在运行一个实时应用程序,那么数据缓存很可能是最常见的用例,您在使用 App Fabric 时必须在应用程序中使用它。

  • 运用 AppFabric 包装

    那么,让我们谈谈如何使用迁移应用程序 AppFabric 你开始使用 NCache 作为替代品。 所以,有两种选择。 我们已经设计了我们的包装器,我们已经实现了它,并且没有任何应用程序代码更改。 您无需更改任何代码。 你可以开始使用 NCache 作为替代 AppFabric. 您只需要使用我们的 的NuGet 并更新名称空间。 所以,我们所做的是,我们已经实现了我们的包装器 AppFabric API,因此,无论何时在您的应用程序中 AppFabric API 调用,在包装器实现接受该调用并开始调用的幕后 NCache 这是一个非常简单易用的选项,我将向您展示如何实际管理您现有的应用程序。 我要肩并肩运行你所有的 AppFabric API 将开始使用 NCache 无缝。 无需更改代码。 只需一个库,更改名称空间即可完成工作。

  • 直接制作 NCache API调用

    第二种选择是直接 NCache API 称呼。 在那里,您进行代码更改并引入 NCache API 自己调用。 你可以开始更换 AppFabric API 或者您可以开始扩展现有的 AppFabric API 并开始使用扩展功能。

您也可以同时使用这两种方法。 例如,您已经拥有的 AppFabric,您可以使用我们的包装器来覆盖该基础,然后您可以使用我们的扩展 功能. 中缺少的功能 AppFabric,您可以通过我们的原生 API 开始使用它。

NCache 包装方法

所以,我将展示这两个方面 NCache 在示例应用程序的帮助下。 所以,这是我们的包装方法。

在我们真正开始之前,让我设置环境并向您展示如何 NCache 得到配置以及设置的容易程度 NCache 集群环境。 因此,为此,我将登录到我们的演示环境。

NCache 包装方法

  • 下载 NCache AppFarbric 的包装器
  • 地址 NCache 包装 Nuget 包
    AppFabric.Wrapper.NCache
  • 更换 AppFabric 命名空间与 NCache 包装
    /*Replace*/
    using Microsoft.ApplicationServer.Caching; 
    /*with */
    using Alachisoft.NCache.Data.Caching;
  • 运行和测试应用程序

设置环境并创建缓存集群

这是我们的 网络管理工具. 这可以从您环境中的任何地方访问。 它可能是您的客户端框、应用程序框。 它可能是你当前的 AppFabric 服务器盒子。 你只需要安装 NCache 在一两个盒子上,然后一次 NCache 安装完成后,您可以启动 Web 管理进程并可以配置缓存集群。

所以我有 NCache 安装在这里的两个盒子上,我将用作我的缓存集群服务器。 因此,您需要做的就是来到集群缓存。 顺便说一句,您可以创建集群缓存、本地缓存、集群缓存。 您可以从 IP 地址本身访问它。

所以,你点击新建,然后你可以命名它,比如说,democache。 你可以命名任何东西。 NCache 基于二进制和 JSON 序列化,因此,您可以选择这两种格式中的任何一种。 我将使用 Binary 并选择 Next。

你知道,与 NCache 我们有很多 缓存拓扑 我会敦促您查看我们的 NCache 架构网络研讨会,详细介绍了所有这些拓扑。

所以, 副本拓扑的分区,如果我必须给你一个快速的概述,它是基于备份的分区。 所以,这就是我们的 Partition of Replica 拓扑。 每个服务器都有一个连接客户端的数据分区。 因此服务器 1 和 2 托管活动分区。 项目编号 1、2 在服务器 1 上,项目编号 3 和 4 在服务器 2 上,然后我们还有一个备份分区,其中服务器 1 在 2 上有备份,服务器 2 在服务器 1 上有备份。

缓存拓扑:分区缓存和分区副本缓存

因此,如果任何服务器出现故障,备份就会被激活,并且您不会丢失任何数据。 因此,每个服务器都备份在缓存集群中的其他服务器上,您可以拥有任意数量的服务器,在此设置中,类似地,我们还有其他拓扑,我建议您查看我们的 建筑网络研讨会. 所以,Partitioned of Replica 是我要选择的。 保持一切简单。

活动分区与其在另一台服务器上的备份之间的复制模式可以是同步的或异步的。 我将使用 Async,因为它更快。 同步更可靠,但异步也相当快。

而且,在这里我将指定将托管我的缓存集群的服务器。 所以,我有两个盒子 107 和 108。

让我们看看是否可以打开用于服务器节点和 Eviction 之间通信的基于 TCP/IP 的参数的缓存。 因为,您在此处指定了缓存大小。 在此屏幕上,您还可以指定缓存的大小。 因此,如果您的缓存已满,您也可以选择执行驱逐。 因此,在这种情况下,缓存可以删除一些旧项目并为新项目腾出空间。

如果你正在使用 NCache 对于会话缓存,作为从 AppFabric 至 NCache, AppFabric 会话存储模块到 NCache 会话存储模块,我们建议您关闭 Eviction,因为这是您的用户数据,甚至是您的敏感数据,即使您使用对象缓存 API,也只有在您能够承受丢失数据的情况下才能打开 Eviction,如果您的缓存变满。 因此,顺便说一下,您总是可以提供更大的缓存大小,以缓解这个问题。 完成时启动此缓存。 在服务启动时自动启动此缓存。 因此,每次服务器重新启动时,它都会自动重新加入缓存集群,因此不会出现停机或数据丢失。 如果集群的所有成员都启动并运行,则集群将完全运行,因此,在重新启动时它应该会自动重新加入。 您不应该手动执行此操作,仅此而已。

配置我们的缓存集群就是这么简单。 如您所见,我们有 107 和 108,democache 已完全启动并运行。

监控缓存统计

现在我可以给你看一些统计数据。 这些是我们的 Windows 性能计数器。 所以,这又是一个非常自然的选择,我们通过 Windows 性能监视器拥有 Windows 集成监控系统。

而且,我们也有自己的监控工具,它利用 Windows 性能计数器以及一些监控参数,在 NCache 应用。 例如,客户端连接数、一些利用率、缓存主机内的一些统计信息。 因此,我们已经完全连接了集群、请求/秒、平均微秒/缓存,以显示延迟、添加、获取、更新、删除/秒缓存大小、CPU 图、内存图、缓存计数中的总数据、CPU 时间花费 NCache,系统内存就在这里,然后是连接的客户端进程。

所以,它非常精致,在它之上,它有客户端仪表板、服务器和客户端的报告视图,然后您也可以添加自己的仪表板。 比方说,如果我创建一个新的仪表板,它应该被命名,比如说,Api Logs,我可以继续创建,然后我可以从这里拖放计数器。

例如,我可以看到集群操作,我可以看到每秒添加数。 所以,我可以添加我需要的计数器,专门用于监控 NCache 簇。 所以,目前没有客户端应用程序在运行,所以,我将快速运行一个,为此我只想说测试压力演示缓存。 因此,一旦该应用程序运行,它第一次需要一些时间。 这个盒子上的 PowerShell 窗口有点滞后,但是一旦它运行,你就可以了,它会在我的缓存上模拟一些虚拟活动,你可以看到每秒请求数。

如果,我把这个带到这里,每次缓存操作的平均微秒时间略低于每次操作 100 微秒,并且我们每秒有相当多的添加、获取、更新发生。 缓存大小正在增长,几兆字节。 平均而言,它只有一千字节的对象大小。 CPU不到5%,目前是4%。 内存是您添加的内容,您可以看到所有计数器集都在此处显示活动。

我们有一个客户端流程,也显示在这里,如果我向您展示客户端仪表板,我们也会看到所有这些报告。

因此,这只是为了让您了解设置的容易程度。 所以,这是测试之一,所以,如果你已经有 AppFabric 服务器,你需要做的就是 下载 NCache 我们网站上的软件,将其安装在相同的服务器上。 两台服务器是我们推荐的高可用性和数据可靠性的最低要求。 您也可以从一个开始,仅用于测试,但我们建议您在生产中使用至少两台服务器,一旦完成,您就可以移动到您的应用程序并开始使用相同的缓存集群。

而且,在安装之后,显然您还需要创建一个我们刚刚完成的创建缓存集群,然后您可以开始使用您的应用程序,然后进入您的应用程序并开始使用 NCache 作为迁移选项,我将在示例应用程序的帮助下向您展示。

运行示例 AppFabric 应用领域

所以,我有这个示例应用程序。 事实上,它是相同的示例应用程序之一,具有原生 AppFabric 控制台 UI 和我从这里转换的第二个 NCache AppFabric 控制台用户界面。 所以,如果我打开这两个,它们是完全相同的应用程序,但做了一些小改动,以使其兼容 NCache. 所以,我将引导您完成这些更改。 我有一个单独的副本,我将演示。 所以,我已经把它设置为一个启动项目,对,我打算运行它,顺便说一下,在我运行它之前,我有一个 AppFabric 服务器也在这里启动并运行。 所以,我们有 AppFabric 服务器。 如果我只是向您展示当前的统计数据,我有一些,您知道,让我重新启动它,当它重新启动时,让我回到这里,这是使用典型的 AppFabric,你知道,数据缓存调用。 让我看看,如果我从这里向您展示,Program.cs。

有问题吗? 我想按你的方式扔一个。 是的。 我们的一位与会者在幻灯片 XNUMX 中提到,它提到缓存集群在 Windows 和 Linux 上运行,因此,服务器是否可以托管在 Linux 上,如果可以,那么仪表板功能如何工作。

非常好的问题。 这是一个 基于网络的管理工具,这是在 ASP 中实现的.NET Core,是的,它还拥有适用于 Linux 环境的所有工具。 所以,如果你的 NCache 服务器托管在 Linux 上。 首先,您仍然可以访问作为 Linux 一部分的 Web 管理。 您可以从任何 Windows 机器或环境中的任何浏览器访问它,对于 Linux 监控,我们在 Linux 中还没有 PerfMon 计数器,对吧。

.NET Core 仍在发展中,因此 PerfMon 计数器还没有出现。 因此,我们为 Linux 环境提供了自定义计数器。 您将获得几乎类似的 Linux 服务器监控视图 NCache. 所以,唯一的区别是它将是 Linux 机器而不是 Windows,你可以拥有一个 .NET Core 安装在那些 Linux 机器上。

因此,视图将是相同的。 只是我们选择了不同的路线,以克服 .NET Core. PerfMon 计数器不存在,因此,我们针对该特定用例实施了自定义监控。 我希望这能回答你的问题。

所以,让我清除一下,然后向您展示当前的统计数据。 所以,这是一个'democache',同名,你甚至可以使用同名缓存 NCache 也是。 您甚至不必更改缓存的名称。 我们就是这样设计的。 对,所以,让我向您展示此缓存的统计信息。 因此,目前没有任何内容 AppFabric 缓存集群。 所以,我要启动这个应用程序。

所以,我的目标是我们运行一个应用程序 AppFabric,向您展示它的工作原理,然后我们将其迁移出来,将其迁移到 NCache 并停止使用 AppFabric 并开始使用 NCache. 所以,我要运行这个。

好的。 所以,这是我自己设计的测试用例,示例应用程序。 它通过所有的 API,可能是所有的 API AppFabric. 这就是为什么此时您会看到很多 API 正在执行。 所以,我会用 AppFabric 然后运行相同的样本,顺便说一下,它也会有通知测试。 因此,在完成此操作的同时,让我将其停靠在此处,然后将其带到这里。 实际上,让我在这里打开这个示例。 好的,所以,基本上相同的示例应用程序,我的错。 好的。 所以,这是与,你知道的, AppFabric 让我告诉你这个样本做了一些补充,所以,如果我给你看统计数据。 我们的项目计数为 48,区域计数为 60,请求计数为 154。

因此,我们有一堆参数,如果我向您展示缓存中的键,您可以看到缓存中的一些统计信息。 所以,它有一些项目。 您知道,它目前只有一台服务器,但我们也在缓存中添加了区域。

所以,它是一个完全工作的示例应用程序,现在我将运行相同的示例,然后我将向您展示如何制作,顺便说一下我们是如何进行更改的。 所以,我要来看这个样本,它是我们运行的第一个样本的副本 AppFabric 并进行了更改以配备 NCache. 启动新实例,它应该在这里运行。 因此,您可以看到正在执行相同的示例 NCache 稍后我会向您展示所有的变化。

所以,并排比较真的会帮助你,我们已经,我们对样本一的期望 AppFabric 以及我们从中得到什么 NCache 将完全相同,并且不会进行任何代码更改,以实现这一目标。 我将引导您完成我们已完成的所有步骤。 所以,它几乎完成了。 所以,让我来到最顶端。 顺便说一句,它仍在运行。 所以,你可以看到黄色标记基本上是我们正在做的任务,如果它完成了,它会以绿色显示给你,如果你从服务器端看到错误,你会看到,你知道,更深的红色,较浅的右侧,然后是深红色,如果它在解析端,则在客户端。 所以,我刚刚给了他们一个颜色编码的视图。 因此,您可以看到所有输出都完全相同,包括错误代码和可能遇到的任何异常。 所以,从这里开始,添加键值,添加一个不存在的键,这里的输出相同。 因此,将项目添加到测试中,这也是相同的输出,获取项目,项目六,你知道,这也是成功的,错误。 因此,您可以并排查看,这与 NCache, 正确的。

所以,在最后,我会向你展示一些事件。 所以,它也在使用区域,对。 所以,区域用例就在这里,你会看到相同的输出 NCache 也是。 因此,清除区域、添加区域、删除区域测试实际上完全按照应有的方式执行。 所以,这是我们能够实现这一目标的快速演示。

让我向您展示其中涉及的步骤。 现在我要关闭它,顺便说一下,你有所有的监控,我应该展示这些,但让我只展示我们执行的步骤。 我们所做的只是,我们添加了一个 NuGet 包,为此实际上让我一步一步完成。 所以,你真正需要做的是,这是你的 App Fabric 控制台 UI。 所以,它正在使用 AppFabric 在那一刻。

因此,您需要做的第一件事是添加一个 NuGet 包。 所以,如果你去管理 NuGet 包,那么,你可以看到一些已安装的 NuGet 包,或者你可以浏览并查看一些让我们看看 AppFabric NCache. 如果,我点击这个,安装它。 所以,这是我们的第一步。

所以,如果我回到这里,在迁移选项中,没有代码更改选项,你需要做的第一件事就是介绍我们的 NuGet 包,它是 AppFabric.包装。NCache 然后下一步就是替换 Microsoft.ApplicationServer.缓存; 命名空间与 Alachisoft.NCache.数据.缓存; 这是包装组件和 NCache 将负责从那时起的所有电话。

NCache 包装方法

  • 下载 NCache AppFarbric 的包装器
  • 地址 NCache 包装 Nuget 包
    AppFabric.Wrapper.NCache
  • 更换 AppFabric 命名空间与 NCache 包装
    /*Replace*/
    using Microsoft.ApplicationServer.Caching; 
    /*with */
    using Alachisoft.NCache.Data.Caching;
  • 运行和测试应用程序

让我在你面前做这件事。 所以,这是样本,它是原生的 AppFabric 样本。 我们已经安装了 NuGet。 它仍在进行中。

快速的问题我把你的方式与这个。 问题是,包装器支持按标签获取项目吗?

是的。 得到,你知道, AppFabric 有地区,对。 所以,如果你在使用区域 AppFabric,所以,我们将使用标签,然后使用组来支持它,但如果你想使用 NCache 标签,对。 因此,您希望扩展缓存使用,这也是网络研讨会中的一个主题,在这种情况下,您可以直接使用我们的 API。 因此,使用包装器来支持您已经通过区域拥有的东西,标签在幕后使用,然后如果您想使用专门提供的标签 NCache, NCache API。 所以可以直接使用 NCache API 也是如此。 所以,我希望能回答你的问题。

所以,我将一一介绍,对,在这​​里简单地使用这张幻灯片,所以,我们需要使用 Alachisoft.NCache.数据.缓存; 对,所以,这就是这里的想法。 所以,我将通过这个,添加缓存。 没有任何参考 AppFabric 但是这个有。 所以,你需要做的就是,包括这个名字空间 Alachisoft.NCache.数据.缓存; 就是这样。

所以,NuGet 包在这里添加了一堆资源 NCache,你知道,Data.Caching 是包装器,然后 NCache 定期集会,所有这些都是您所需要的。 NuGet 正在添加 NCache 客户端资源到您的应用程序中,然后您一一进行,然后开始替换它。

让我回到这里复制这个,这样无论你在哪里找到 AppFabric 参考,例如,在这里,将其替换为 NCache 我在你面前这样做是为了让你看到它是多么容易。 所以,我们继续前进。 我很抱歉我的坏,使用 Alachisoft.NCache.数据.缓存; 让我们重复一遍。 有一个错字,所以,我想我也摆脱了它。 好的。 所以,我将继续进行其他测试。 这可以。 清除区域很好,创建区域很好。 所以,所有的区域测试都没有使用任何直接引用,但是我们有标签测试。 所以,我也会在 GitHub 上发布这个示例。 顺便说一句,我们的 NuGet 已经上线,包含最新的服务包信息,但我会在 . 所以,我希望我已经完成了所有。 让我重建这个。 如果有任何错误,我会去专门解决这些问题。 所以,在这我认为。 好的。 所以,让我验证一下我使用的是正确的包装器。

好的。 所以,一旦你完成了这个,告诉我,你知道,我想我错过了一些,但是一旦你完成了这个,你需要回到这里并添加你的客户端连接设置。 例如,在我的例子中,就是这个盒子,101,这是我自己的盒子,配置必须有缓存的名称。

例如,我们有“democache”。 因此,我将向您展示使用本地缓存进行本地测试,但您也可以始终使用远程缓存。 例如,为此我可以在此处使用此缓存。 让我把我的盒子添加为客户端,对了再添加这个,我的盒子有一个客户端节点,比如101是客户端机器。

好的。 所以,我现在有了所有的设置。 所以,我可以使用 client.nc conf,也可以从这里指向 107 作为客户端框。

对。 所以,这是一回事,然后应用程序配置需要指向缓存的名称。 所以,我不打算在这里改变任何东西。 现在让我用我的实际缓存运行这个示例。 它建得很好。 之后我就运行它。 一旦它完成,我将把它作为一个启动项目。 启动一个项目,然后让我们运行它。

所以,它本质上是一个三步过程。 您可以包括我们的 NuGet,替换您的 AppFabric 库,ApplicationServer.Caching 与 Alachisoft. NCache.Data.缓存。 重建应用程序。 确保没有错误。 使用我们最新的 NuGet 包并更新 client.nc conf 以指向您刚刚选择的服务器,在这种情况下,我们有一个 client.nc conf 文件,该文件是通过服务器添加的。 现在您已经配置了一个集群。 只要指向那台服务器,如果我现在回到这里,让我监控它并让我关闭压力测试工具。 对。 所以,我们应该从应用程序本身显示统计信息,对吧。

所以总的来说,这就是如何迁移和使用我们的包装方法的生命周期。

直接 NCache API调用

让我也向您展示直接 API 调用的用法。 现在有一个问题的第二种方法以及如果我们使用会发生什么 NCache 标签或 NCache 特征? 因此,我们有很多可用的高级功能。 所以,你可以直接 NCache 在您的之上的 API 调用 AppFabric 应用。 因此,为此,我建议您使用我们的帮助文档作为指南,这是我们的直接 API。 所以,你需要做的就是 ICache 缓存 = CacheManager.GetCache 并获取缓存句柄,然后开始使用 NCache API,为此您需要做的就是使用我们的 SDK,我们有一个示例应用程序,让您能够将所有这些添加到您拥有的任何通用应用程序中。

窥视 NCache APIs

  • 连接和断开缓存
    ICache cache = CacheManager.GetCache("myDistributedCache");
    cache.Dispose();
    
  • 从缓存中读取
    Employee employee = cache.Get<Employee>("Employee:1000"); 
    bool isPresent = cache.Contains("Employee:1000");
  • 添加到缓存
    cache.Add("Employee:1000", employee);
    cache.AddAsync("Employee:1000", employee);
    
    cache.Insert("Employee:1000", employee);
    cache.InsertAsync("Employee:1000", employee);
  • 从缓存中删除
    Employee employee = (Employee) cache.Remove("Employee:1000");
    cache.RemoveAsync("Employee:1000");

因此,即使使用包装器方法的应用程序也可以扩展该用法,然后您开始使用 NCache 稍后阶段的 API 也是如此。

所以,如果我打开样品,我会告诉你 NCache 样品。 Basic Operations 是一个非常简单的示例应用程序,它可以完成工作。 这样,这个基本的操作示例就准备好了。 它有一个非常简单的方法,基本操作,所以,你需要做的就是添加 Alachisoft.NCache。客户 图书馆。

所以,就像我说的,你可以用这个作为参考,无论你在哪里 AppFabric,例如,如果我打开批量获取测试,您可以在此处包含此名称空间,对,在其中,让我在实际需要它的表单中实际使用它。 所以,请多多包涵。 让我找到应该在哪里添加它,因为我不想更改示例中的任何内容。 对,我认为它只是在使用 AppFabric 包装器测试在它之上。 所以,我认为,我应该坚持这个基本的操作样本。 对。 因此,这是我们的 ICache 类缓存,然后您可以使用 Create New Customer,这是您的对象,然后您可以说 Add Object To the Cache,这是您的实现、自定义实现,但这就是您将如何使用 NCache 蜜蜂。

您可以构造一个缓存项,然后调用 缓存.添加 这代表 NCache,你知道,API Alachisoft 缓存对象。 所以,这是 Alachisoft.NCache.Client.ICache.

因此,它返回一个缓存句柄并允许您使用 NCache 其之上的 API。 所以,就像我提到的那样,您可以从通过包装器迁移开始,然后您可以在其之上使用我们的扩展 API,然后有很多可用的文档资源,您可以在其中查看如何 AppFabric API 的外观和方式 NCache 蜜蜂。 所以,如果你真的想停止使用 AppFabric 并开始使用 NCache API,您可以从头开始,然后使用这种方法,或者您可以使用并行方法,您可以使用包装器轻松迁移,然后通过使用在其之上进行扩展 NCache 蜜蜂。

直接 NCache API调用

之间的一些 API 更改 NCache 和 AppFabric

ASP.NET 缓存与 NCache

我们已经这样做了。 所以 ASP.NET 会话缓存,您只需更改提供程序,以便您可以提供 Web 配置更改以指向 NCache 作为会话存储和输出,您可以指向 NCache 作为输出缓存提供程序。 我们在这方面也有详细的帮助文档。 例如,如果你说 NCache 会话缓存,它将指向我们的会话状态提供程序,同样您也可以查找输出缓存。 对,所以,这就是您需要在 Web 配置中修改的内容。

<configuration>
  ...
  <sessionState cookieless="false"
                regenerateExpiredSessionId="true"
                mode="Custom"
                customProvider="NCacheSessionProvider"
                timeout="20">
    <providers>
      <add name="NCacheSessionProvider"
          type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
           cacheName="demoClusteredCache"
           sessionAppId="demoApp"
           exceptionsEnabled="true"
           writeExceptionsToEventLog="false"
           enableLogs="false"
           enableSessionLocking="true"
           sessionLockingRetry="-1"
           emptySessionWhenLocked="false" />       
    </providers>

  </sessionState>
...
</configuration>

输出缓存也是如此,就在这里。 因此,如果我提供提供程序概述,这就是您需要在应用程序中添加的内容,以提高 App Fabric 输出缓存 NCache 输出缓存。

<!-- caching section group -->
<caching>
  <outputCache defaultProvider ="NOutputCacheProvider">
    <providers>
    <add name="NOutputCacheProvider" 
         type= "Alachisoft.NCache.OutputCacheProvider.NOutputCacheProvider, Alachisoft.NCache.OutputCacheProvider, 
         Version=x.x.x.x, Culture=neutral, PublicKeyToken=cff5926ed6a53769" 
         cacheName="demoClusteredCache" 
         exceptionsEnabled="false"enableDetailLogs="false" 
         enableLogs="true" 
         writeExceptionsToEventLog="false"/>"
    </providers>
  </outputCache>
</caching>

而且,在左侧,您可以看到列表 NCache 很大。 多站点会话 支持, 查看状态 支持提供者,但在 AppFabric. 输出缓存 带有自定义钩子是一个独特的功能 NCache. 同样,我们有 SignalR Backplane, ASP.NET Core 响应缓存, ASP.NET Core SignalR Backplane. 所以,这个列表非常广泛,因为我们正在积极更新我们的功能集,而不是 AppFabric.

广域网复制

而且,一般来说,你知道, NCache 与 100% 对等架构 AppFabric. 相比之下,许多缓存拓扑,您可以查看。 WAN 复制可用。 多数据中心支持可用,超出 NCache,您可以使用主动-被动、主动-主动或 3 个以上的主动-主动数据中心。

多数据中心支持:WAN 复制

我们有大量的客户,我们已经讨论过支持它,其中 NCache 正在积极部署在 Windows 和 .NET 环境中 所以,我认为今天的会议基本结束了。 如果有任何问题,请告诉我。

所以,我有一个问题要问你,罗恩。 问题在我们的 AppFabric 我们拥有的缓存客户端包装器。 我们通过 API 和 app.config 提供所有集群节点、端口、超时设置等。 现在通过使用包装器,我们可以通过 API 和配置提供相同的功能吗?

是的,你可以,因为一般来说,我们也有内联参数,对吧。 因此,包装器的设计方式允许您以最少的代码更改和配置更改连接到缓存。 所以,就是这样设计的,对。 所以,这就是为什么我想让它看起来像是一个非常容易迁移的选择。 因此,我们只向您展示了配置级别的更改,但如果您有兴趣提供内联的任何内容,我们有 init 参数。 因此,我们有初始化参数,允许您提供服务器列表、服务器 1、服务器 2、服务器 3 端口。 所以,你看到的所有客户端设置都是 client.ncconf 的一部分,让我在这里打开。 因此,这些是您可以在应用程序代码中指定的配置设置。 所以,这是一种可能。

因此,我们的一位与会者询问了一些性能信息。 比如带宽。

NCache 是非常可扩展的,它有能力让你的应用程序实现,你知道,100% 线性可扩展性,对。 因此,您可以添加越来越多的服务器,这只会增加请求处理能力。 因此,如果您只是想要一个通用的想法,我强烈建议您查看我们的基准。 让我告诉你这个。 我们发布了我们的基准,您知道,每秒吞吐量操作仅需 5 NCache 服务器,我们能够达到每秒 2 万个请求。 是的,所以,这是你可以查看的东西,你也可以从这里看到,我们只使用了 5 NCache 服务器。 有个 视频演示 这也是。 所以,如果你想回顾这个,有一个 白皮书 然后是这个测试的视频现场演示,我们从两台服务器开始,然后我们能够实现一些吞吐量和请求处理能力,然后我们能够通过增加越来越多的负载来增加服务器的数量。 仅使用 2 个节点集群,我们就能够实现每秒 5 万次操作。

因此,就服务器资源而言,如果您的问题更侧重于需要哪些带宽或服务器资源,这些是 AWS 服务器,非常高端的服务器,因为我们真的想展示您的容量或延伸可以实现 NCache. 因此,我们能够将服务器扩展到极限,然后我们能够每秒获得 2 万个请求。 但是您也可以使用具有多达 8 个内核的 Web 服务器类型的配置,以及 1 个内存要求高达 16 Gigs 或更多的千兆网络接口卡。 因此,8 Gigs 也可以,但我们推荐 16 Gigs。 因此,您有足够的内存来托管您的数据。

为什么 NCache 比更好的解决方案 Redis?

所以基本上,如果我必须给出前五个原因,首先是 .NET 与非本地 .NET。 Redis 与 Windows 不太兼容。 它有一个移植版本,由第三方 Microsoft Open Tech 支持。 Redis 实验室或 Redis 开源自己建议不要使用 Redis 在 Windows 平台上。 所以,相比 AppFabric NCache 更合适。 主要是因为与 AppFabric & Redis 不是。 Redis 一般来说,它更像是一个基于 Linux 的产品。 然而 NCache 是 Windows 以及基于 Linux 的产品。

存在许多高可用性问题 Redis. Redis 与集群相比,集群不是 100% 的点对点架构 NCache. NCache 是一个完全对等架构的缓存集群,您可以在其中使任何服务器脱机。 它不会影响连接到它的缓存客户端,也不会给您带来任何数据丢失。 然后很多功能都丢失了 Redis. 比如客户端缓存不存在。 他们最近推出了它,但它非常基础。 我们从 2008 年开始就有客户端缓存,对吧。 所以,这是一个非常古老的功能,作为 NCache. 桥接、服务器端代码 SQL Like Searching、Read-Through、Write-Through handlers、Cache Loader,所有这些功能在 Redis 我希望您快速浏览一份比较文件,该文件发布在我们的 比较页面. 所以,你可以看到 Azure Redis vs NCache, Redis vs NCache 摘要差异, Redis vs NCache (滑梯) 然后是一些关于的通用信息 NCache.

因此,让我快速向您展示这一点,如果有任何问题,请告诉我。 我已经注册了,所以,让我登录。当然。 一个后续问题是关于异步复制的问题。

他们是否可以假设异步复制行为是安全的,是否有保证?

它是,它是……,所以,你知道的。 如果它在两者之间失败(这是一种非常罕见的情况),您可能会丢失该更新,但它非常快。 我们有一个专门的线程。 让我给你看图,然后回到第一个问题。 所以,让我们先解决这个问题。 因此,服务器 1 活动分区,只要您的应用程序在此处添加内容,它就会返回 NCache 负责在备份中更新它,并且您有异步和同步选项。

缓存拓扑:分区和分区副本缓存

所以,异步,它非常快。 它在亚毫秒内,如果您可以重现在服务器 1 上触发呼叫并且在复制此服务器时出现故障然后您无法获得更新的场景,我将非常高兴。 这是一个非常罕见的场景 NCache. 甚至我们的 QA 团队也非常努力地重现这一点,但他们无法做到。 因此,在亚毫秒级延迟的情况下,专用线程会更新备份,而当该服务器出现故障时,您可能会丢失更新,但就像我说的那样,这是一种非常罕见的重现场景,我们有同步选项也可用,以适应这种情况。 如果您非常担心需要一直更新备份,您可以使用同步更新,客户端一次更新活动和备份。 这是一个事务操作。 如果它在两者之间失败,它将回滚整个操作。 因此,如果您的问题集中于此,那是非常安全的。

所以回到 Redis,这是 Azure Redis vs NCache. 因此,您可以看到功能级别比较,您可以看到 Azure 所在的列表 Redis 在所有这些方面发挥部分作用,有限的支持。 因此,部分支持高可用性,缓存拓扑受到限制, 广域网复制 非常有限, ASP.NET 缓存 特征, 对象缓存 特征, 同步 功能完全缺失 Redis 如果你正在使用 NCache 对于对象缓存,提供这些同步功能非常有意义。

SQL Like 搜索 不见了, 数据分组 丢失,服务器端代码完全丢失,甚至不是 .NET,因为 Redis 不是用 .NET 编写的。 所以,名单还在继续。

问题是:所以,我知道 NCache 原生于 Windows 并与 Linux 相比 Redis 更好,但是,如何 NCache 在 Linux 上比较 Redis 在 Linux 上?

相同的功能集,相同的支持,通过支持 .NET Core 在 Linux 上可用。 所以, NCache 是,它不仅仅是 Windows 产品,与 Redis。 哪里 Redis 主要是面向Linux的产品。 NCache 是Windows和Linux。 因此,您在此处看到的任何功能集都完全支持 Linux 环境。 一切 .NET Core 在 Windows 上发布,所有 Linux 都彼此相提并论。 我们有我们的自定义监控,以适应 Linux 的 PerfMon 计数器问题,但除此之外,您所看到的所有功能集,这种比较非常有效,一切都适用于 Linux 环境。 我更专注于 Windows,因为 Redis 通常完全缺乏,你知道,Windows 支持。 但是,就目前而言, NCache 就我们而言,我们的 Windows 产品和 Linux 产品是完全一样的。 所以,我们讨论过的所有功能,辩论过 NCache 在 Linux 环境中也是一个明显的赢家,事实上,随着更新的部署,越来越多的客户采用 .NET Core 在他们的应用程序中,他们更喜欢使用 NCache 在 Linux 环境中。 因为,从许可的角度来看,从开源的角度来看,它更兼容且更易于使用,相比之下,Linux 更容易。 所以,我们的 NCache 服务器,位于 Linux 服务器上,通过 .NET Core 是当今非常普遍的做法。

我们有 Docker 支持吗?

是的,我们当然愿意。 我们怎么能没有 Docker 支持 NCache. 如果您访问我们的下载页面,您会找到有关 Docker 的部分。 我们有 .NET Core Docker 映像,在 Linux 上可用,然后我们有 .NET Framework Windows,然后我们也有适用于两者的 Docker 文件。 因此,对于 Enterprise、Professional、Open Source,您可以使用我们的,顺便说一下,我们有意保留 .NET Core 仅适用于 Linux 的图像,因为这是更常见的图像,事实上您可以使用我们的 泊坞窗图像 在任何 Kubernetes 平台上也是如此。 如 开班,如 Azure Kubernetes服务, 弹性Kubernetes服务 AWS 和 Google Kubernetes Service 也提供。 所以,这很常见。 它在应用程序部署中非常流行。 因此,您可以直接从我们的网站下载或访问 Docker中心 对于这个问题。

请确认,如果这回答了您的问题。 如果还有更多问题,请告诉我。 还有其他人吗? 即使您现在无法解决所有问题,我相信我们已经收到很多问题,但您始终可以通过电子邮件发送 support@alachisoft.com. 如果您对功能电子邮件有任何技术疑问或问题 support@alachisoft.com. 我们的支持团队将回答您的所有问题、您的任何想法、用例问题等。

而且,如果您有兴趣获得 NCache 开始了,我们确实有两个月的免费时间 NCache Enterprise 免费试用版可供您下载,然后在您的环境中使用,如果您愿意,可以通过以下方式联系我们 support@alachisoft.com or sales@alachisoft.com. 我们将帮助您进行设置,并让我们知道您正在处理哪些用例? 您对哪些功能感兴趣? 我们将确保您在技术方面绝对满意。

我们还有一个问题,我们可以得到演示幻灯片吗?

当然,这个网络研讨会录音不仅会发布,所以一定要在您的电子邮件中发布,而且我们也可以将幻灯片发布给您,特别是给您。 如果您愿意或其他人想要幻灯片,请立即索取。 我会确保每个人都能拿到幻灯片。

如果没有更多问题,请记住,您可以随时与我们联系。 下载 NCache Enterprise,如果你还没有并且肯定玩过它。 如果您需要帮助在您的环境中进行设置,请务必与我们联系。

接下来做什么?

 

联系我们

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