技术开发 频道

.NET下实现分布式缓存系统Memcached

  【IT168 技术文档】在Web应用程序中,数据通常保存在RDBMS中,应用服务器从数据库中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负载加重、数据库响应变慢、网站显示延迟等重大影响。为了缓解数据库的压力,提升Web应用程序的响应速度,人们提出了Web缓存的概念,这里缓存的概念不同于计算机硬盘控制器上的一块内存芯片。Web缓存位于Web服务器(1个或多个,内容源服务器)和客户端之间(1个或多个),缓存会根据进来的请求保存输出内容的副本,例如html页面, 图片,文件(统称为副本),然后,当下一个请求来到的时候,如果是相同的URL,缓存直接使用副本响应访问请求,而不是向内容源服务器再次发送请求。使用缓存可以减少相应延迟,因为请求在缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快;当副本被重用时还可以减少网络带宽消耗。

  缓存的工作方式

  缓存的工作方式如下图所示:

  上图中的缓存服务器维护一个集中缓存并在其中存放经常被请求的对象,任何 Web 浏览器客户端都可以访问该缓存。来自内存/磁盘缓存的对象所需的处理资源比来自其他网络的对象所需的处理资源要少得多。因此,这可以提高客户端浏览器性能、缩短用户响应时间并减少Internet 连接所消耗的带宽。

  上图1到6标示了当用户请求对象时,缓存服务器是如何响应的,主要经过下列步骤:

  第一个用户(客户端 1)请求 Web 对象。

  缓存服务器检查该对象是否存在于缓存中。由于该对象不存在于缓存服务器缓存中,因此,缓存服务器从Internet中的服务器请求该对象。

  Internet上的服务器将该对象返回给缓存服务器计算机。

  缓存服务器将该对象的一个副本保留在其缓存中,并将对象返回给客户端 1。

  客户端 2请求相同的对象。

  缓存服务器从其缓存中返回该对象,而不是从Internet中获取该对象。

  一般在组织的Web服务器前面部署缓存服务器。Web服务器是主持商业 Web 业务或可由业务合作伙伴访问的服务器。使用传入的Web请求,缓存服务器可以充当外部环境的 Web 服务器,并通过其缓存来完成客户端对Web内容的请求。只有在缓存无法处理请求时,缓存服务器才将请求转发到Web服务器。

  目前实现缓存的机制有几种,Memcached就是其中的一种。本文介绍了Memcached的概念,基本原理以及工作机制,并介绍了如何在ASP.NET中使用Memcache进行开发Web应用程序以提升Web应用程序的性能。

  Memcached介绍

  Memcached是一个高性能的分布式的内存对象缓存系统。Memcached是为了加快http://www.livejournal.com/访问速度而诞生的一个项目,由Danga Interactive开发的,它通过在内存里维护一个统一的巨大的hash表来存储各种格式的数据,包括图像、视 频、文件以及数据库检索的结果等。虽然最初为了加速 LiveJournal 访问速度而开发的,但是后来被很多大型的网站采用。它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力,最大的优点是提高了访问获取数据的速度,Memcached用于在动态应用中减少数据库负载,提升访问速度,但是用来加速Web应用、降低数据库负载时比较多。Memcached也完全可以用到其他地方,比如分布式数据库,分布式计算等领域。

0
相关文章