网站案例架构(分布式缓存集群的伸缩性设计)读书笔记

分布式缓存集群的伸缩性设计      
  Memcached 分布式缓存集群的访问模型
    数据缓存流程;
      1 应用程序调用缓存Memcached的API接口
      2 API将需要写缓存的数据KEY输入路由算法模块,路由算法根据KEY和Memcached集群服务器列表计算得到一台服务编号(Node1),进而得到该机器的IP地址和端口号
      3 API调用Memcached客户端程序(通信模块)和NODE1服务器通信,将数据写入服务器
  
  Memcached 分布式缓存集群的伸缩性挑战
    路由算法决定究竟该访问集群中的哪台服务器。
    简单的路由算法  余数HASH:
      实现方式:
        用服务器数目除以缓存数据KEY的HASH值,余数为服务器列表下标编号即对应节点NODE1。
      优点:
        由于HASHCode具有随机性因此可以保证相对比较均衡
      缺点:
        分布式缓存需要扩容的时候,事情就变得棘手
          当三台服务器扩容至4台服务器大约75%被缓存的不能命中 ,当100台服务器,加入一台,不能命中的概率99%
      可解决方法
        1 在网站访问量少的时候,扩容缓存服务器集群,这时候数据库的负载冲击最小,
          然后通过模拟请求的方法,逐渐缓存预热,使缓存服务器中的数据重新分布;
        2 改变HASH路由算法:分布式缓存的一致性HASH算法
    分布式缓存的一致性HASH算法
      具体算法过程:
        先够着一个0-2的32次方的整数环(这个环被称作一致性HASH环),根据节点设定的的Hash值,将缓存服务器节点放置在这个HASH环上,然后根据需要缓存的数据的key值计算得到HASH值,
        然后在HASH环上顺势针找距离这个key的HASH值最近的服务器节点,完成key到服务器的HASH映射查找。
      优点:
        影响缓存节点少,保证大部分节点的缓存可以被命中,比例足够小,不会对数据库的获取造成致命的压力;
      缺点:
        节点的缓存数据量和负载压力,新加的节点和最近受影响的节点 相对其他的负载压力和数据量相比较小,性能分配不均;
        hash区段分配不均匀;
      可解决方法
        增加虚拟节点,进行均分截断平衡hash区段;

猜你喜欢

转载自blog.csdn.net/icool_ali/article/details/81365387