开发 Azure 微服务和应用服务 NCache

录制的网络研讨会
作者:罗恩·侯赛因和亚当·J·凯勒

优化 Azure 云应用程序的性能和可扩展性以在峰值负载下运行。 使用快速、可扩展的通用数据存储库来改善 Azure 服务应用程序体验,而不会丢失任何数据或会话。

该网络研讨会演示了如何将 Azure 微服务和应用服务与云中的 .NET 分布式缓存集成。

我们将介绍:

  • Azure 微服务和应用服务简介
  • 使用 NuGet 包 NCache 客户端应用资源
  • 制作 NCache 来自 Azure 服务的 API 调用
  • 在 Azure 中创建和部署分布式缓存
  • 使用 Azure 服务的缓存
  • 监视运行 Azure 微服务和应用服务的缓存

我们今天选择的主题是使用 NCache 这是 Azure 服务中的主要分布式缓存系统。 我今天的主要关注点是 Azure 微服务。 我将讨论微服务的一些架构细节。 我将讨论为什么在微服务中需要分布式缓存的一些细节,有哪些限制,然后我还将讨论应用服务 Microsoft Azure Web 应用程序服务项目,您的 Web 应用程序可能还需要分布式缓存系统处理数据,用于会话,输出缓存。 因此,我将重点介绍这些功能。 我今天要介绍的主要议程,本次网络研讨会中的动手部分将专注于部署架构。 分布式缓存的部署方式以及应用程序连接到它的方式。

Azure 微服务和应用服务

所以,首先我将讨论一些关于 Azure 微服务和应用服务的介绍性细节

什么是微服务?

什么是微服务? 因此,这是我们这些天经常听到的一个非常常见的术语。 它是一个平台,由 Microsoft Azure 提供。 有一些 AWS,还有一些第三方提供商。 通常,我只会将其命名为 Akka.NET,这也是 Java 上非常流行的平台,然后他们也将其用于 .NET。 微服务是一个封装客户业务场景的平台,它处理客户在应用程序中遇到的某些问题。 因此,它可以由一个小型工程团队开发。 它可以用任何编程语言编写。

它可能是有状态的,也可能是无状态的,但它在应用程序中是独立的。 因此,它可以独立进行版本控制、实施、部署,然后微服务架构的好处是可以独立扩展。 您不必扩展整个应用程序。 如果应用程序中的某个部分满足这些特性,您可以将其实现为微服务。 您的应用程序可以将其用作微服务资源,然后您可以扩展此特定部分,而不必担心整个应用程序的可伸缩性。 因此,它为您提供了针对应用程序中不同部分的更精细的方法。

我在这里强调了两个共同点,即您的微服务是定义良好的接口协议,并且它们也与其他微服务交互。 然后,它们具有唯一的名称,这是您在 Microsoft Azure 中获得的东西,然后它们需要保持一致并在出现任何故障时可用。 所以,这是微服务的另一个重要特征。 这是我从 Microsoft MSDN 网站复制的内容。 所以,我很确定每个人都知道微服务是什么。 所以,这应该涵盖一些关于微服务的基本细节,好吗?

微软 Azure 服务结构

这是您的应用程序类型它具有服务类型的图表,它可以是有状态的或无状态的。 我已经介绍过了。

微软天蓝色服务结构

还有另一种应用程序类型也可以有自己的微服务,然后它可能会与一些后端数据源进行代码对话,用于配置。 它可能正在调用 Web 服务。 它也可能有一些需要访问的数据,然后它们是,你知道的……这只是微服务架构的一个想法。 可能有多个应用程序,每个应用程序可以有多个微服务,这些微服务又是一个服务器集群,实例集群。 你可以在微服务中有分区。 这主要是一个有状态的微服务。 如果您有多个微服务,您可以选择有状态或无状态微服务。

微软-azure-service-fabric-2

如果它们是有状态的微服务,您将有数据分区,然后有其他分区的副本。 因此,如果任何分区出现故障,您将自动获得备份。 所以,这是 Microsoft Azure 的一部分,这也是微服务架构的一般部分,这也是 Amazon 给你的,Akka.NET 也有同样的问题格式。 因此,微服务是默认在其架构中提供状态的东西。 因此,我将重点介绍您需要分布式缓存的确切位置,例如 NCache. 为什么您需要一个分布式缓存并且存在一些瓶颈,作为本次网络研讨会的一部分,分布式缓存将帮助解决一些问题,我将对此进行介绍。

Azure Web 应用服务简介

然后我还将讨论 Azure Web 应用程序服务。 在 Microsoft Azure 中部署 Web 应用程序更容易。

azure-webapp-services 简介

您不必拥有整个虚拟机。 它实际上减少了您的 DevOps 时间、所需的专业知识数量、花费的时间,这是可以管理的。 因此,您可以在 Microsoft Azure 中部署一个基于实例的应用程序。 它是一个完全隔离的专用环境,适用于您的应用程序。 你可以扩大规模。 您可以托管多个应用程序。 它可以是您的移动应用程序、Web 或您的函数应用程序,无论此时需要哪一个,您都可以使用我们的 Microsoft Azure Web 应用程序服务模型来使用它。

而且,它是高度可扩展的,我已经提到过,隔离是有保证的。 您可以获得安全的网络访问,然后您还可以使用高内存利用率和其他所需的资源。 而且,这是一种过渡,大多数部署都在实际进行,而不是让整个 VM 以 Web 形式或 Web 园场景托管您的应用程序,您必须管理整个 VM,您可以采用基于实例的方法可以部署基于服务的应用程序,它可以是一个典型的 MVC 应用程序,可以使用会话,可以使用数据库调用。 因此,各种常规的 MVC Web 应用程序相关概念,只是部署略有不同。

分布式缓存

现在我们已经定义了 Azure 微服务和 Azure Web 应用程序服务,对吧? 因此,Microsoft Azure 中的微服务是一个服务结构项目,而 Web 应用程序服务是一个应用程序服务项目。 因此,我将重点介绍这方面的细节,并讨论在分布式缓存中使用所需的网络部分。

什么是内存中分布式缓存?

首先,我将讨论一般的分布式缓存概念。

什么是内存分布式缓存

什么是分布式缓存? 分布式缓存是一组廉价的缓存服务,它们汇集在一起​​用于内存,它们的资源用于计算能力,然后是它们的存储能力,在分布式缓存的情况下,内存是提供主存储的内存。 因此,您将所有内存资源汇集到一个逻辑容量中。

然后,您可以在所有缓存服务器之间同步缓存更新。 例如,应用于任何给定服务器的任何更新都应用于所有缓存服务器。 因此,分布式缓存是由多个廉价缓存服务器组成的集群,它们连接在一起形成一个逻辑容量。 您在 Microsoft Azure 中有多个服务器,这些服务器将成为 VM。 所以, NCache 部署在虚拟机上。 这是当前的部署选项。 NCache 也可以部署在docker中吧? 所以,这是另一个部署选项。 因此,缓存服务器在 VM 上运行,但在 Microsoft Azure 中将被视为单独的资源,这就是典型的部署 NCache 服务端配置方面。

分布式缓存的下一个特点是您应该在所有缓存服务器上同步所有缓存更新。 您可以拥有 2 3 4 个缓存服务器,它们应该具有一致的数据视图。 对于连接到它的所有应用程序,数据应该作为相同的状态可见。

然后,随着容量的增长,它应该线性扩展内存和事务,你需要更多的存储更多的资源,你可以简单地引入越来越多的缓存服务器,它应该线性增长。 而且..然后复制是它的另一部分,它应该复制数据,对于如果服务器出现故障而添加的任何数据,它应该自动复制。 复制应该基于操作完成,然后如果服务器出现故障,数据应该可用。

所以,这些是分布式缓存的一些共同特征。

数据存储是可扩展性瓶颈

通常,您的应用程序,无论是应用程序服务、微服务,它们都可能与某些后端数据源通信。 在 Microsoft Azure 中,您可以有一个续集服务器实例,它可以在同一个 V 网络或跨 V 网络上,但您仍然与数据库服务器通信。

数据存储是瓶颈

因此,它可能很慢,可能不是很可扩展。 因此,在 Microsoft Azure 中引入分布式缓存层也更有意义。 而且,我还将讨论有关微服务应用内服务的用例。

NCache 部署

这是一个典型的部署 NCache.

ncache 在 Azure 中部署

因此,在 Microsoft Azure 中,您将拥有可以水平扩展的 VM,您可以创建一个虚拟网络,创建 VM,然后安装 NCache 在这些虚拟机上或使用我们的 Azure 或 AWS 映像。 因此,可以这么说,然后您的应用程序可以连接微服务、API 应用程序、其他 VM 上的典型 IIS 托管应用程序,或者它们可以是应用程序服务,它们都可以连接到此,它可以节省您访问后端数据源的次数。 所以,这就是典型部署的总体思路 NCache 一旦我们继续部署微服务和 Azure 应用程序服务,我将重新讨论这一点。 在云中,这会略有变化。 所以,我们将讨论它。

的三种常见用途 NCache

好的! 这是本次网络研讨会中最重要的幻灯片。 我想强调一下您将在 Microsoft Azure 服务中使用分布式缓存的确切位置,对吗? 因此,通常谈论 Web 应用程序、Web 服务、后端应用程序、窗口服务,它们需要从集中式源访问数据并且它们需要非常快速的存储库。 所以,这是一个典型的用例。 在 Microsoft Azure 中,您已经拥有了一个非常可扩展的平台。 您的应用程序可以线性扩展,这也是 Web 表单和 Web 花园的典型情况。

因此,我列出了一些可以在 Microsoft Azure 中用于服务的重要用例。

应用数据缓存

首先,您可以将其用于数据缓存,这适用于 Microsoft Azure 微服务以及应用服务。 如果有无状态服务,对吧? 因为有状态服务需要它们自己的一组分区,然后你也会有副本,但无状态服务没有副本。 所以,一个重要的方面是你有一个无状态的应用程序,但你仍然希望有数据可靠性,对吧? 因此,在这种情况下,您可以将数据放在分布式缓存中。 分布式缓存通过设计可以涵盖复制方面和高可用性方面。 因此,您的数据甚至可用于无状态微服务。

而且,如果有一个 Web 应用程序可以与后端数据源(例如 SQL 服务器)通信,那么下一个好处可能是在微服务或应用程序服务中。 所以,SQL Server 很慢。 它不是可以处理巨大事务负载的东西。 对此,分布式缓存可以有多个服务器,这些服务器是线性扩展的,并且它们被连接到一个逻辑容量中,对吗? 因此,您可以即时添加越来越多的服务器。 而且,在 Microsoft Azure 中,管理它非常简单。 您可以只生成一个新的虚拟机,并且随着您添加越来越多的缓存服务器,您是否会增加一倍的容量。 因此,数据缓存用例首先在内存中。 因此,它的数据库容量超快,与 Microsoft SQL 服务器相比,它甚至在 Microsoft Azure 中也是一个非常可扩展的平台。 因此,这是您在 Microsoft Azure 应用服务和 Microsoft 用例中获得的两个好处。 你只需要介绍 NCache API 调用,您继续在键值对中添加数据。

ASP.NET 特定缓存

第二个用例特定于 Microsoft Web 应用服务。 它与 ASP.NET 特定的缓存有关。 所以,如果你有一个应用服务,你可以使用 NCache,您的应用服务与之通信的地方 NCache 用于会话以及输出缓存数据。 顺便说一下,它还可以使用对象缓存 API,因为这个用例也适用于 ASP.NET 应用程序服务。 因此,您的会话状态通常将成为要求您需要粘性会话负载平衡的同一应用服务实例的一部分,或者它可能是数据库的一部分。 无论哪种方式,如果它是一个粘性会话,它在您必须具有粘性负载平衡的地方受到限制,这是默认选项。 而且,在数据库方面,它又会变慢,然后它也是单点故障。

使用应用服务,使用 NCache 作为一个会话提供者,首先,它是非常可扩展的。 它非常快,不会出现任何单点故障。 会话在服务器之间复制,因此您可以获得优势,您应该考虑为您的 ASP.NET 应用程序使用分布式缓存。 而且,这也可能是多站点部署,这也是我今天计划介绍的内容,我们将在一个站点中部署一个应用程序与同一站点上的缓存服务器通信,然后它具有通信能力也可以跨站点缓存服务器。 而且,我将重点介绍 Azure 中需要哪些配置,但在 Azure 中这是不可能的 NCache Microsoft Azure 中的分布式缓存产品。

第二个用例是围绕输出缓存,对吧? 因此,您可以在部署为应用服务的 Web 应用程序中使用应用服务中的静态页面。 如果有静态页面,则缓存这些页面的内容。 可以缓存整个页面输出,下次需要访问同一页面时可以使用该页面输出。 所以,这是另一个好处。 这是我在典型的 ASP.NET 性能和可扩展性网络研讨会中介绍的内容,我在其中讨论了优化 ASP.NET 性能的四种不同方法。 因此,相同的概念将应用于 Microsoft Azure 应用程序服务,其中将 Web 应用程序部署为应用程序服务。

Pub/Sub 和运行时数据共享

现在是第三个重要的用例,这对于微服务来说是最重要的一点。 尽管它也适用于应用服务。 您的应用程序服务可能需要一个应用程序服务与另一个应用程序服务通信的数据共享权,或者它可能是两个不同应用程序之间共享的数据。 因此,存在本质上不同但依赖于相同数据的 Web 应用程序。 可能有一个报告应用程序,可能有一个消费者,或者可能有一个产品目录的生产者,然后有另一个应用程序需要依赖它,它需要根据第一个应用程序生成一些报告. 因此,该用例要求您的应用程序在另一个应用程序之间共享数据。 因此,没有任何方法可以使用数据库来共享数据,但这很慢,而且在某些情况下也是单点故障。 分布式缓存更有意义,因为您的应用程序可以在客户端-服务器模型中连接到它。 多个应用程序可以连接到同一个缓存层,然后它们可以使用相同的缓存资源并访问相同的数据,这是您可以打开的。

在 Azure 微服务中,我们需要将其提升到另一个层次。 在 Azure 微服务中,虽然它们是集群的,而且我已经提到它们可以是有状态的和无状态的,对吧? 可能有一个要求,这就是我提到的,你的微服务可能也需要与微服务交互,对吧? 因此,根据设计,微服务架构要求您的服务实例可能需要彼此交互,然后可能需要在彼此之间共享数据。 而且,就微服务平台而言,这是一个非常核心的要求。 我们只需要多个应用程序实例在彼此之间共享数据。 一个微服务发送一些数据,它可用于其他微服务实例,如果它是有状态的,或者您可以让多个应用程序在同一条线上交互,但在两个微服务中这是必须具备的,因此许多第三方提供商都是提供数据共享和发布/订阅模型作为他们产品的一部分,对吗?

因此,在 Microsoft Azure 中,如果您需要处理数据共享,其中一个应用程序与存储通信,并且它具有另一个应用程序所需的数据,另一个微服务实例,那么您需要一个平台来处理它和 NCache 提供以集中方式提供数据的平台。 这是非常快的存储库。 它具有极强的可扩展性,多个微服务实例不同的服务或相同服务的实例可以连接到此缓存,然后他们可以使用其中的数据共享功能。 因此,数据以更快的方式集中提供。

然后我们有基于主题的发布/订阅模型。 我们有消息平台。 因此,可以发送一条消息,它可以是数据驱动的消息,也可以是应用程序驱动的消息或基于主题的消息,其中生产者应用程序是一个将数据发送到缓存的微服务实例,然后将该消息传输给所有接收者在此订户端。 而且,类似地,订阅者在某些情况下也可以是生产者。 因此,您可以在多个 Azure 微服务实例之间使用 pub/sub 消息传递。 它也可以是多个实例之间的事件驱动数据共享。 而且,除此之外,我们还有事件通知和持续查询系统。 它可以是一个 SQL 命令,并且基于该命令,您可以再次定义一个数据集,您可以从中获取数据驱动的消息。 因此,这就是您将考虑在 Microsoft Azure 微服务中使用 Microsoft Azure 分布式缓存的用例。

NCache MS Azure 中的部署方案

然后我还将讨论 Azure Web 应用程序服务。 在 Microsoft Azure 中部署 Web 应用程序更容易。

部署场景

好的。 所以,现在我们有两种情况。 因此,我们最好将所有内容部署在同一资源组或同一虚拟网络中的单个站点的单个区域中,对吗? 所以,我已经讨论过了 NCache 将部署在 Microsoft Azure 中的虚拟机上,而您的应用程序可以是访问这些虚拟机的虚拟机 NCache 或者这些可能是 Azure 服务,我们今天将专注于 Azure 服务。 VM 案例非常典型,您生成一个 VM,转到 iAS,在其中托管您的应用程序,然后让您的应用程序连接到 NCache 运用 NCache API 或会话存储提供程序。 但是,当涉及到服务时,您需要进行一些网络配置。 因此,您的服务与之交谈 NCache.

因此,我们有单站点部署,您的 Azure 服务和 NCache 部署在同一站点的同一区域。 因此,当您部署 Azure 服务时,您需要将其附加到同一个资源组以及同一个虚拟网络。 所以,这是推荐的方法。 你不需要任何中介。 不会有多个跃点不会减慢速度。 因此,这是我们网站的推荐方案。

第二种情况,这也是一个非常有效的情况,您可能有多个站点,对吧? 我们仍然建议您的缓存和您的应用程序、您的微服务应用程序服务应该始终位于它们应该能够相互连接的同一区域。 自从 NCache 是一个 TCP-IP 协议。 因此,它使用 IP 地址和端口进行所有通信,这些都是 TCP-IP 端口。 因此,它需要以您的应用程序就在附近的方式进行部署。 它们相互组合部署。 它们就在附近,它们不是可用的不同啤酒花。 因此,我们建议您将缓存部署在您的应用程序所在的同一站点上,但可能存在使用多站点功能的场景。 您的应用程序可能需要与另一个站点上的缓存通信,或者您的缓存需要相互通信。 所以,我们需要进行站点到站点之间的通信 NCache 以及。

所以,这就是我将讨论这两种情况的议程。 建议使用场景 1,一切都在靠近您的应用程序的单打中。 场景二是您可能有多个站点,并且站点 XNUMX 中的应用程序与站点 XNUMX 上的缓存服务器通信,或者它可能是缓存服务器。 例如,对于 WAN 复制功能,您可以在站点 XNUMX 和站点 XNUMX 缓存之间建立桥接。

场景 1:Azure 服务的单站点部署和 NCache (推荐的)

因此,对于 Azure 服务的单站点部署,我将介绍一些围绕此的详细步骤。 我讲应用开发,你怎么介绍 NCache 在您的应用程序内部调用,我们将为此使用一个服务项目作为参考示例。 好的。 因此,这张图表应该涵盖我计划在本次网络研讨会中涵盖的所有细节。

单站点部署-ncache-天蓝色

我已经提到过 NCache 服务器将成为 Microsoft Azure 中的虚拟机。 对? 因此,您需要处理支持这些虚拟机的虚拟网络,然后 NCache 需要安装在这些应用程序上,然后是部署为应用程序服务的 Web 应用程序,它可以是 API 应用程序,也可以是微服务应用程序,对吗? 它们都是服务实例。 它们不是任何底层的虚拟机。 因此,这也意味着您无法安装 NCache 在这些资源上,您需要将其作为应用程序资源的一部分。 因此,我们将重点介绍一些 NuGet 包。 好的! 所以,我们有网络应用程序,然后我们有 API 应用程序,可能还有微服务和其他应用程序。

因此,这是一个典型的单站点部署,我们有相同的 Azure 虚拟网络托管您的应用程序以及 VMS NCache. 而且,我们真正要做的是在您的 Web 应用程序和您的服务应用程序之间建立一个点到站点 VPN,以及 NCache 服务。 所以,这就是整个网络的样子。 它是我们将实际使用服务项目的同一虚拟网络的一部分。 我们将介绍 NCache 资源然后我们将创建服务器端资源 NCache. 因此,我们的虚拟机启动并运行,然后我们将简单地返回应用程序并将我们的应用程序附加到我们的虚拟网络所在的同一虚拟网络 NCache 虚拟机是存在的。 因此,这只会使其成为一个站点并使用与我们的缓存服务相同的虚拟网络。

单站点部署步骤
单站点部署的步骤 1:创建虚拟机 NCache

所以,让我们来看看这些步骤。

单点步骤1

好的! 第一步是你有 NCache 服务器端并对其进行热设置,这实际上意味着设置 Azure 虚拟机 NCache 无论是单站点部署还是多站点部署,此步骤对于各种部署都很常见。 对于单站点部署,您只需要您的 NCache 服务器已设置,它们是虚拟机,然后 NCache 安装在那些上。 所以,我将快速带您访问我们的 Azure 门户,对吗? 而且,如果我只是去资源组,我刚刚创建了一个资源组,让我对它进行排序。 我的第一个资源组是演示资源组一,对吧? 而且,这里有各种各样的虚拟机,例如,我们有演示虚拟机一,然后我们也有演示虚拟机二,事实上我使用了相同的虚拟网络,我的错……好吧! 我为这两个演示机器使用了相同的虚拟网络。

让我快速向您展示..让我把它带到这里。 好的! 因此,如果您看到它部署在西欧,我们有演示 VM 1,然后我们有演示 VM 2,然后有演示 VM v-net 10.4.0.4,对吗? 如果我点击它,我可以看到演示 VM 10.4.0.5 和演示 VM XNUMX 的一部分,它们是 IP 地址 XNUMX 和 XNUMX。 所以,这代表了我们两个 NCache 虚拟机,如果我快速带你到这里的这个环境。

所以,我真正做的是我创建了一个虚拟机,一个空的 2012 或 2016 映像就可以了,然后我去了我们的 Alachisoft 网站和所有你需要的,没有任何特殊的安装程序 NCache. 您只需要使用现有的安装程序。 转到下载页面并下载 30 天试用版 NCache 从我们的网站上,一旦你完成了,我已经安装了 NCache 在演示 VM 1 和演示 VM 2 上。然后,我还创建了一个演示 V 网络缓存。 缓存创建步骤非常简单。 您只需要转到演示缓存,采用缓存拓扑、异步并指定演示 VM 1,然后我认为演示 VM 2 应该按原样选择 IP。 是的,它确实。 因此,这些服务器能够相互通信。

我采取的另外一个步骤,如果我回到演示文稿,这些是设置所需的步骤 NCache 微软 Azure 服务。 你创建了一个 Azure 虚拟网络,对吧? 这可能是您的环境中已有的东西。 然后,您在这些 Azure 虚拟网络上创建 VM。 因此,您可以拥有一组专用的虚拟机 NCache; 服务器一 服务器二 服务器三。 然后,您确保保留相同的子网。 这是我们推荐的,然后你安装 NCache 在所有这些虚拟机上。 然后另一件事是你打开 NCache 通信端口。 有两种端口,两种网络注意事项是您需要的。 一是你需要禁用内部防火墙,然后在这些虚拟机所在的网络上,你应该有一个网络安全组,对吗?

因此,例如,演示 VM 一个网络安全组,我们应该已经打开了这些端口,对吗? 所以,如果我快速向你展示 NCache 端口,我们只需要端口 9800 和 48250。这用于入站和出站通信。 9800 和 48250 所以,这将确保任何应用程序尝试使用 NCache,它使用端口 9800,能够连接到这些缓存服务器,然后连接到任何试图管理的应用程序,例如,可能有另一个 VM 试图管理它并且可能是跨虚拟网络,但它是相同的资源组,这些网络安全组允许您在这些端口上进行此通信。 就是这样了。 这是您需要考虑的因素。

我已经关闭了缓存服务器本身的防火墙。 而且,这些端口是开放的,我刚刚创建了一个缓存,我可以看到统计信息。 我可以直接在这些机器上运行压力测试工具应用程序,我可以很快,有一点滞后,所以请多多包涵。 而且,我也可以模拟这些压力。 所以,我们有对不起 V 网一个缓存,我们只是在这两个缓存服务器上运行和模拟活动。 因此,就服务器端设置而言,这就是多么容易。 现在,您需要回到您的应用程序并查看它。 是的! 你去吧。 所以,我们有活动进来。所以,我们很好。 我只是要关闭它。

单站点部署的步骤 2:在环境中部署 Azure 服务

接下来,既然我们已经配置了虚拟机,我也创建了一个缓存集群,接下来我需要一个可以与这个缓存集群通信的 Web 应用程序,对吧? 所以,我会很快回到我的演示文稿,对吧?

单点步骤2

因此,从您的应用程序的角度来看,您真正需要的是,您需要在您的应用程序之间、在您的应用程序服务中进行点到站点网络配置 NCache. 所以,首先,我已经做到了,对吧? 只是为了强调这一点。 现在,如果您回到资源组,我们有演示资源组 1。那么,我们有演示虚拟网络网关,对吗? 我们为此创建了一个网关,对吗? 然后,我们有一个指向站点。 这是一个使用演示 v-net 的虚拟网关,它是我们缓存服务的主要网络。 所以,如果我回到这里,如果你看这张图,它实际上在这里使用了一个虚拟网络网关,它是这个虚拟网络的一部分,然后我将很快部署的应用程序将指向站点在这之间进行通信,以便将其连接到同一个虚拟网络。 这就是 Microsoft Azure 的要求。 为了让您的应用服务与虚拟网络上的资源(例如虚拟机)对话,您需要设置一个指向站点的点。

所以,回到这里。 所以,我们有演示资源组。 即使我向您展示点到站点,让我直接来这里,如果我向您展示点到站点配置,我们有这个 IP,它是我们应用服务的通用 IP。 因此,一旦部署了应用服务,您单击它,然后将其附加到相应的虚拟网络。

所以,我会回到我的项目,我想我之前没有展示它,但这是一个示例应用程序,它是一个服务应用程序。 我将向您展示需要什么。 因此,如果您右键单击它,您将拥有可用于 Microsoft Azure 的 NuGet 包。

演示-step1-单站点

例如,我们有 Alachisoft.NCache.SDK。 这些是我们私下提供的,对吧? 这些为您的应用程序配备了所有 NCache 指向资源,因为没有任何安装 NCache 在客户端。 典型的 NCache 部署是您安装了客户端,安装了服务器。 所以,覆盖它,对吧? 但是,对于服务,它是一个实例。 因此,您无权访问底层 VM。 因此,在这种情况下,您需要 NuGet 包。 因此,所有资源都是您在应用程序中需要的一部分。 所以,这是我已经安装的牛轧糖包。 它真正添加了什么 NCache 客户端库,对吧? 所以,它也添加了一些配置。 所以,我们有client.ncconf,它是连接到任何缓存的主文件。

例如,我已经设置了连接到 V 网一个缓存的名称,然后还有内部 IP 地址来连接到这些缓存。 接下来是我发布此应用程序,然后此应用程序应该能够访问 VM 10.4.0.4 的 10.4.0.5 和 VM XNUMX 的 XNUMX。 因此,我需要确保我的应用程序可以访问此公共 IP 的站点通信点,只有这样它才能连接到此缓存。

所以,回到应用程序,我将展示一些缓存调用。 所以,在这个 MVC 项目中,我们有我们的主控制器,我们有这个缓存实例,然后我正在使用缓存实例。 初始化缓存。 让我在这里直接使用这种方法。 所以,这是初始化的方法, NCache.initializeCache 然后我们还调用 cache.insert 添加项目, Cache.delete 删除该项目, cache.get 取回项目,然后如果我不确定我是否执行了一些负载测试,是的! 因此,还有另一种方法负载测试实际加载项目,将数千个项目加载到缓存中,然后也检索这些项目。 因此,这应该照顾主要逻辑以及我们的应用程序所关注的。

我将向您展示一些观点。 所以,我们也有删除、获取、索引和负载测试,这些只是通过我们的应用程序调用。 所以,我要做的是这些都是基本的 NCache 来电。 所以,我接下来要做的就是将它部署到 Microsoft Azure。 所以,我已经在这里设置了所有资源组和网络部分。 但是,如果它是 Microsoft Azure 应用程序,您真正需要的是,您只需根据订阅创建新的 Web 应用程序名称。 让我们等待一段时间。 所以,它选择订阅。 你去吧。 所以,它自动选择了 Visual Studio 企业版,然后是资源组,我只是打算使用演示资源组之一。 所以,我正在使用单站点部署。 因此,它属于同一资源组,然后我选择服务计划,然后选择创建。 你也可以把 new 放在这里。 所以,即使地点是西欧,好吗? 在此选择 Okay,然后选择 create,它将自动开始。

因为,我已经这样做了。 所以,我接下来要做的是,我将简单地转到我的 web 配置,确保它使用 V net cache one,并且在 client.ncconf 中我们有 V net one 缓存。 所以,这个应用程序将被部署到同一个站点。 相同的资源组结束,然后我将其附加到属于我的一部分的虚拟网络 NCache 服务器虚拟机。

回到 Microsoft Azure,稍后,如果我转到资源组 XNUMX,我们应该在某个地方有这个应用程序。 给你! 如果您单击它,然后在部署此应用程序的网络部分时单击它,对吗? 所以,对! 所以,你去网络,你点击它,然后它已经连接到演示 v-net 一,对吗? 我已经这样做了,对吧? 因此,在您的情况下,一旦您在虚拟网络网关上建立了点到站点连接,您就有了一个演示资源组,对吗? 把这个带回来,就在这里。 所以,一旦你创建了一个虚拟网络,创建一个指向站点的点,然后这个应用服务 IP 就会暴露出来,在部署你的应用服务之后,你需要将它附加到虚拟网络,对吗? 所以,这是需要的额外步骤,就在这里。 所以,我的应用程序我希望它已加载。 我在等它耶!

现在在服务器端,我将清除内容,然后插入一个项目。 成功添加到缓存中。 而且,您可以在其中看到一件物品,我会很快得到它。 抱歉,我无法真正向您展示计数器,但它确实检索到了它,然后我可以删除它,对吧? 因此,由于它是同一虚拟网络的一部分,因此相比之下要快得多。

现在我将模拟一些负载测试,我将添加一千个项目,您应该会看到一些活动。 你去,对吧? 因此,每秒请求数和这些项目正在被添加,然后您可以在这里看到大约 600 个项目,这里大约有 400 个项目,然后它不会检索这些项目。 因此,这是您的服务的典型部署,无论是微服务、应用程序服务、API 应用程序,还是部署在服务模型中的任何应用程序。 您只需要引入 NuGet 包,创建一个点到站点连接到 NCache 虚拟机通过您的网络网关,然后您的应用程序实例可以附加到虚拟机。 因此,这些都是 Microsoft Azure 网络配置,并且 NCache 只需要在 TCP-IP 通道上公开私有 IP 地址。 所以,这就是我们所需要的。

场景 2:Azure 服务的多站点部署和 NCache

因此,接下来由于我们的可用时间较少,我想在最后 10 分钟内我还将介绍多站点场景。 配置几乎相似。

多站点部署-ncache-天蓝色

我们将 Web 应用程序或 Microsoft 服务或应用程序服务部署在一个 Azure 虚拟网络或一个站点上,然后 NCache 虚拟机或其他站点,为此我们真正需要的是这里的本地网络网关和这里的虚拟网络网关,然后我们需要在这两者之间建立站点到站点的连接。 同样,这些也是所有 Microsoft Azure 设置,它们使两侧能够使用站点到站点连接相互连接,并且 NCache 利用这些和内部 IP 映射在每一侧。 所以,你的 NCache 服务器内部 IP 映射到您的应用程序服务虚拟网络,反之亦然。

为此,我将快速向您展示配置。 如果我带你回到资源组,我们有演示资源组 3,对吗? 所以,这是另一个虚拟网络。 而且,我们在这里有演示 v-net 4,我在这个虚拟网络上也有两个盒子,演示 VM 10 和演示 VM 4.0.4。所以,这里的环境是 XNUMX. XNUMX,这是另一个虚拟网络。 它也可能是跨站点的,我只是将另一个虚拟网络类比为另一个站点。 但是,它可能是一个跨站点,也可能是 Microsoft Azure 中另一个区域的另一个数据中心。

多站点部署步骤:在环境中部署 Azure 服务

所以,你真正需要的是保持与我已经解释过的相同的设置。

多站点部署步骤

将 VM 部分保持在同一虚拟网络的同一子网上,创建缓存,启动该缓存,现在您的应用程序需要连接到我们的跨站点缓存。 为此,您需要进行站点到站点的通信。 而且,如果我回到这个演示资源组,因为我们有一个演示虚拟网络和演示虚拟网络网关,是的,虚拟网络网关 2,对吗? 所以,这是第二个站点上的网关。 所以,如果我们去连接,我们有演示 2 站点到站点的连接。 因此,我们与演示 2 本地网络网关建立了站点到站点连接。 所以,这是我配置的东西,对吧? 因此,这使我的虚拟网络 XNUMX 能够连接到跨站点的虚拟网络 XNUMX。 所以,这正是我们所做的。

我将快速向您展示 NCache 这里没有任何变化的应用程序。 您只需要更改缓存的名称,然后您应该有 IP 地址来连接到我作为堆栈的一部分拥有的缓存服务器。 因此,V-net 进行缓存,我将使用同一个应用程序来连接,我只需要再发布一次,注意我仍然在演示资源组 3 中发布它。 而我们的虚拟机位于演示资源组 1 中。 而且,这是 VM 2,就在这里,我们有两个缓存服务器。 因此,我将在保持站点到站点连接已配置的情况下再发布一次。 我将发布此应用程序,现在相同的应用程序将跨网络、跨站点从虚拟网络 XNUMX 到虚拟网络 XNUMX,并且能够连接到此。 所以,我将等待它发布,然后我会回到这里,然后再向您展示网络文章。

所以,你真正需要的是相同的虚拟机设置,在这里保持相同的虚拟网络,相同的子网,生成 VMS,安装 NCache 在它们上,禁用防火墙,设置网络安全组,以便 NCache 端口已打开,然后您需要在应用程序之间建立站点到站点连接作为连接到的服务 NCache 服务。 因此,如果您已经有一个附加了应用服务的虚拟网络,您只需要确保虚拟网络 1 现在能够与虚拟网络 2 通信,然后有一个跨站点,这正是我所做的在 Microsoft Azure 中也是如此。 所以,发布成功了。 我想就是这样。 让我把它关掉,让我插入一个项目,好吗? 让我们看看是否已经添加了一个项目。 所以,现在项目已被添加。 所以,现在它正在跨站点交谈,从一个站点到另一个站点,然后如果我得到这个项目,它就会被检索到。 如果我删除它,这个项目将从我的演示 VM 3 中消失,那里没有项目,同样,我将只模拟一个负载测试,我将开始使用相同的环境,但我只是在模拟一些活动它。

所以,现在我的站点 2,应用程序服务正在与站点 XNUMX 缓存服务通信。 他们正在穿越现场。 这不是推荐的方案,因为存在 WAN 复制或 WAN 延迟可能成为其中的一部分。 因此,我们建议将所有内容保存在同一个站点中,但可能存在这样一种情况,即您基于多站点会话功能,例如,基于横幅应用程序功能 NCache. 可能是本地应用程序与 Azure 通信,或者 Azure 应用程序与一个本地通信,反之亦然。 因此,这些是要求,我们的负载测试现在也完成了,因此成功执行。

因此,这涵盖了我们的 Azure 部署。

.NET 的分布式缓存选项

在这一点上我想提一些事情,并且有一个 Redis 比较也是。

分布式缓存选项

我们谈论的是 Azure。 所以,我们肯定会谈论 Redis. 所以,它可以在我们的网站上找到。 NCache 是 100% .NET。 它是用 c-sharp 开发的。 它完全支持 .NET 和 java。 相比下, Redis 幕后是在 Linux 上,您无法控制 VMS。 在 NCache 您可以完全控制 VMS。 你可以运行服务器端代码 NCache 以及 Windows 版本的 Microsoft 版本 Redis 是不是你知道稳定。 它是在幕后使用的 Linux 版本,然后作为服务模型提供。 进而, NCache 也可以在 Docker 上使用。 如果您打算使用 NCache 在服务器端 Dockers 容器上,您可以使用它。

然后,我还将讨论有关部署选项的一些细节。 你只需安装 NCache 服务器部分,您可以从我们这里获得 Azure 版本。 它是一个仅服务器版本,然后您需要 NuGet 包来使您的应用程序配备 NCache 这也是您可以从我们的支持或销售团队获得的东西。 所以,这是不公开的东西。 这是有意的,但您只需要向我们提出请求,然后我们将为您提供 Azure 的版本以及 NuGet 包,之后它只是您需要设置单站点或多站点设置的网络部分。 通常,我们推荐单站点,在这种情况下,您需要点到站点通信,而在多站点中,您需要站点到站点通信。

这样,我们的演示就完成了。

接下来做什么?

 

联系我们

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