用于多数据中心部署的 WAN 复制 NCache

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

该网络研讨会将向您展示您需要了解的有关 NCache 跨数据中心缓存 WAN 复制的桥接功能。

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

  • NCache用于 WAN 复制的桥接功能
  • NCache 桥接拓扑(主动-主动、主动-被动、3+主动-主动数据中心)
  • 高级桥功能:
    • 桥接高可用性和故障转移
    • 动态冲突解决器
    • 并行和批量异步复制
    • 队列优化
  • 队列多站点会话功能
  • 桥接性能/调试监控选项

今天的网络研讨会主题将是用于多数据中心部署的 WAN 复制,使用 NCache. 在今天的网络研讨会中,我们将介绍 NCache的桥梁功能。 其中还包括 NCache的网桥拓扑,先进的网桥功能 NCache 有,排队多站点会话,以及桥接性能和调试监控选项。

今天我们列出了一个非常重要的话题。 具体来说,对于部署在多个数据中心的应用程序。 这些可能是出于各种原因。 例如,您需要一个 DR 站点,您需要主动-主动多数据中心部署,或者它可能是您需要的东到西数据迁移。

所以,我们有一个 广域网复制功能 可用,在我们的桥拓扑的帮助下,我将介绍所有细节。 如何在打开 WAN 复制时使用对象缓存。 将它用于主动-被动、主动-主动和多主动-主动数据中心部署。 所以,我们有很多东西要讲。 我相信每个人都能看到我的屏幕并听到我的声音。 如果我可以通过 GoTo Meeting 问题和答案选项卡获得快速确认,那将非常好,然后我们将快速开始演示。 所以,请确认,如果每个人都可以看到我们的屏幕,这里没问题。

简介 NCache

所以,我将从关于为什么需要分布式缓存系统的非常基本的信息开始,例如 NCache? 因此,通常情况下,是应用程序性能和可扩展性瓶颈导致了问题,限制了您的应用程序以更快、更可靠的方式执行。

可扩展性问题

您的应用程序层是非常可扩展的。 您可以拥有 Web 应用程序或后端应用程序。 您始终可以创建一个 Web 场或应用程序服务器场,您的应用程序可以部署在多个服务器上。 您的负载可以分配。 多台服务器有助于并行处理所有这些应用程序请求,相互结合,但所有这些应用程序都需要与后端数据库通信,这通常是争用的来源。 数据库成为应用程序的性能和可扩展性瓶颈,因为您无法横向扩展数据库服务器及其非常昂贵的资源。 所以,你总是可以扩大规模,但是你可以扩大多少数据库服务器是有限制的? NoSQL 通常不是它的答案,因为您需要重新构建您的应用程序。 您需要停止使用我们的关系数据库并开始使用 NoSQL 数据源为了使用它,我们还有一个产品叫做 NosDB 这是一个 NoSQL database 但我们正在计划一种不同的方式来处理这个问题,那就是通过分布式缓存系统。

所以,首先,这个可扩展性问题的解决方案非常简单,你开始使用内存分布式缓存系统。 与磁盘相比,它超级快,因为它在内存中。 因此,您的应用程序的性能将在您插入后立即得到改善 NCache.

其次,它是一组服务器。 这是一个缓存集群。 它不仅仅是像数据库这样的单一来源。 您有多个服务器加入了缓存集群。 因此,它是一个合乎逻辑的存储,您知道,它由您可以选择添加的许多服务器池化。 与您的关系数据库相比,这使得它非常具有可扩展性。 您可以从 2 个服务器开始,并且可以在运行时添加更多服务器。 因此,它使它越来越具有可扩展性,实际上是线性可扩展的,您可以在其中添加更多服务器,从而不断增加您的请求处理能力 NCache. 好东西 NCache 就是你除了使用后端数据库之外,还使用关系数据库。 有许多功能可以补充您对来自后端数据库的数据的使用。 所以,你总是可以使用 NCache 与您的关系数据库一起使用。 它不是您的关系数据源的替代品。 一些可扩展性数字。

可扩展性数字

NCache 非常可扩展,当您添加更多服务器时 NCache 允许您处理越来越多的请求 NCache 簇。 我们最近在我们的 QA 环境中进行了这些测试。 我们使用我们的 AWS 实验室,在那里我们不断增加负载,并不断添加更多服务器,最多 5 个 NCache 服务器,这是我们分布式缓存的非常常规的配置。 我们能够实现每秒 2 万个请求,这是一个上升趋势,每当我们添加更多服务器时,我们都会向缓存集群添加更多容量。 对于平均 1 KB 的对象大小,这是您也可以期待的性能 NCache 并且使用更好的硬件,您甚至可以扩展这些数字并获得更好的性能吞吐量 NCache. 顺便说一下这些基准,有一个 白皮书 的网络 电影 演示也发布在我们的网站上。 所以,你也可以看看那个。

一些部署细节。 典型的部署将如何 NCache 看起来像。

缓存部署

这是一个单站点部署 NCache. 如您所见,我们有一个单一站点,在您的情况下,我们谈论它的 WAN 复制方面,显然我们将有不止一个部署,我们将拥有一个单独的数据中心,我们也将拥有 NCache 和部署的应用程序。

因此,通过我们的分布式缓存部署,如图所示,让我们谈谈典型部署的样子。 所以,我们又有了一个服务器团队。 图中显示了 4 到 5 台服务器,这是托管缓存集群的地方​​,如您所见,它位于应用程序和数据库之间。 这里的想法是,您可以将这些源相互结合使用,用于对象缓存,但对于会话缓存,缓存成为您的主要数据源。 因此,您的所有会话都可以存储在 NCache 而且您不必去其他任何地方。 一个非常灵活的部署模型是可用的。 NCache 可以在本地托管。 它可以是物理或虚拟盒子。 它也可以在云中。 它可以是公共云或私有云。 它也可以在 Azure AWS 上,因为我们为这两家云供应商提供了可用的市场映像。 但是,一般来说,任何具有 Windows 或 Linux 并且只有 NCache 是 .NET 或 .NET Core 框架。 所以,这些是先决条件。 它只是 .NET 和 .NET Core 这 NCache 需要作为先决条件。 如果可以的话, NCache 在 Windows 和 Linux 环境上部署非常灵活,就像我说的那样,它也可以是任何环境,可以是,您可以使用 Docker,也可以托管 NCache 在 Kubernetes 集群中,这开辟了许多其他平台。 您可以在 OpenShift 中使用它。 你可以在 Azure Kubernetes 服务中使用它。 你知道,Elastic Kubernetes 服务也是如此。 所以,所有这些,你知道的,平台都配备了 NCache 可以部署在所有这些平台上。

有两种部署选项。 一种是您使用专用缓存层,如图所示,第二种是专用的,您的应用程序在单独的盒子上运行,并且 NCache 在单独的专用层上运行。 我们还有一个共享层,也可以使用该方法,您也可以在其中运行 NCache 在您的申请箱旁边。 因此,无论您的应用程序托管在哪里 NCache 可以托管在它上面。 所以,我相信这很简单。 在多数据中心部署中,您将拥有多个数据中心,并且您将拥有相同的部署 NCache 另一个数据中心也是如此,我们将在接下来的幻灯片中进行介绍注意所有将要发布的问题,我们很乐意为您回答所有这些问题。 说到问题,既然你刚才提到了,我想提出一个问题是,你现在提到 Kubernetes 很简单。 所以,问题是,我们将讨论桥接器,一般来说,所有这些都需要操作系统吗? 你能在 Linux 上运行它吗? 绝对地。 NCache 非常灵活。 如您所见,即使在我们的部署图上也是如此。 你可以看到 NCache 在 Windows 和 Linux 服务器上受支持。 所以,在 Linux 服务器上,你只需要 .NET Core 释放 NCache 我们有服务器和客户端。 所以,如果你想跑 NCache Linux 上 .NET 上的服务器使用 .NET Core 这是可能的,然后您的应用程序可以始终使用我们的 .NET Core 发布并部署在 Windows 和 Linux 上,所以,是的。 惊人的。 我会让你真正了解剩下的部分,稍后我会提出问题。

多数据中心部署 NCache

所以,接下来我们将讨论多数据中心部署 NCache. 现在,如果您的应用程序部署在多个数据中心上,或者您可能有一个活动站点,然后我们有一个用于灾难恢复方案的被动站点。 例如,活动站点出现故障,而您的应用程序要求您始终保持正常运行,如果它是任务关键型应用程序,那么它对您的业务很重要。 站点级别的停机时间会影响您的业务。

NCache 集群的设计方式使其已经配备了高可用性和数据可靠性功能。 因此,在单个站点级别上,如果一台或两台服务器出现故障,例如,如果您丢失了一台服务器, NCache 能够毫无问题地处理该中断。 但是今天我们要讨论的是,如果我们遇到站点级别的中断会发生什么? 或者,我们需要关闭站点进行维护,整个站点都关闭了。 所以,所有的服务器都关闭了。 NCache 甚至有能力处理这种情况,这就是我们今天计划介绍的内容。 那么,让我们谈谈为什么我们需要WAN Replication?

万复制

通常,当您的应用程序需要高可用性时,单站点可能会成为单点故障。 如果您的站点出现故障,您将丢失所有数据,并且您的应用程序用户可能会停机,这可能会影响您的业务,我们已经确定了这一点。 多区域应用程序很慢,如果它们必须通过 WAN 相互通信。 例如,您部署了一个数据中心,您的应用程序部署在美国地区的一个数据中心,然后您有另一个应用程序部署在欧洲或任何其他地区,例如亚洲地区。 因此,在这种情况下,如果您的应用程序数据库位于其中一个数据中心上,则远程站点必须通过网络。 因此,您的网络速度会影响该其他站点的延迟。 您知道,为了处理这种情况,您通常也会跨 WAN 复制数据源,这就是我们推荐的 NCache 同样,那个 NCache 应该被复制。 但是,考虑到您有一个通用数据源,远程站点必须通过 WAN,这可能会对您的性能产​​生影响,因为该站点的数据不是本地数据,数据中心之间的距离也会影响您的吞吐量. 您可以在站点之间传输的数据只有这么多。 因此,这可能会限制您处理请求的能力。

因此,如果您有多区域应用程序并且两个应用程序都处于活动状态,那么这就是两个问题。 请求级别的数据复制也很昂贵。 例如,您不会复制整个数据库,而您的数据源位于一个数据中心。 现在,在我们的远程位置(一个远程的地理位置)上向您的数据库发出请求。 每个数据的请求级复制,你知道,请求单元来到我们的数据源,这将是非常昂贵的,并且会消耗大量的带宽和资源。 因此,您需要一种主动机制,在其中您可以在本地获得数据,这就是为什么您需要缓存的 WAN 复制作为必须的原因。 因此,您的数据从一个数据中心通过网络复制到另一个站点。

一些用例。 为什么,你知道,你可以在哪里使用 WAN 复制?

用例

我们遇到的最常见的是灾难恢复站点。 您有一个活动站点,它为您的主要业务用例提供服务。 这就是您的流量产生和处理的地方。 如果整个网站出现故障怎么办? 你需要一个后备选项,对。 因此,该 DR 站点应该已经提供了可用的数据。 否则,如果它必须返回已经关闭的站点,它就不会处理该数据要求,对吧。 因此,您需要在 DR 站点上提供数据,以便它已经启动并运行。 您只需要将流量转移到该 DR 站点。 您不应该做任何其他事情,只需将您的流量路由到灾难恢复站点,它应该使用与活动站点相同的性能值、相同的性能矩阵。 因此,在失败的情况下,100% 的数据恢复是可能的,在 NCache 广域网复制。

多区域应用程序可以共享数据和负载。 现在,使用 Active-Active 站点,如果您在美国有一个地区,而在世界另一地区(例如欧洲或亚洲)有一个地区。 如果你想要,你知道,来自数据中心的请求应该基于位置亲和性来处理,你可以实现这一点。 现在,来自亚洲的用户可以连接到该区域内离该区域最近的站点,他们也可以使用那里的缓存,并且该缓存与美国地区的另一个缓存同步。 因此,任何反弹的用户。 例如,您需要管理溢出或需要分配容量。 一些用户需要,现在需要反弹到美国地区,因为亚洲地区完全窒息,所以,你总是可以这样做。 因此,在站点级别,您可以根据站点在当时和该时间点处理的容量对您的请求进行负载平衡。 由于缓存数据已经跨数据中心复制,我们将讨论如何实现这一点,因此,您的多区域应用程序能够有效地共享其应用程序数据并共享请求负载,并且它们也可以具有相等的负载共享. 没有进行冗余数据迁移。 它只是基于从一个数据中心反弹到另一个数据中心的请求,您始终可以从已经连接在那里的缓存中获取该数据。

东到西应用程序数据迁移是另一个用例。 例如,亚洲市场比西方市场起步早,对吧。 因此,您的数据趋势通常从东到西。 因此,您的东部站点可以设置我们的缓存并使用时区,数据在数据中心之间移动到西部区域并到达西部。 因此,如果您跨数据中心复制数据、缓存数据,西部地区将能够利用东部地区提供的所有数据。 因此,您可以让东到西数据迁移可用,维护用例是第三个。

第四,我们可以在不停机的情况下部署升级和维护。 这正在成为一个非常紧迫的用例, NCache 也是。 如果您打算升级,您可以使用我们的桥接拓扑在旧版本和新版本之间进行升级。 在旧数据的地方,版本数据可以通过实时升级功能传输到新版本。 它可以在站点之间,例如,您可以使用一个站点并将数据主动复制到被动站点,并且您可以升级、部署新代码、维护性能、在活动站点上进行维护,并且您拥有所有可用的数据和您的流量可以被路由到被动站点。 因此,两个站点都可以始终启动并运行,而不会出现零停机和任何应用程序数据丢失。

NCache 用于 WAN 复制的桥接器

那么,让我们谈谈如何处理它? 该功能的名称是 NCache 桥。 它是同一产品的一部分。 您不需要任何单独的安装。 NCache Enterprise 配备 NCache 网桥拓扑 让我们来谈谈它。

所以,我们的缓存, NCache 桥接功能允许您跨数据中心复制缓存。

ncache-桥

它基于异步复制模型。 它不会在应用程序端引起任何性能下降。 您的缓存应用程序连接到一个数据中心的缓存。 例如,您在这里有客户端,然后您可以创建一个桥接器,该桥接器也是一个主动-被动队列,并将数据异步传输到其他站点。

主动 - 被动

因此,它基于异步复制,因此,数据复制不会降低性能。 它非常可靠。 它是容错的。 它会自动检测连接失败。 它会自动重新连接。 有可用的自动重试选项,因此桥接器也备份在主动-被动队列上。

因此,有一个 Active Bridge 服务器,然后还有一个 Passive Bridge 服务器。 如果 Active Bridge 服务器出现故障,Passive 将立即启动并启动所有复制操作。 它很容易设置,您不需要任何代码更改,也不需要任何额外的安装。 它是同一个产品 Enterprise 的一部分,它提供自己的监控和管理支持,集成到同一个产品中 NCache Enterprise 产品,它支持多种拓扑结构,我将在接下来介绍这些拓扑结构。

所以,我们有三个主要的拓扑。

拓扑结构

我们有主动-被动。 我们有一个主动站点,然后我们有被动站点。 被动站点也接受客户端请求,但数据流是从主动到被动的。 因此,如果您有 DR 站点要求,您可以使用一个站点处于活动状态,连接到网桥,然后您可以让其他站点处于被动状态。 主动站点将数据传输到被动站点。 所以,这是一种单向传输。 术语被动本质上意味着被动站点不将数据传输回主动站点。 它仍在运行,您可以让客户端应用程序利用它。 因此,这不是以任何方式停止的事情。 东向西迁移可以通过主动被动实现。 您的维护和升级用例可以在主动-被动的帮助下处理。

主动-主动拓扑是,当您将一个应用程序部署在两个不同的地理位置并且您希望站点 1 的数据在站点 2 上可用并且站点 2 的数据在站点 1 上可用时。如果您的应用程序需要数据共享要求地理站点,您可以针对在两个数据中心上都有活跃用户的活动-活动。 客户端连接到两个数据中心,并且在两个不同站点之间进行双向复制,然后我们有 3、2+ 或 3+ 主动-主动拓扑,其中我们有一个主投标服务器,但它正在向所有人传输数据站点,并且这些站点也将数据传输回每个其他站点。 因此,必须对所有数据中心应用一个更新,反之亦然。

所以,这是我们的主动-被动。

主动 - 被动

在此,我们有桥接器,它是一个队列,也是主动-被动的。 我们在站点 1 上有缓存集群,您知道,它只是处理客户端请求。 我们这里有 3 台服务器。 它与桥相连。 桥也位于其中一个站点上。 或者在某些情况下,您可以在站点 1 上使用主动网桥,在站点 2 上使用被动网桥服务器。这也是可能的,但我们通常建议您在部署架构中的站点之一上移动网桥。 第二个站点是被动站点,并且被动站点仍然在运行。 只是被动站点不会将数据复制回主动站点。 这是数据传输的一种方式,当我们说这是一个被动站点时,这就是它的全部含义。 您基本上可以在这里运行客户端应用程序,即使在这种状态下它也可以正常工作。 因此,它是数据的复制,主动被动,因此,如果此服务器出现故障,被动将被激活并且它是自动的。 无需更改代码。 一旦我们进入动手部分,我将向您展示如何配置网桥。 所以,这很简单。

一个问题出现了,它与这个主动-被动有关,主要是如果你有一个主动和一个被动站点,你如何激活被动站点? 是手动过程吗? 网站停止了吗? 你是怎样做的? 好的,那么,如果我正确理解了这个问题,被动站点就我们如何激活它而言? 它已经被激活了。 它正在运行,如果我们关闭此站点或者我们想将流量转移到这里,那么您需要将应用程序流量负载转移到此站点。 所以,这里有应用服务器,这里有应用服务器,无论你有什么数据都将在这里传输,这个站点用户可以从缓存本身获得数据。 现在,您始终可以将流量路由到被动站点,并且可以获得所有可用数据。 因此,无需任何步骤即可激活它。 但是,如果您希望该站点也开始将数据传输回活动站点,则可以使用我们的 GUI 工具使其处于活动状态。 因此,就复制而言,如果您希望这将数据复制回活动,那么,您始终可以使其处于活动状态,这是一个运行时过程。 因此,您只需一行,在 GUI 工具中单击一下即可实现这一目标,或者您可以使用我们的 PowerShell 工具来实现这一目标。 但是,如果您的问题是关于使被动节点处于活动状态。 如果有一个手动步骤来让客户端应用程序连接到它并能够使用数据,那么它已经在运行。 如果您开始将流量路由到此缓存集群,您的应用程序就会开始使用它。 因此,在您的负载均衡器中。 您关闭此站点并将所有流量路由到已启动并运行的可用站点,您可以获取/利用正在复制的所有数据。

所以,主动-主动,它再次基于相同的原则。 我们在其中一个站点上有桥梁。

主动-主动

我们有缓存 1,缓存 2。两个站点都是活动的,甚至被动拓扑也可以通过右键单击使其变为活动状态,在这种情况下,来自站点 1 缓存的数据被传输到站点 2,从缓存异步传输到网桥从网桥到缓存,然后类似地,站点 2 也将数据传输回站点 1。

3+主动-主动

3+ 主动-主动数据中心,我们有三个或多个主动-主动,我们有一个站点作为桥接服务器。 我们还可以有一个备用站点作为桥接器。 我们也可以有一个备用网桥站点。 但是,一般来说,我们将拥有一个托管的站点,该站点将托管桥接,然后该站点将数据传输到其他站点,类似地,站点 2 通过桥接将数据传输到站点 1 和站点 3。对于活动-active,我们有基于时间的冲突解决方案,因此,最后更新获胜。 我们使用的所有数据结构都是无冲突的。 这些是无冲突的数据类型。 没有竞争条件或任何您知道的数据一致性问题,因为最后一次更新将被全面应用于缓存集群。 所以, NCache 管理同一密钥是否有两个更新, NCache 将对此进行评估,并允许您建立自己的冲突解决方案,如果这是一个要求。 因此,它被管理为 NCache 拓扑。

因此,这里快速浏览一下我们的网桥配置。

网桥配置

我们有 NCache 桥接配置。 NCache 桥是名字,然后我们有隆多nCache 环境 1,因此,您也可以拥有多个同名缓存。 NewYorkCache 和这些是相连的。

动手演示 NCache

那么,让我实际向您展示所有这些操作,如何配置网桥? 如何开始使用它,然后我们将实际向您展示对象缓存和会话缓存应用程序。 在您了解 Ron 之前,我在上一张幻灯片中提出了一个问题,其中包含代码,问题是为了建立桥接所涉及的代码更改是什么? 他们是否需要编写任何代码才能通过网桥复制数据? 一点也不。 我们不需要任何代码。 这只是一个配置。 因此,您在数据中心 1 上拥有缓存 1,在数据中心 2 上拥有缓存 2。您只需配置网桥以及应用程序已添加的任何数据 NCache,将通过桥自动复制。 因此,负责所有复制是桥接器的责任。 您不需要显式编写任何代码来跨数据中心复制数据,当我们说数据类型时,冲突解决方案也是默认实现的,这是基于时间的,但如果您想实现自己的冲突解决,如果您的业务需求是评估对象,以防出现多个更新,在这种情况下,您可以实现该接口。 但就数据的复制而言,这是桥的责任。 您不必为此编写任何代码。

创建缓存

所以,让我快点开始吧,我要 创建缓存.

创建缓存

比方说,我将命名为 site1cache,或者让我在 SiteOneCache 中实际使用它。 这只是为了让您了解如何快速开始并能够创建桥梁。 我会保持一切默认,因为 NCache 架构涵盖了所有这些细节。

详情

所以,我将快速浏览它们。 副本缓存的分区,任何集群。 拓扑异步复制。 我将选择 101,看看我是否可以选择 102,如果有的话。 这是我的两台服务器,用于托管网桥。 我会保留所有这些默认值。 启动它并自动启动。 结束。 因此,我的缓存 101 在 102 和 XNUMX 上,这将被创建。 让我们看看它是如何进行的,然后我将继续创建另一个缓存,该缓存将位于单独的一组服务器上,然后我将托管网桥并向您展示这一切将如何运作。 对。 所以,我们已经完全配置了 SiteOneCache。 如您所见,它也开始了。

配置

现在,我将继续创建实际,我将创建另一个缓存,即 SiteTwoCache。 我想,我可以使用它。 我早些时候在玩它。 保持一切简单,这次我将提供一组单独的服务器,以便我们将其完全表示为一个单独的站点。 保持一切默认,顺便说一句,我们的网桥允许您远程管理所有站点,管理和货币工具允许您从一个中心位置实际管理所有站点以及网桥。 所以,如果你有网络访问权限。 如果您的 SiteOne 和 SiteTwo 之间有可用的 WAN 链接,则您基本上可以管理所有内容。 所以,我们在这里有 SiteTwoCache。 SiteOneCache 就在这里。 101 102 代表 SiteOneCache。 107 和 108 代表 SiteTwoCache。 现在,这些也开始了。

两个缓存

如果我单击统计信息,您可以看到这里还没有添加任何对象。 SiteOneCache 或 SiteTwoCache 中没有添加数据,所以,我们很好。 我会简单地运行它。 我想,我有权限问题来查看这个计数器。 我想,我可以,好吧。 因此,您可以看到目前还没有可用的项目。 我现在要借助桥连接这两个缓存,接下来我将对其进行配置。

创建桥梁

所以,在这里我们将创建一个桥梁。

创建桥

所以,我只会说 NCache演示桥。

演示桥

您可以想出任何名称,并且网桥可以在任何服务器上。 例如,在 107。让我把我的盒子给你,你去。 所以,让我在 101 和 102 上创建网桥。我有权限问题。 所以,让我看看我是否可以添加 107,否则,我将只使用一台服务器作为网桥。 这需要打开某些端口。 所以,我认为我的机器打开了所有这些端口。 所以,让我现在只使用 101。 一台服务器就足够了。 备份服务器不存在,但我们可以随时添加它,我将保持一切默认并选择完成。 自动启动网桥,当它启动时,这也是一种可能性,然后如果我单击网桥上的查看详细信息,例如,如果我单击此处,则会打开我们拥有的所有网桥设置。 在这里您可以指定,如果需要,您可以向网桥添加更多节点,还可以添加更多缓存,这些缓存将充当主动或被动。 所以,如果我点击添加,由于某种原因它不会让我实际添加。 请多多包涵。 我们等的时候我可以偷偷问个问题。 当然,请继续。 当然,是的,一个刚刚出现。 这是一个非常简单的问题,它与您如何确保安全的数据传输有关? 我们有可用的加密功能。 因此,如果您启用了缓存级加密或安全性,bridge 将遵守这一点。 因此,无论在 CacheOne 和 CacheTwo 之间传输的任何传输都将被加密,如果您关闭了加密和安全性,请打开。 因此,我们也有 AES、DES、FIPS 兼容的加密提供商。 我们也支持 TLS 1.2。 因此,我们拥有传输级安全性以及有效负载级安全性加密功能。 因此,您可以利用这些功能。

将缓存添加到网桥

好的,所以,我要在这里选择一个缓存,SiteOneCache,对。 所以,我可以选择它是主动的还是被动的。 我将选择 Active 并选择 Finish。

活动缓存

因此,在桥下添加了 SiteOneCache。 现在我要添加第二个缓存,它来自 107 框。 我希望我能够打开服务控制管理器。 我是。 选择它,SiteTwoCache。 让我们再次激活它。 如果您选择被动,它将是站点一到站点二的缓存,但如果您选择主动,它是在站点一到站点二和站点二到站点一的数据复制之间。 让我们选择完成。

监控网桥统计

因此,您还可以查看桥牌计数器。 例如,如果我来到这里并从这里打开桥的统计信息,我也总是可以看到桥的计数器。 让我先开始吧。 由于某种原因,系统反应不是很灵敏,所以,请耐心等待,让我打开统计窗口。 所以,这里是我们的桥梁。 目前还没有任何东西被复制,因为我们根本没有任何负载。

统计

因此,我将通过运行压力测试工具 siteonecache 来模拟一些负载。

站点缓存

由于我们有可用的计数器,因此我们将连接一个客户端并开始模拟。 虽然我们只为 SiteOneCache 运行它,但只要它连接。 所以,请多多包涵。 因此,让我实际打开监视器以查看它是否确实连接到缓存。 我认为是这样。 所以,桥有一些活动,所以,这表明桥现在正在接受请求。 今天环境有点差。 我为此道歉,但让我们回顾一下它是如何进行的。 好的,所以,因为桥正在显示活动。 网桥缓存大小正在增长,每秒接收和接收的操作显示活动。 因此,这实质上意味着它正在跨站点复制数据。 你去吧。 所以,我们在这里有 SiteOneCache。

网站缓存2

如果我们打开,让我实际登录到我们的演示环境,这样,我们就可以从那里看到正确的计数器视图。 我认为这也应该有助于我们审查任何与权限相关的问题,因为实际加载它需要很长时间,而且我也看不到反活动。 好的。 所以,让我在这里启动这个网络管理器。 你去吧。 因此,虽然它之前没有在本地屏幕上显示计数器,但是当我从该服务器登录到 SiteTwoCache 时,Web 管理器完全能够看到所有计数器。 所以,我们已经在积极地进行复制。 我从来没有在两个缓存中运行过任何压力工具,但它正在积极地在这里获取数据。 现在,如果我停止它,或者即使我继续运行它,我现在也可以为 SiteTwoCache 运行压力工具,它也会将数据复制回我的 SiteOneCache。 至此,我们的测试就完成了。 我认为,我也应该坚持在这个环境中进行远程操作,这样我们就可以在两个环境中分别看到活动。 所以,我将只使用这里的siteonecache,这里的桥和那里的sitetwocache。

接下来我将介绍一些与应用程序相关的用例。 所以,如果有任何问题,请告诉我? 这只是一个非常基本的问题,但主要是我们支持哪些环境? 再说一次,我知道你之前提到过几个,但我想你可以把它们都列出来。 就像我说的,唯一的先决条件 NCache 是 .NET 或 .NET Core。 您可以使用 NCache 在 Windows 和 Linux 环境中,无论它们在哪里可用。 它可以是内部部署的,它可以是云环境,它可以是 Azure、AWS、谷歌云或任何其他。 它也可以是托管环境。 它通过 Docker Container 在 Docker 中可用,您可以使用 Docker Images 来托管您的缓存和应用程序。 也支持 Kubernetes。 OpenShift,Kubernetes Service,提到了Azure Kubernetes Service,Elastic Kubernetes Service。 所以,只要你可以使用 Docker,你就可以使用 NCache 在那里,它只是归结为一个简单的事实,如果你有 .NET Core 或 .NET 安装,这是唯一的先决条件 NCache 和 NCache 基本上可以在所有这些平台、所有这些服务器上运行。

运行示例应用程序

所以,让我实际运行,虽然我在这里使用这座桥,但我还有另一个可用的桥。 所以,让我运行另一个应用程序,它就在这里。 这是一个负载平衡的 Web 应用程序。 我们设计它的方式是,我们可以在一个数据中心上路由一个请求,如果该数据中心关闭,后续请求将转到另一个数据中心。 因此,如果您有 NCache 桥打开,您可以使用所有数据。

所以,首先,我会从这里运行它,我们有的地方,让我从这个窗口打开它,就在这里。 所以,让我开始使用对象缓存示例。 对,所以,让我来运行这个 LondonCache 样品,然后让我打开另一个可用的样品。 所以,我将开始使用 Visual Studio。 运行样本。 因此,一旦这些示例运行,我将向您展示您可以根据需要在数据中心之间使用对象缓存和路由请求。

因此,这将为您提供从一个数据中心添加并通过我们的桥从另一个数据中心检索的数据的可视化表示,反之亦然。 好的,所以,这是使用 LondonCache 我在这里配置的。 如果我告诉你真的很快。 所以,我们有一个隆多nCache 我们有 NewYorkCache。 所以,两个缓存代表两个数据中心,然后我们有一个桥,它是 NCache 桥。 它有隆多nCache 作为 CacheOne 活动和 NYCache 作为第二。 所以,我现在要停止这座桥。 分别向您展示这两个缓存,然后我将模拟一些数据并向您展示它是如何在缓存中工作的。 所以,让它运行,一旦它加载,它正在使用 NYKCache,所以,让我也启动它。 既然您知道如何配置网桥,那么通过在任何机器上运行管理工具并能够配置该网桥,将这两个缓存连接在一起非常简单。 所以,请多多包涵。 它会启动一些实例。 今天实在是太慢了,请见谅。 所以,它的构建事件已经完成,所以,它会很快模拟。 对,所以,这是我们的 Main.aspx,在其中我只是在缓存中加载一些对象。 这就是我正在做的。 例如,在右边,所以,如果我向您展示 Main.aspx,它实际上是在加载缓存中的一些对象。 所以,这里的想法是,我们先访问伦敦地区站点,然后我们将访问纽约地区,然后我将向您展示如何同步从伦敦地区添加的数据到纽约,反之亦然,并且视觉表示将使一切变得很多对比起来更清楚。 所以,我们有双方都在运行。 让我在这里打开一个,在这里打开另一个。 现在,如果我添加 10 个项目,它允许。 添加了 10 个项目。 如果我从同一个缓存中检索,则表明此数据是从英国地区添加的,并且此处显示了英国客户。

伦敦

同样,如果我添加来自美国伦敦门户网站的数据,它会添加 10 个项目,然后您会看到所有这 10 个项目,但如果用户退回并且它需要同时提供来自两个区域的数据怎么办? 所以,目前还不可能。 让我在这里再添加 5 个项目,所以,这在数字上是不同的。 所以,我们这里有大约 15 个项目,这里有 10 个项目。 因此,只需单击一下,如果我打开这个桥,对,打开统计信息,桥的第一件事,你知道,实际上就是复制所有已经在缓存中的数据。

统计数据2

因此,缓存已经连接,我们一启动桥接。 我们复制了桥接,复制了 25 个项目。 所以,这正是我们添加的内容。 所以,如果我打开柜台,让我打开 LondonCache,以及 NewYorkCache 和开放统计数据。 出于某种原因,这需要时间,但最终它会打开。 现在,我们在这里有统计数据。

统计数据3

我们已经连接了客户端,并且我们在此处显示了计数值。 因此,它显示了大约 25 个项目,这也是您在 NewYorkCache 上看到的。 现在回到我的应用程序,我会保持相同的应用程序运行,但这次我只是从这里获取数据,我希望看到缓存中的所有项目。 因此,所有 25 个项目、伦敦以及美国项目都在此处检索到,因为桥将数据从 CacheOne 复制到 CacheTwo 并将 CacheTwo 复制到 CacheOne。 因此,这里的 15 个项目现在添加了 10 个项目到 25 个项目,如果我从缓存 USCache 中获取数据,我也会看到美国地区的所有项目。 所以,这又是一个双向传输。 可能不止两个。 它可以是主动-被动。 如示例应用程序所示,可以进行单向传输或主动-主动传输。

现在,添加任何新项目,假设再添加 20 个项目,假设你从这里获取,你会得到 45 个项目,如果我从这里获取这些项目,你会在这里看到 45 个项目。 所以,它是瞬时的。 这里添加的任何项目,比方说,添加数据,这会将计数从 45 增加到 68,但是如果我从这里获取数据,我会从这里获得相同的项目。 所以,看看它在不同站点之间复制数据的速度有多快。 所以,这两个缓存是,而且正如我们所说,这些缓存也在多个服务器上运行。 这样,我们的对象缓存演示就完成了。

跨数据中心的 ASP.NET 会话复制

如果您使用 ASP.NET 会话,让我也向您展示如何处理这个问题。 您知道,在多站点中,您还可以拥有 ASP.NET 会话。 因此,例如,如果这是通过负载均衡器,我只需添加一些项目,这是一个单独的应用程序。 我们有两台 Web 服务器,站点 0 的 Web 服务器和站点 XNUMX 的 Web 服务器,跨数据中心托管相同的应用程序。 所以,我只会添加一些项目。 因此,一旦它添加并让我再次真正停止这座桥。 如果我查看购物车。 因此,我们添加了一项。 假设添加更多项目。 因此,我们提供了一些项目。 现在,如果我去 IIS,你知道,伦敦站点。 让我也开始吧,对吧。 回到这里,你得到了,我真的希望它优先登陆伦敦站点。 我们那里没有任何项目,所以,让我们看看它在哪里结束,然后我们将连接桥,并向您展示您从站点 XNUMX 添加的任何数据都可以在站点 XNUMX 上使用,反之亦然。 第一个请求通常很慢。 我刚开始申请,你去吧。 所以,如果我们到达这里,我们会返回 XNUMX 个项目。 因此,这两个站点是不同步的,尽管无论何时我们启动或停止站点,您的用户会话都会从一个站点跳到另一个站点。

现在,我会简单地打开桥,在同一条线上,就像我们之前所做的那样。 对。 所以,它会运行,它会开始。 再次,我将查看统计数据。 所以,那里有 69 个项目,你知道,这些是来自之前的测试。 但是现在,如果我回到我的网站就在这里。 对。 让我们重新开始。 我们添加了一些项目。 让我们继续这样做。 巧合的是,如果这个或它由于电源故障而停机,或者你把它关闭,如果我把伦敦站点关闭,唯一的站点是,你知道,纽约站点仍在运行,所以,如果我只需点击查看购物车,即可从美国门户网站获得相同的数据项,并从英国网站添加数据。 因此,您可以看到数据从一个站点反弹到另一个站点,而您的用户仍然可以取回数据。 现在,即使站点恢复了,您知道,恢复在线,它也将能够再次从缓存中获取所有会话数据。

多站点 ASP.NET 会话

同样,我们有多站点 ASP.NET 会话。 这是一个单独的功能。 因此,我们建议为您的对象缓存场景使用桥接器,在这种场景中,我们在两个缓存之间发生了大量数据传输,我们已经看到对象缓存和会话缓存都发生了这种情况。

多站点

但是对于会话缓存,我们也有 Multi-Sites ASP.NET 会话缓存用例。 所以,如果我不使用桥。 我仍然可以将这两个站点链接在一起,这是通过一个可用的单独功能,为此我将停止桥接。 一旦停止,我就会回到这里。 让我清除内容,以便我们重新开始,这实际上是同步缓存以进行会话缓存的更好方法。 原因是,会话是一个非常事务性的数据。 因此,您不希望您的会话数据被复制,尽管您的用户不会从一个站点跳到另一个站点,对吧。 因此,如果您的用户主要在一个站点上并且因为它是具有 ASP.NET 会话的人类用户。 因此,在这种情况下,它是一种交易数据,本质上是瞬态的,其他站点不需要它。 它仅基于那里的用户,如果您最终将用户从一个站点更改为另一个站点,则可以通过按需复制数据来进行管理。 您不需要复制所有会话数据。 例如,溢出发生在一个站点更多、容量比其他站点更多的情况下,并且您希望溢出用户转到另一个站点并且他们已经在此处创建了一个会话对象。 因此,您不需要那里的所有会话。 您只需要该特定用户的会话。 因此,为了适应这种情况,我们不建议您打开桥接器。

所以,为此我们有另一个特性叫做 NCache 多站点会话。 因此,多区域 ASP.NET 会话状态提供程序允许您在不使用桥接的情况下实际实现所有这些。

ncache-多区域-aspnet-session-new

因此,您有站点 XNUMX 缓存,其中包含会话,我们有站点 XNUMX 缓存,站点 XNUMX 具有主缓存地址,然后是跨区域的备份缓存地址,同样,站点 XNUMX 缓存具有主缓存和备份概念。 因此,如果用户从一个站点跳转到另一个站点,您的缓存客户端(即您的应用程序服务器)将按需访问另一个站点,他们将从那里获取可用的会话数据,而它所需要的只是其他站点缓存的信息,例如,我们有主缓存和二级缓存,伦敦,纽约,你可以有多个备份缓存。 因此,如果伦敦用户跳到纽约站点,它会回到 LondonCache 并将获取数据并将其保存在那里,以证明我将再次开始使用缓存应用程序。 例如,我在这里添加一些数据,再次使用 LondonCache. 在此处添加项目。 记住我已经清除了缓存中的内容,所以,我们这里没有任何项目,同样让我打开 LondonCache 统计数据。 所以,在第一个请求进来之前,我们这里没有任何项目。比如说,添加。 因此,我们有两个项目,当然名称相同。 因此,这里创建了一个会话。 它尚未在纽约站点上复制,但我们启用了多站点会话功能。 我们不需要桥接,因为我们希望完成按需会话复制。 我们已经完成了这些配置,我们有主缓存和二级缓存,然后我们插入了会话状态提供程序。

所以,它只是基于会话状态提供者设置, NCache 能够在不使用桥接的情况下处理多站点会话用例,并且它是按需的,因此,就会话数据而言,它的效率要高得多。 所以,我现在要做的是,我会通过访问 IIS 将会话请求退回到其他站点,然后我会完全停止伦敦站点。 当然,如果我现在获取它,我会保持缓存正常运行。 首先,它将从美国站点获取数据。 从那里将提供相同的物品,一旦完成,我会添加更多物品并带上 LondonCache 在线备份。 所以,这是一个按需复制,我试图证明这一点。 那么,让我们看看情况如何。 比方说,让我添加一些项目。 所以,让我把这个网站重新上线。 因为它对伦敦网站很有吸引力。 所以,既然我已经将美国用户带回了伦敦站点,让我们看看它是如何进行的。 因此,伦敦站点也提供了相同的项目,并且数据元素是从美国地区添加的。 如果我在这里添加更多项目,我也可以在这里添加这些项目。 让我通过停止这个站点来再次模拟这个失败,让我们看看它是否也反弹到另一边。 我认为以前存在一些与配置相关的问题,但现在该站点已停止。 让我看看购物车。 我期待,你去。 因此,现在可以从美国站点获得相同的会话,记住我没有为这个功能配置任何网桥,它只是多站点会话。 桥停了。 它仍在复制数据,但它是按需提供的。 所以,这实际上完成了它。

对于对象缓存和事务性较少的数据、引用数据和静态数据,我们建议您打开桥接并利用数据中心之间的主动复制,但会话是具有读写请求的事务用例,您知道,组合。 因此,当您将数据从一个数据中心更新到另一个数据中心时,它非常繁重,主数据中心上的数据已经发生变化,并且会话用户不会从一个数据中心反弹到另一个数据中心。 在任何给定时间点,它只会出现在一个站点上。 因此,您不需要主动数据复制。 您可以进行按需复制。 当它从区域一反弹到区域二时,您应该能够从那里获取会话数据,如果它反弹回区域一,您应该再次能够获得可用的会话数据,为此我们建议您使用我们没有桥接的多站点会话功能。

我将快速讨论一些高级功能。

桥梁特征

桥是高度可用的。 它内置了故障转移支持,任何关闭的桥接服务器都不会导致任何停机时间。 桥接队列非常优化。 它很快。 此外,您可以启用一些队列优化功能,这将使其进一步优化。

解决冲突

冲突解决方案内置于其中。 最后更新获胜,但如果您想实现自己的冲突解决方案,那么您可以使用处理程序并注册 NCache. 所以,可以调用这个接口,以防两个key发生冲突,两个更新恰好同时发生。 所以, NCache 会给您控制权,您可以验证该项目的版本并决定哪一个获胜。

在运行时处理灾难. Zack 最初询问如何使被动站点处于活动状态,您只需将流量路由到被动站点。

处理灾难

如果活动站点出现故障并且没有停机时间,并且活动站点恢复时会发生自动重新同步。 在 Active-Active 中,流量被路由到两个站点。 任何站点出现故障都不会产生影响,您只需将流量路由回活动站点,如果活动站点另一个活动站点重新联机,则会自动完成重新同步。 没有延迟,不需要人工干预。 在两个以上或三个或更多 Active-Active 的情况下,如果非网桥活动站点出现故障,您只需使用到任何其他站点的流量即可,不会出现停机或数据丢失。 万一,桥活动站点出现故障,例如,如果我们在这里有一个桥站点。

3+主动-主动

如果出现这种情况,我们也可以选择备用网桥站点。 因此,您可以启用该网桥站点,并为此指定备份网桥以进行复制。 因此,如果整个桥接站点出现故障,复制将停止,但我们也可以选择备份桥接站点。

所以,我想快速涵盖这些方面。 我认为现在应该足够了。 到目前为止有任何问题吗? 扎克,你可以从这里拿起它。 当然,我知道,我们在最后一两分钟运行,所以,我将提出一个关于你刚才修改的问题。 它与解决冲突有关,我认为问题是我们需要实施冲突解决的例子有哪些? 好的。 通常,您的大部分冲突解决方案将默认处理,您无需实施任何操作。 基于时间的冲突解决方案就是您所需要的。 期望您正在运行 Active-Active 站点并且您需要从一个数据中心到另一个数据中心的数据,您需要从一个数据中心到另一个数据中心的更新。 所以,最后一次更新获胜。 但是,如果数据更具体,并且您希望获得数据的价值,这将决定应该在桥中保留什么对象。 例如,对象定义中存在某个版本或某些信息或某个序列号,例如,存在对象的版本属性。 因此,如果发生冲突,您不希望错过该对象。 因此,您通过代码检查该对象,验证版本,需要保留哪个版本,因此,基于上一个版本或最新版本与时间相比,它可能是基于版本的。 它甚至可以基于对象的价值。 例如,有一个数据库记录,并且您有一个代表该数据库并且具有修改时间的对象。 因此,这不是缓存上的更新,而是数据库上的更新,但更新时间恰好是该对象的一部分,如果首先添加该对象然后另一个对象覆盖,那么您不希望最后一次更新数据库要丢失了,对吧? 因此,如果对象内部有任何东西,并且您需要根据属性值做出决定,您需要自己实现冲突解决。 但就像我说的,大多数冲突解决将通过我们的时基默认选项默认处理。 因此,无论哪个更新最后出现,都将作为该项目的最新更新应用,这种情况只会发生,请记住,只有在桥上的队列中同时添加两个更新时,这种冲突解决逻辑才会发挥作用。 对,所以,bridge 同时获得了两个更新。 那么,该选哪一个呢? 站点一添加或更新了一个项目,站点二也添加或更新了同一个项目。 因此,桥现在必须决定将哪一个保留在缓存中或队列中,这也是复制到站点 XNUMX 和站点 XNUMX 的内容。 因为一个人必须战胜另一个人。 因此,默认情况下会实施基于时间的冲突解决方案,这可以帮助您完成大部分案例。

我把它留给你,我们还有什么要讨论的吗? 我认为我们很好。 就内容而言。 好的。 演示完成。 好的,我们在最后一刻运行,所以,感谢所有出来的人。 如果您对此特定网络研讨会有任何疑问,请随时给我们发送电子邮件至 support@alachisoft.com 当然,请访问我们的网站并下载 2 个月的免费试用版 NCache Enterprise 并在您的环境中使用它。 如果您需要帮助入职,您可以联系 support@alachisoft.com 如果您对是否要购买还有任何疑问 NCache 或获取许可信息,请随时联系 sales@alachisoft.com.

接下来做什么?

 

联系我们

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