应用服务器就是处理网站应用的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多同时也是最重要、最基础的地方。可以说没有应用服务器就没有网站。
在我们介绍分布式缓存之前,因为考虑到很多览客和当初的我一样,对于什么是应用服务器,分布式缓存是什么样的概念都不清楚,所以我们就一步一步来,从基本的概念说起。
1、缓存基本原理
所谓的缓存是指将数据存储在相对访问速度较高的介质中,以供系统处理。一方面缓存访问速度快,可以减少数据的访问时间,另一方面如果缓存的数据是经过计算得到的,那么缓存的数据就无需重复计算即可使用,因此缓存还能起到减少计算时间的作用。
缓存的本质是一个内存hash表,网站应用中,数据缓存是以键值对(Key,Value)的形式存储在Hash表(不知道hash表的自行脑补)中。
在需要读取Hash表中的数据时,首先需要提供键值对中的Key值,通过hash函数计算Key值的HashCode对应的Hash表索引,通过该索引可以快速的访问Hash表中的数据。
缓存主要用来存放哪些读写比较频繁,很少变化的数据,如热点词汇,商品类目等。应用程序读取数据时,先到缓存中读取,如果缓存中读取不到或者数据失效,再访问数据库,并将数据写入缓存。
2、合理使用缓存
使用缓存对提高系统性能有很多好处,但是缓存使用不合理非但不能提高系统性能,反而会造成系统的累赘。
如果缓存中使用的数据频繁修改,就会导致数据写入缓存后,应用还没来得及读取数据,数据就已经失效的情形,徒增系统的负担。在一般情况下,数据的读写比应该在2:1以上(写入一次缓存,在数据更新之前至少读取两次),缓存才有意义。
缓存是使用内存作为存储介质,但是在系统当中,内存的资源时非常宝贵的,不可能将所有的数据都缓存起来,只能将最近访问的数据缓存起来,而将历史数据挤出缓存。如果缓存的数据没有热点,不遵循缓存的二八定律,那么缓存就没有意义。
一般会对缓存的数据设置失效时间,一旦超过失效时间,就要从数据库中重新加载数据。因此应用需要容忍一段时间的数据不一致。在互联网应用中,这种延迟通常是可以接受的,但是具体应用也需要慎重的对待(视情况定位哪些数据可以缓存,哪些不可以)。