Azure Service Fabric 使可扩展且可靠的微服务和云应用程序的部署、管理和打包变得轻松无比。它旨在为开发人员提供一个强大的平台来应对构建分布式云应用程序的常见挑战。
NCache.NET 原生内存分布式缓存 (In-Memory Distributed Cache) 可部署在 Azure Service Fabric 集群中,以提升性能和可靠性。它通过将数据缓存到更靠近应用程序的位置,从而提高应用程序的性能和可扩展性。此架构专门针对有状态微服务和高事务性的 .NET 应用程序进行了优化,这些应用程序需要在分布式 Azure 环境中实现亚毫秒级的数据访问。
关键精华
架构策略: NCache 它以容器化服务的形式部署在 Service Fabric 虚拟机规模集 (VMSS) 中,使其能够与微服务一起运行,从而最大限度地减少延迟。
网络要求: Service Fabric 集群必须配置为开放网络模式。这样才能实现每个集群的互联互通。 NCache 容器需要有自己的辅助 IP 地址,这对于集群缓存节点跨主机边界通信至关重要。
动态发现: 由于 Service Fabric 是一个容器可以迁移的动态环境,因此 NCache Discovery Service(一个无状态的 ASP.NET Core Web API)用于向客户端提供缓存服务器的实时 IP 地址。
管理配置: 此 NCache 管理服务必须独立运行,并在端口 8251 上配置 NAT 模式和粘性会话(源 IP),以保持管理员与服务器之间的稳定连接。 NCache 管理中心。
线性可扩展性: 该解决方案支持运行时扩展。您可以增加数量 NCache 通过管理中心将集群服务实例添加到正在运行的缓存集群中,而无需停机应用程序。
监测与健康: 实时健康管理是通过以下方式进行的: NCache 监控器会跟踪 CPU、内存开销和集群操作,以确保分布式缓存的最佳性能。
NCache Azure Service Fabric 中的部署体系结构
Azure Service Fabric 基础结构包括 Service Fabric 群集资源以及支持性 Azure 资源,例如负载均衡器和虚拟机规模集。Service Fabric 群集可能运行多个应用程序,这些应用程序由使用不同语言编写的单个服务组成。此外,此群集还处理这些应用程序及其单个服务的可伸缩性和可用性。
在此类企业应用程序中,分布式缓存解决方案如 NCache 是实现高性能不可或缺的一部分。它还可以作为容器服务部署在 Service Fabric 应用程序中。在此场景中, NCache 服务器在虚拟机规模集的多个节点上的容器内运行并相互通信以形成集群缓存。
因此,缓存发现服务可以获取有关 NCache 服务器 IP 地址 NCache 服务器并将该信息提供给客户端。 使用此信息,客户端可以在 NCache 缓存集群。下图演示了此部署架构。
步骤 1:创建 Service Fabric 群集
部署 NCache,创建一个 Service Fabric 群集以及一个具有密钥保管库资源的资源组。密钥保管库包含要用于 Service Fabric 群集的证书。首先,您可以从 5 节点 Service Fabric 群集的 ARM 模板开始,然后进行以下更改:
- 在里面 。JSON文件,更改默认值 vmImageSku 中的参数 参数 部分来自 2016-数据中心 至 2016-带容器的数据中心. 这将设置预先安装了 Docker 功能的 VMSS 节点。
- 更新 ARM 模板以允许 开放网络模式.
- 添加端口 8251,这是 NCache 管理中心,在要公开的负载均衡器端口中。将此端口的分发模式更改为 源IP. 这将允许 NCache 管理中心可通过粘性会话访问,以便在创建缓存、向缓存中添加节点等时保持服务器和客户端之间的一致状态。
完成此操作后,您可以部署 ARM 模板,并且 Azure 资源管理器将配置生成的资源和配置。基础设施到位并验证 ARM 模板中指定的所有配置后,转到下一步。
步骤2:建立 NCache 集群服务
此 NCache 集群服务是 Service Fabric VMSS 上的容器内运行的主要服务,代表正在运行的 NCache 服务器。 这 NCache 服务器 Windows 容器图像可用于 码头工人.此服务使用 打开配置模式 其使用细节将在博客后面解释。此服务的目的是公开通信所需的以下端口:
- 管理端口:缓存服务器监听管理操作的端口号8250。
- 客户端端口: 用于执行所有 CRUD 操作的端口号 9800。
在 Service Fabric 的开放网络模式下,容器通过使用虚拟机辅助 IP 地址池中的单独 IP 地址来共享同一端口。 NCache 服务,这将带来额外的好处,允许 NCache 容器在作为集群缓存的一部分时可以跨主机边界进行通信。默认 NAT 模式。
下面给出的是示例 NCache 集群服务清单文件:
|
1 2 3 4 5 6 7 |
<ContainerHost> <ImageName>alachisoft/ncache</ImageName> </ContainerHost> <Endpoints> <Endpoint Name="cache-management" Protocol="tcp" UriScheme="tcp" Port="8250" CodePackageRef="Code" /> <Endpoint Name="cache-client" Protocol="tcp" UriScheme="tcp" Port="9800" CodePackageRef="Code" /> </Endpoints> |
步骤3:建立 NCache 管理服务
NCache Management Service 也是一个容器服务,使用相同的 Docker 镜像 NCache 集群服务。此服务的目的是通过访问 NCache 管理中心.
分开的原因 NCache 管理服务 NCache 集群服务的一个特点是,在开放配置模式下,不允许主机到端口的映射。 NCache 需要通过提供主机端口来访问管理中心,为此,需要另一项称为 NCache 管理服务创建于 NAT 模式。 下面给出的是示例服务清单文件 NCache 管理服务。
|
1 2 3 4 5 6 |
<ContainerHost> <ImageName>alachisoft/ncache</ImageName> </ContainerHost> <Endpoints> <Endpoint Name="web-management" Protocol="http" UriScheme="http" Port="8251" Type="Input" CodePackageRef="Code" /> </Endpoints> |
步骤4:建立 NCache 发现服务
此 NCache Discovery Service 是一个无状态、可靠的 ASP.NET Core Web API,它与 Service Fabric 命名服务交互,以检索由 Service Fabric 注册的终结点。 NCache 集群服务随后以 HTTP 响应的形式将此端点信息返回给客户端。客户端应用程序随后可以对该端点执行操作。 NCache 利用获取的 IP 地址信息创建缓存连接,实现集群缓存。
服务清单 NCache 发现服务如下图所示:
|
1 2 3 4 5 6 7 |
<EnvironmentVariables> <EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="" /> </EnvironmentVariables> <Endpoints> <!-- This endpoint is used by the communication listener to obtain the port on which to listen. --> <Endpoint Protocol="http" Name="ServiceEndpoint" UriScheme="http" Port="55100" Type="Input" /> </Endpoints> |
第四步:创建缓存集群
这是实际创建缓存的地方。首先,确保 NCache 发现服务已启动并正在运行。从发现服务访问 URI(由集群 DNS 和缓存发现服务正在侦听的端口组成)。打开 URI 后,再打开 DNS,将显示每个端点的 IP 地址,这些地址由 NCache 服务。
确保服务已启动并运行后,您现在可以访问 NCache 管理中心创建集群缓存。要访问 NCache 管理中心,使用 DNS 和端口号 8251 进行访问。这将带您进入 NCache 管理中心。
按照创建缓存集群部分中的步骤创建缓存集群 文档。
第 6 步:创建客户端应用程序服务
不同的 NCache 客户端服务发送 HTTP 请求到 NCache 发现服务,它为客户端提供容器的 IP 地址 NCache 正在响应中运行。 然后,客户端可以使用 IP 地址创建缓存连接,并通过这些连接与客户端进行通信。 NCache 集群缓存。如果您需要监控 客户端 NCache 性能计数器 或者使用 out-proc 客户端缓存,将客户端应用程序部署为容器服务。确保容器镜像包含 NCache 以缓存客户端模式安装。
下面是客户端应用程序服务的示例服务清单文件,其中包含 NCache 客户端安装:
|
1 2 3 4 5 6 |
<EntryPoint><ContainerHost><ImageName>ncache/apps:sfclient</ImageName></ContainerHost></EntryPoint> <EnvironmentVariables> <EnvironmentVariable Name="ASPNETCORE_ENVIRONMENT" Value="Development"/> <EnvironmentVariable Name="Cache_Name" Value="democache"/> <EnvironmentVariable Name="Cache_DiscoveryService_URL" Value="<Cache Discovery Service URL>"/> <!-- Other environmental variables --> |
第 7 步:运行客户端应用程序
一旦缓存启动并运行,您就可以开始执行 CRUD 操作。客户端应用程序最初将获取 NCache 服务器容器来自 NCache Discovery Service 并与缓存建立连接。 一旦建立连接,缓存管理和 CRUD 操作就可以继续进行。
您可以使用验证客户端连接 NCache 管理中心及 NCache 监控下一步解释。
第 8 步:监控 NCache 簇
NCache 管理中心 有一个 NCache 显示器 工具可帮助您跟踪集群性能。监控缓存集群可为您提供有关集群运行状况、缓存活动、执行的操作数量等的实时信息。监控缓存集群可帮助您针对内存开销等问题采取适当的措施。
请按照 文件 监控缓存集群。它会向您显示各种仪表板,例如报告仪表板或图形仪表板以及客户端和服务器计数器。
第 9 步:缩放 NCache 簇
NCache 本质上可扩展,允许您 将服务器添加到集群 在运行时使用 NCache 管理中心。只需扩展 NCache 集群服务可扩展到您所需的任意数量的实例。新容器运行后,您可以将其添加到缓存集群,而无需停止集群。然后,您可以监控缓存集群,查看新增服务器节点上的活动。扩展 NCache 以这种方式进行水平部署,可以确保随着 Service Fabric 应用程序负载的增长,缓存吞吐量线性增加,而无需手动重新配置客户端应用程序。
结语
部署 NCache Azure Service Fabric 中的缓存通过强大的分布式缓存增强了应用程序的性能和可扩展性。本指南涵盖了设置、配置和监控的基本步骤,以确保缓存集群的最佳运行。如需更多详细信息或支持,请咨询 NCache 文档或联系我们的团队 Alachisoft 支持.
常见问题
问:怎么做 NCache 如何在动态 Service Fabric 环境中处理容器发现?
A: NCache 它使用专用的、无状态的发现服务来查询 Service Fabric 命名服务。它检索活动实例的实时 IP 地址。 NCache 服务器容器并将其提供给客户端应用程序,确保即使容器迁移到不同的节点也能保持连接。
问:为什么需要“开放网络模式”? NCache 集群服务?
答:与默认的NAT模式不同,开放网络模式允许每个 NCache 容器将被分配一个来自虚拟机规模集辅助 IP 地址池的唯一 IP 地址。这对于集群缓存通信至关重要,因为它能够实现 NCache 节点之间跨主机边界通信以同步数据。
问:我可以扩展吗? NCache 无需重启 Service Fabric 应用程序即可组建集群?
答:是的。 NCache 支持运行时水平扩展。您可以增加实例数量。 NCache 在 Azure 集群服务中,一旦新容器运行起来,就可以通过以下方式将其添加到现有的缓存集群中: NCache 管理中心无需任何停机时间或客户端重新配置。
问:使用“SourceIP”分发方式对端口 8251 的目的是什么?
答:将负载均衡器分配模式设置为 SourceIP(粘性会话) NCache 管理中心(端口 8251)确保您的管理会话始终与同一主机保持关联。 NCache 管理服务实例。这可以防止在执行集群配置任务(例如创建或添加节点)时出现状态丢失错误。
问:客户端应用程序是否需要 NCache 安装用于连接集群?
答:客户端应用程序应该部署为容器服务。 NCache 以缓存客户端模式安装。这允许应用程序使用 NCache 用于与发现服务通信并建立直接套接字连接的 API NCache 服务器节点。








