大型网站后台架构的Web Server与缓存(3)

1.2.2 分布式缓存 1.2.2.1 Memcached

Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在Memcached已成为mixi、hatena、Facebook等公司提高web应用扩展性的重要缓存软件。许多web应用都将数据保存到RDBMS中,应用服务器从中读取数据并返回给用户。但随着数据量的增大,访问的集中性,读写比例的增大,会使RDBMS增加其系统开销,相应速度下降,网络延迟增大。Memcached通过缓存数据库查询结果,减少数据库读的访问次数,提高动态网站的响应速度。此外,电子商务网站的客户端cookie和服务器端session机制也可以利用Memcached解决,比如典型的购物车跟踪记录访问行为、购买问题等。也可以将其信息记录在后端的Memcached中。典型的应用如图4-2-2-1-1所示。

大型网站后台架构的Web Server与缓存

      

图 4-2-2-1-1

如图所示,当用户第一次访问数据库时,应用服务器从数据库中查询数据返回给用户,并且在memcached中存储一份数据。当第二次,应用服务器需要从数据库中查询数据时,首先从memcached查询数据,如果有则得到数据,返回给用户,如果没有,则再从数据库中查找数据。返回给用户,并拷贝一份数据到memcached中。

Memcached默认情况下采用名为Slab Allocator的机制分配、管理内存。Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。

SlabAllocator原理,将分配的内存分割成各种尺寸的块(chunk),并将尺寸相同的块分成组(chunk的集合)。如图4-2-2-1-2所示。

大型网站后台架构的Web Server与缓存

         

图 4-2-2-1-2

如图所示,memcached根据收到的数据的大小,选择最适合数据大小的slab。Memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存在其中。如图4-2-2-1-3所示。

大型网站后台架构的Web Server与缓存

图4-2-2-1-3

同squid、varnish一样,memcached同样使用LRU机制来分配内存,删除最近最少未使用的数据。 

1.3 本文小结

本章主要分析了FastCGI的运行机制,简单介绍了三种常用的web server Lighttpd、Apache、Nginx,对三款常用web server进行了对比。然后又分别介绍了代理缓存Squid和Varnish。最后简单分析了分布式缓存Memcached。总体而言,这些缓存的应用可以极大加快网站的访问速度。提升用户体验。缓存的应用,在高可用的大型网站中,处处可见。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyyfjw.html