NCache 是一种开源的内存分布式缓存,通过缓存频繁访问的数据来提高 .NET 和 Java 应用程序的性能,确保快速的事务速度和线性可扩展性。其分布式架构允许通过添加更多节点实现无缝扩展,自动平衡负载,并在流量和数据量增加时提供一致的性能。与其他基于 C++ 或 Linux 构建的缓存解决方案不同, NCache 专为 .NET 环境而设计,提供无缝集成。作为近 2 年来市场领导者, NCache 使开发人员能够构建高性能、可靠的系统,轻松处理关键任务工作负载。本博客将讨论如何 NCache 可以将您的应用程序转变为高性能、可扩展的系统。
关键精华
线性可扩展性: 与会遇到“性能瓶颈”的传统数据库不同, NCache 允许您通过向运行中的集群添加更多服务器节点来横向扩展,从而确保性能随基础设施线性增长。
80-90% 的数据库卸载: 通过从内存缓存层提供频繁访问的数据, NCache 消除后端 SQL 或 NoSQL 数据库的瓶颈,防止在高流量高峰期发生崩溃。
原生 .NET 优化: 专为微软生态系统设计, NCache 为 ASP.NET Core、Entity Framework Core 和 SignalR 提供高速、直接的集成,这是非原生(C++ 或基于 Linux 的)缓存无法比拟的。
进程内“客户端缓存”速度: 它提供独特的近缓存功能,可将数据直接存储在应用服务器的内存中。这实现了进程内速度,消除了最活跃数据的网络延迟,同时与主集群保持同步。
多区域灾难恢复: 通过广域网复制, NCache 支持主动-被动和主动-主动架构。这确保您的数据在不同的 Azure/AWS 区域或全球数据中心之间同步,从而保持 100% 的正常运行时间。
哪些 .NET 应用程序需要 NCache?
NCache 使应用程序能够处理高流量,确保更快的数据访问,并随着需求的增长轻松扩展。您可以集成 NCache 在以下高交易应用程序中。
- Web应用程序(.NET/.NET Core)
- Web 服务应用程序(.NET/.NET Core)
- 微服务应用程序(.NET/.NET Core)
- 服务器应用程序(.NET/.NET Core)
用例对比:解决常见的可扩展性挑战
| 用例 | 技术挑战 | NCache 解决方案 |
|---|---|---|
| 电子商务管理 | 限时抢购期间客流量突然激增 | 分布式会话缓存 |
| 实时聊天 | 消息延迟和服务器同步 | SignalR 背板 |
| 微服务 | 复杂的跨部门数据共享 | 发布/订阅消息 |
| 旧版应用程序 | 难以扩展的数据库瓶颈 | 基于 SQL 的缓存 |
NCache 解决方案
现代应用程序必须提供高性能并实现可扩展性,以处理不断增加的工作负载。如果没有强大的缓存解决方案,您的应用程序可能会遇到延迟和停机,因为所有应用程序请求都会转到后端数据库,而后端数据库并非为无缝扩展而设计的。这会造成性能瓶颈,在高事务负载下阻塞数据库,并存在单点故障的风险。
NCache作为内存缓存,它通过缓存频繁访问的数据来降低数据库负载。在生产环境中, NCache 它能够以亚毫秒级的延迟处理每秒数百万个请求,使其成为 .NET 可扩展性的行业标准。其分布式架构将内存和 CPU 资源池化到多个服务器上,从而确保在高事务负载下也能实现无缝扩展和高可用性,如下所述。
- 处理极端事务负载:在高峰流量期间,由于所有数据请求都会到达数据库,因此应用程序可能会面临性能下降和停机的风险。 NCache 通过减少 80-90% 的数据库查询、防止瓶颈并确保在高流量或数据库问题期间不间断服务来解决此问题。
- 支持面向客户的网站:对于依赖在线平台的企业来说,性能和可用性是不可妥协的。例如,电子商务商店需要在销售期间处理高流量;航空公司需要高效处理机票预订;游戏平台需要及时提供实时更新。为了克服这些挑战,此类企业可以使用可靠的缓存解决方案,例如 NCache 为他们提供高可用性、数据可靠性以及高性能。
- 后台处理业务:银行、物流和公用事业等行业依赖实时数据执行欺诈检测和设备监控等任务。 NCache强大的 Pub/Sub 和事件管理功能可有效地同步工作流程,确保关键操作的可靠性。
NCache 与传统数据库的比较
| 特性 | 传统数据库 | NCache (分布式缓存) |
|---|---|---|
| 存放 | 基于磁盘(速度较慢) | 内存(快速) |
| 可扩展性 | 垂直(有限) | 水平(线性) |
| 延迟 | 毫秒 | 微秒 |
| 生产能力 | 受磁盘 I/O 限制 | 随集群节点扩展 |
| 卓越 | 中心化 | 点对点分布式 |

图 1:扩展 ASP.NET 应用程序时传统 SQL 数据库的瓶颈
图 1:扩展 ASP.NET 应用程序时传统 SQL 数据库的瓶颈
此类企业无法承受高峰时段应用程序速度变慢的后果。如果没有像 NCache,其影响可能是严重的——收入损失、客户失望、声誉受损。 NCache 确保快速、可扩展的性能,避免瓶颈并在高负载下也能保持平稳运行。

图 2:线性可扩展性和 80% 的数据库负载降低 NCache 分布式缓存
主要特点 NCache
让我们探索一下 NCache 提供。
保持缓存新鲜
NCache 提供了几种无需人工干预即可保持缓存数据新鲜的方法。例如, 绝对 和 滑动 过期会自动从缓存中删除过期数据并使其保持最新。另一种保持缓存更新的方法是 依赖 当数据库发生变化时,它会删除过时的数据,使缓存保持更新并与最新信息保持一致。
SQL 搜索
对于大型数据集, NCache 提供强大的搜索功能,让您能够根据对象属性快速搜索数据, 群, 标签 或 命名标签. 您可以使用 SQL or LINQ 查询 快速访问数据。 NCache 通过自动创建进一步优化搜索性能 指标,即使在大规模应用中也能显著减少搜索时间。
服务器端代码
NCache 是唯一提供 .NET 解决方案 服务器端代码功能。 同 通读,您的缓存可以自动从数据库中提取数据,确保您的缓存始终是最新的。 直写 直接从缓存中更新数据库,而 后写 异步更新数据库,确保您的应用程序保持响应,而无需等待数据库响应。此外, 缓存加载器 在应用程序启动时预加载缓存,
客户端缓存(InProc 速度)
NCache 提供独特的 客户端缓存 功能,也称为近缓存,可提供进程内(进程内) 性能。它充当临时存储,驻留在应用程序进程附近,以便快速检索数据。在与主缓存层保持完全同步的同时,它确保来自其他应用程序或用户的实时更新。因此,您的应用程序变得更加高效和响应迅速,而无需不断访问中央缓存或数据库。

图3: NCache 用于进程内速度和实时同步的客户端缓存(近缓存)架构
要了解有关客户端缓存及其工作原理的更多信息,请参阅 博客.
缓存的广域网复制
NCache 通过其功能,可以跨多个数据中心、Azure 区域或 AWS 可用区域实现无缝缓存复制,而不会影响应用程序性能 广域网复制 功能。它支持主动-被动和主动-主动配置,确保高可用性、容错和负载平衡。因此,这 特集 在分布式环境中同步您的缓存,确保所有位置的数据一致性和峰值性能。

图4: NCache 用于多站点主备灾难恢复的广域网复制

图5: NCache 实现多区域高可用性的双活广域网复制
部署选项 NCache
NCache 是一款原生内存缓存解决方案,支持 .NET 和 .NET Core,提供定制化的客户端和服务端功能,并可无缝部署。 本地, 云和 Docker以及针对现代应用程序优化的性能。以下是 NCache 与各个框架和平台集成:
NCache Client Support
NCache 提供一个缓存客户端,完全支持 .NET 和 .NET Core,具体如下:
.NET Framework:
.NET 核心:
- 无缝缓存 EF 核心缓存 以改善数据库交互。
- 高性能 NET 核心会话, 响应缓存和 ID分布式缓存 以减少延迟。
- 全力支持 NET 核心 SignalR 适用于快速、实时的消息传递应用程序。
NCache 服务器支持
此 NCache 服务器端与其客户端一样,完全基于 .NET/.NET Core 构建——这是依赖 C++ 或 Linux 的竞争对手所无法比拟的。此外,这种独特的兼容性确保了对 .NET 和 .NET Core 环境的无缝支持,如下所述:
.NET Framework:
- 用于自定义业务逻辑实现的服务器端代码功能。
.NET 核心:
- 为 .NET Core 应用程序提供服务器端代码支持。
- 平台兼容Windows Server和Linux,满足不同的部署需求。
灵活的部署选项
NCache 旨在通过以下部署选项满足现代基础设施需求:
- Windows Server 和 Linux
- 适用于本地环境。
- 云部署
- 可用作虚拟机 (VM) Azure 和 AWS 交易市场。
- 作为 托管缓存云服务集群 通过 NCache的云门户,实现无忧的云管理。
- Docker容器
- 预配置 NCache 图片可在 Docker中心.
- 能够创建自定义 NCache Docker 镜像使用 Dockerfiles 来提供定制解决方案。
有了如此灵活的部署选项, NCache 确保所有应用程序环境的无缝可扩展性、高可用性和优化的内存缓存。
结语
NCache 是面向 .NET 和 .NET Core 应用程序的首选内存缓存解决方案,可提供卓越的性能、可扩展性和灵活性。凭借无缝集成、强大的功能和多样化的部署选项,它能帮助您的应用程序轻松应对高流量、降低延迟并实现无缝扩展。准备好提升应用程序的性能了吗?立即下载 NCache !
常见问题
问:怎么做 NCache 如何处理单个服务器无法处理的数据量?
A: NCache 它采用分布式架构,将多台服务器的内存和 CPU 资源汇集到一个逻辑容量中。这样,通过将数据分布在整个集群中,您可以存储远大于任何单个服务器内存限制的数据集。
问:当底层 SQL 数据发生变化时,缓存会发生什么情况?
A: NCache 通过数据库依赖关系维护“数据新鲜度”。您可以配置缓存,以便在数据库发生相应更改时自动使特定项失效或删除,从而确保您的应用程序永远不会提供过时的信息。
问:怎么做 NCache 如何在不同地理区域保持同步?
答:通过其基于桥接的广域网复制, NCache 它可在站点间异步同步数据。它内置冲突解决逻辑,可处理同一数据在两个不同的“活动”数据中心同时更新的情况。
问:可以 NCache 是否可用于运行在容器中的微服务?
答:是的, NCache 它专为现代基础设施而构建,提供预配置的 Docker 镜像和对 Kubernetes 编排的全面支持。这使其能够随着您在 Azure (AKS) 或 AWS (EKS) 等云环境中的微服务动态扩展。
问:有 NCache 需要修改代码来保持缓存更新吗?
答:不,您可以实现服务器端代码,例如读取直通和写入直通提供程序。这些提供程序允许缓存本身与数据库通信,因此您的应用程序只需与缓存交互,从而简化客户端逻辑。






