大型网站技术架构(一)分布式缓存

网站性能优化第一定律: 优先考虑使用缓存优化性能。

缓存的基本原理

【缓存的基本原理】

将数据存储在相对较高访问速度的存储介质中,以供系统处理。
一方面缓存访问速度快,可以减少数据访问的时间,另一方面如果缓存的数据是经过计算处理的,那么缓存的数据无需重复计算即可直接使用,还起到减少计算时间的作用。

【缓存的本质】

一个内存Hash表,以key,values形式存储在内存Hash表中;Hash表数据读写的时间复杂度为 O(1)。

【缓存的作用】

主要用来存放那些读写比很高、很少变化的数据。
应用程序读取数据时,先到缓存中读取;如果读取不到或数据已失效,再访问数据库,并将数据写入缓存。

合理使用缓存

  • 1.频繁修改的数据
    如果缓存中保存的是频繁修改的数据,就会出现数据写入缓存后,应用还来不及读取缓存,数据就已失效的情况,徒增系统负担
  • 2.没有热点的访问
    缓存使用内存作为存储,内存资源宝贵而有限,不可能将所有数据都缓存起来,只能将最新访问的数据缓存起来,而将历史数据清理出缓存
  • 3.数据不一致与脏读
    一般会对缓存的数据设置失效时间,一旦超过失效时间,就要从数据库中重新加载。因此应用要容忍一定时间的数据不一致。或者数据更新时立即更新缓存,不过这也会带来更多的系统开销和事务一致性的问题
  • 4.缓存可用性
    *缓存雪崩: 数据库已经习惯了有缓存的日子,所以当缓存服务崩溃时,数据库会因为完全不能成熟如此大的压力而宕机,进而导致整个网站不可用
    【缓存热备】:当某台缓存服务器宕机时,将缓存访问切换到热备服务器上 —— 这种设计违背缓存的初衷
    【分布式缓存服务器集群】 :
    将缓存数据分布到集群多台服务器上可一定程度上改善缓存的可用性;当一台缓存服务器宕机的时候,只有部分缓存数据丢失,重新从数据库中加载这部分数据不会对数据库产生很大的影响
  • 5.缓存预热
    最好在缓存系统启动时就把热点数据加载好,这个缓存预热加载手段就叫做缓存预热 (warm up)
  • 6.缓存穿透
    如果因为不恰当的业务、或者恶意攻击持续高并发的请求某个不存在的数据,由于缓存没有保存该数据,所有的请求都会落到数据库上,会对数据库造成很大的压力,甚至崩溃。
    一个简单的对策是将不存在的数据也缓存起来,其value值为null

分布式缓存架构

【分布式缓存定义】
值缓存部署在多个服务器组成的集群中,以集群方式提供缓存服务,其架构有两种:
(1)以Jboss cache为代表的需求更新同步的分布式缓存
(2)以Memcached为代表的不互相通信的分布式缓存

Jboss cache :
在集群中所有服务器中保存相同的缓存数据,当某台服务器有缓存数据更新的时候,会通知集群中其他机器更新缓存数据或清楚缓存数据
大型网站技术架构(一)分布式缓存_第1张图片
Memcached :
集中式缓存集群管理,也称作互不通信的分布式架构。
应用程序通过一致性Hash等路由算法选择缓存服务器远程访问缓存数据,缓存服务器之间不通信,缓存集群的规模可以很容易的实现扩容,具有良好的伸缩性
大型网站技术架构(一)分布式缓存_第2张图片

分布式框架:
Memcached : 简单、稳定、专注

你可能感兴趣的:(大型网站技术架构读书笔记)