该网络研讨会将向您展示您需要了解的有关 NCache 跨数据中心缓存 WAN 复制的桥接功能。
以下是本次网络研讨会的内容:
今天的网络研讨会主题将是用于多数据中心部署的 WAN 复制,使用 NCache. 在今天的网络研讨会中,我们将介绍 NCache的桥梁功能。 其中还包括 NCache的网桥拓扑,先进的网桥功能 NCache 有,排队多站点会话,以及桥接性能和调试监控选项。
今天我们列出了一个非常重要的话题。 具体来说,对于部署在多个数据中心的应用程序。 这些可能是出于各种原因。 例如,您需要一个 DR 站点,您需要主动-主动多数据中心部署,或者它可能是您需要的东到西数据迁移。
所以,我们有一个 广域网复制功能 可用,在我们的桥拓扑的帮助下,我将介绍所有细节。 如何在打开 WAN 复制时使用对象缓存。 将它用于主动-被动、主动-主动和多主动-主动数据中心部署。 所以,我们有很多东西要讲。 我相信每个人都能看到我的屏幕并听到我的声音。 如果我可以通过 GoTo Meeting 问题和答案选项卡获得快速确认,那将非常好,然后我们将快速开始演示。 所以,请确认,如果每个人都可以看到我们的屏幕,这里没问题。
所以,我将从关于为什么需要分布式缓存系统的非常基本的信息开始,例如 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 甚至有能力处理这种情况,这就是我们今天计划介绍的内容。 那么,让我们谈谈为什么我们需要WAN Replication?
通常,当您的应用程序需要高可用性时,单站点可能会成为单点故障。 如果您的站点出现故障,您将丢失所有数据,并且您的应用程序用户可能会停机,这可能会影响您的业务,我们已经确定了这一点。 多区域应用程序很慢,如果它们必须通过 WAN 相互通信。 例如,您部署了一个数据中心,您的应用程序部署在美国地区的一个数据中心,然后您有另一个应用程序部署在欧洲或任何其他地区,例如亚洲地区。 因此,在这种情况下,如果您的应用程序数据库位于其中一个数据中心上,则远程站点必须通过网络。 因此,您的网络速度会影响该其他站点的延迟。 您知道,为了处理这种情况,您通常也会跨 WAN 复制数据源,这就是我们推荐的 NCache 同样,那个 NCache 应该被复制。 但是,考虑到您有一个通用数据源,远程站点必须通过 WAN,这可能会对您的性能产生影响,因为该站点的数据不是本地数据,数据中心之间的距离也会影响您的吞吐量. 您可以在站点之间传输的数据只有这么多。 因此,这可能会限制您处理请求的能力。
因此,如果您有多区域应用程序并且两个应用程序都处于活动状态,那么这就是两个问题。 请求级别的数据复制也很昂贵。 例如,您不会复制整个数据库,而您的数据源位于一个数据中心。 现在,在我们的远程位置(一个远程的地理位置)上向您的数据库发出请求。 每个数据的请求级复制,你知道,请求单元来到我们的数据源,这将是非常昂贵的,并且会消耗大量的带宽和资源。 因此,您需要一种主动机制,在其中您可以在本地获得数据,这就是为什么您需要缓存的 WAN 复制作为必须的原因。 因此,您的数据从一个数据中心通过网络复制到另一个站点。
一些用例。 为什么,你知道,你可以在哪里使用 WAN 复制?
我们遇到的最常见的是灾难恢复站点。 您有一个活动站点,它为您的主要业务用例提供服务。 这就是您的流量产生和处理的地方。 如果整个网站出现故障怎么办? 你需要一个后备选项,对。 因此,该 DR 站点应该已经提供了可用的数据。 否则,如果它必须返回已经关闭的站点,它就不会处理该数据要求,对吧。 因此,您需要在 DR 站点上提供数据,以便它已经启动并运行。 您只需要将流量转移到该 DR 站点。 您不应该做任何其他事情,只需将您的流量路由到灾难恢复站点,它应该使用与活动站点相同的性能值、相同的性能矩阵。 因此,在失败的情况下,100% 的数据恢复是可能的,在 NCache 广域网复制。
多区域应用程序可以共享数据和负载。 现在,使用 Active-Active 站点,如果您在美国有一个地区,而在世界另一地区(例如欧洲或亚洲)有一个地区。 如果你想要,你知道,来自数据中心的请求应该基于位置亲和性来处理,你可以实现这一点。 现在,来自亚洲的用户可以连接到该区域内离该区域最近的站点,他们也可以使用那里的缓存,并且该缓存与美国地区的另一个缓存同步。 因此,任何反弹的用户。 例如,您需要管理溢出或需要分配容量。 一些用户需要,现在需要反弹到美国地区,因为亚洲地区完全窒息,所以,你总是可以这样做。 因此,在站点级别,您可以根据站点在当时和该时间点处理的容量对您的请求进行负载平衡。 由于缓存数据已经跨数据中心复制,我们将讨论如何实现这一点,因此,您的多区域应用程序能够有效地共享其应用程序数据并共享请求负载,并且它们也可以具有相等的负载共享. 没有进行冗余数据迁移。 它只是基于从一个数据中心反弹到另一个数据中心的请求,您始终可以从已经连接在那里的缓存中获取该数据。
东到西应用程序数据迁移是另一个用例。 例如,亚洲市场比西方市场起步早,对吧。 因此,您的数据趋势通常从东到西。 因此,您的东部站点可以设置我们的缓存并使用时区,数据在数据中心之间移动到西部区域并到达西部。 因此,如果您跨数据中心复制数据、缓存数据,西部地区将能够利用东部地区提供的所有数据。 因此,您可以让东到西数据迁移可用,维护用例是第三个。
第四,我们可以在不停机的情况下部署升级和维护。 这正在成为一个非常紧迫的用例, NCache 也是。 如果您打算升级,您可以使用我们的桥接拓扑在旧版本和新版本之间进行升级。 在旧数据的地方,版本数据可以通过实时升级功能传输到新版本。 它可以在站点之间,例如,您可以使用一个站点并将数据主动复制到被动站点,并且您可以升级、部署新代码、维护性能、在活动站点上进行维护,并且您拥有所有可用的数据和您的流量可以被路由到被动站点。 因此,两个站点都可以始终启动并运行,而不会出现零停机和任何应用程序数据丢失。
那么,让我们谈谈如何处理它? 该功能的名称是 NCache 桥。 它是同一产品的一部分。 您不需要任何单独的安装。 NCache Enterprise 配备 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+ 主动-主动数据中心,我们有三个或多个主动-主动,我们有一个站点作为桥接服务器。 我们还可以有一个备用站点作为桥接器。 我们也可以有一个备用网桥站点。 但是,一般来说,我们将拥有一个托管的站点,该站点将托管桥接,然后该站点将数据传输到其他站点,类似地,站点 2 通过桥接将数据传输到站点 1 和站点 3。对于活动-active,我们有基于时间的冲突解决方案,因此,最后更新获胜。 我们使用的所有数据结构都是无冲突的。 这些是无冲突的数据类型。 没有竞争条件或任何您知道的数据一致性问题,因为最后一次更新将被全面应用于缓存集群。 所以, NCache 管理同一密钥是否有两个更新, NCache 将对此进行评估,并允许您建立自己的冲突解决方案,如果这是一个要求。 因此,它被管理为 NCache 拓扑。
因此,这里快速浏览一下我们的网桥配置。
我们有 NCache 桥接配置。 NCache 桥是名字,然后我们有隆多nCache 环境 1,因此,您也可以拥有多个同名缓存。 NewYorkCache 和这些是相连的。
那么,让我实际向您展示所有这些操作,如何配置网桥? 如何开始使用它,然后我们将实际向您展示对象缓存和会话缓存应用程序。 在您了解 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 中没有添加数据,所以,我们很好。 我会简单地运行它。 我想,我有权限问题来查看这个计数器。 我想,我可以,好吧。 因此,您可以看到目前还没有可用的项目。 我现在要借助桥连接这两个缓存,接下来我将对其进行配置。
所以,在这里我们将创建一个桥梁。