使用分布式缓存对ASP.Net Core性能提升?

Posted 程序你好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用分布式缓存对ASP.Net Core性能提升?相关的知识,希望对你有一定的参考价值。

ASP.NET Core由于其更整洁、更轻的架构和跨平台的支持而开始流行于开发web应用程序。还有很多这样的ASP.NET Core应用程序是高流量的,并且在负载均衡的多服务器部署中运行。事实上,经常看到10-20个服务器集群,而一些比这个数量大得多的服务器也集群是很常见的。

拥有多服务器负载均衡部署使您的应用程序级别非常具有伸缩性,因为随着事务负载的增加,您可以添加更多的服务器。这让你的ASP.NET Core应用程序可以轻松处理非常大的数据负载。但是,这里仍然存在一个性能瓶颈,这会严重影响ASP.NET Core应用程序。

这个ASP.NET Core性能瓶颈是在数据库和数据存储中,这是因为尽管您可以向应用程序层web集群添加更多的服务器,但您不能在数据库层使用相同的策略。

这两种类型的数据存储成为ASP.NET Core的性能瓶颈。

  1. 数据库服务器(SQL Server)

  2. ASP.Net Core Sessons

解决方案:分布式缓存

要消除这些数据存储性能瓶颈,最好的方法是使用像NCache这样的分布式缓存。NCache是ASP.NET Core的开源内存分布式缓存。NCache比数据库快得多,因为它完全驻留在内存中。而且,与数据库不同,NCache是线性可伸缩的,因为它允许您构建一个缓存服务器集群,并允许在事务负载增加时向集群中添加更多的服务器。

NCache可以让您缓存应用程序数据,这样您就可以将那些昂贵的数据库访问时间减少80%。这减少了数据库的负载,使其能够更快地执行读和写操作,而使得数据存储不再成为应用系统的性能瓶颈。

NCache也是一个非常快速和可扩展的内存分布式存储用来存储ASP.NET Core Session(会话)。此外,NCache还可以复制ASP.NET Session会话到多个服务器,以防止数据丢失,以防任何缓存服务器崩溃。ASP.NET Core Session会话,这非常重要,因为您不能在运行时丢失任何会话。

下面是一个图表,展示了像NCache这样的分布式缓存如何适合您的应用程序部署。

 

应用程序数据缓存ASP.NET Core 接口IDistributedCache

在ASP.NET Core,老版本的ASP.NET提供了一个独立的ASP.Net网络缓存,不能满足多服务器环境需求。现在,ASP.NET Core引入了IDistributedCache分布式缓存接口,它是一个相当基本的分布式缓存标准API,可以让您对它进行编程,然后无缝地插入第三方分布式缓存。

下面是如何使用IDistributedCache接口的示例:

使用分布式缓存对ASP.Net Core性能提升?

 

NCache也实现了IDistributedCache的缓存接口,您就可以在不用更改任何代码的情况下,很容易的ASP.NET Core应用中使用NCache。

下面是IDistributedCache接口的样子(请注意,每个方法都有一个Async重载)。

使用分布式缓存对ASP.Net Core性能提升?

 

配置NCache作为IDistributedCache提供者

下面是如何将NCache配置为ASP.NET Core应用程序中的IDistributedCache提供者。

使用分布式缓存对ASP.Net Core性能提升?

 

为什么选择NCache API 代替 IDistributedCache?

如果您的缓存需求是相当基本的,并且您迫切希望能够无缝地更改分布式缓存供应商,那么您应该继续使用IDistributedCacheinterface。它允许您无缝地更改缓存供应商。但是,请您考虑一下,不要使用很多高级的缓存功能。

另一种选择是直接从ASP.NET Core 应用中使用NCache API。NCache API非常类似于遗留的ASP.NET Core。网络缓存API。但是,它包含了许多免费的特性,使您能够充分利用企业级的分布式缓存。

记住,可以缓存的数据越多,应用程序的性能和可伸缩性就越好。而且,如果没有高级的缓存特性,通常只能缓存只读或非常简单的数据。请阅读更多关于使用IDistributedCache提供程序所遗漏的所有不同的NCache缓存特性。

在分布式缓存中存储ASP.NET Core Session(会话)

有两种方法可以使用NCache作为ASP.NET Core会话存储。它们是:

1、使用NCache通过IDistributedCache来存储Session会话

一旦您将NCache配置为IDistributedCache提供程序。 NCache自动成为ASP.NET Core Session的默认存储选项。你不需要做任何其他事情。但是请注意,这个实现(会话状态存储)在特性上与老版本相比是有限的(在ASP.NET Core之前)。

这里是一些默认缺陷:

  • 在ASP.NET Core中没有提供会话锁定,在老版里有这个功能。

  • 用强制您将所有自定义对象转换成字节数组,然后才能存储。而老版会话状态存储支持自定义对象。

2、使用NCache作为Session会话提供者

使用默认的ASP.NET Core Session会话实现通过IDistributedCacheprovider实现,NCache实现了自己的ASP.NET Core提供者。这个实现比默认实现有更多的特性。

下面是如何在StartUp启动类中配置它。

 

你可以像下面图这样在( appsettings.json)中指定配置

 

NCache为甚么是一个比Redis更好的选择?

Microsoft提供了两种选项作为IDistributedCache提供者。一个是SQL Server,第二个是Redis。NCache比两个选项都要好。与SQL Server相比,NCache更快、更可伸缩。

而且,NCache也比Redis好,原因如下:

NCache是100%原生的.NET,因此非常适合你的.NET应用程序技术栈。另一方面,Redis来自于一个Linux背景,而不是一个原生的.NET缓存。

比Redis快:NCache实际上比Redis快。NCache客户端缓存特性使NCache具有显著的性能提升。

更多的特性:NCache提供了许多非常重要的分布式缓存特性,而Redis没有。在这个Redis和NCache网站中可以看到更多的细节。

有关NCache的详细信息,请点击以下链接:

http://www.alachisoft.com/ncache/

http://www.alachisoft.com/ncache/edition-comparison.html

http://www.alachisoft.com/download-ncache.html


以上是关于使用分布式缓存对ASP.Net Core性能提升?的主要内容,如果未能解决你的问题,请参考以下文章

分布式缓存提升ASP.NET Core性能

如何在 ASP.Net Core 使用 分布式缓存

《ASP.NET Core 6框架揭秘》实例演示[34]:缓存整个响应内容

ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存

ASP.NET Core

asp.net core 系列之Response caching 之 Distributed caching