读《大型网站技术架构:核心原理与案例分析+李智慧》记二
2016-01-31 22:32
489 查看
Memcached分布式缓存集群
最简单的方法是通过路由算法可以实现余输Hash:用服务器是数目除与缓存数据Key的hash值,如key为7,有3台服务器,那么余数就是1,由此可见访问编号为1的服务器(编号从0开始)。
由于key是随机产生的,这样对于整个服务器集群来说访问压力是相对平均的
上述方法有一个问题:如果新加了2台缓冲服务器,那么7除于5就等于2,本来在缓存服务器一中有缓存数据,可是由于新加缓存服务器导致没有命中(需要到数据库中查找)。
命中率为(1-(n/n+m)):n为原有数目,m为新增数目。这样命中率在明显不合适
分布式缓存的一致性hash算法
实现原理:先构建一个长度为0-2^32的整数环(这个环被称为一致hash环),更加节点名称的hash值将缓存服务器节点放置在这个hash环上,然后更加需要查找数据key计算hash值,在顺序查找服务器的hash,匹配与需要查找数据的hash值最近的服务器hash值
产生问题:当一部分原来需要访问缓存服务器1的,现在访问缓存服务器3,但是缓存0与缓存2的数据负载压力不变,不符合负载一致性原则
增加一个虚拟层(计算机的任何问题都可以通过增加一个虚拟层来解决)。
将每台物理缓存服务器虚拟为一组虚拟缓存服务器,将虚拟服务器的hash值放置在hash环上,key在环上先找到虚拟服务器节点,在得到物理服务器的信息
这三种方法现在只是看懂了第一种,望如果看了这书的人不吝赐教
最简单的方法是通过路由算法可以实现余输Hash:用服务器是数目除与缓存数据Key的hash值,如key为7,有3台服务器,那么余数就是1,由此可见访问编号为1的服务器(编号从0开始)。
由于key是随机产生的,这样对于整个服务器集群来说访问压力是相对平均的
上述方法有一个问题:如果新加了2台缓冲服务器,那么7除于5就等于2,本来在缓存服务器一中有缓存数据,可是由于新加缓存服务器导致没有命中(需要到数据库中查找)。
命中率为(1-(n/n+m)):n为原有数目,m为新增数目。这样命中率在明显不合适
分布式缓存的一致性hash算法
实现原理:先构建一个长度为0-2^32的整数环(这个环被称为一致hash环),更加节点名称的hash值将缓存服务器节点放置在这个hash环上,然后更加需要查找数据key计算hash值,在顺序查找服务器的hash,匹配与需要查找数据的hash值最近的服务器hash值
产生问题:当一部分原来需要访问缓存服务器1的,现在访问缓存服务器3,但是缓存0与缓存2的数据负载压力不变,不符合负载一致性原则
增加一个虚拟层(计算机的任何问题都可以通过增加一个虚拟层来解决)。
将每台物理缓存服务器虚拟为一组虚拟缓存服务器,将虚拟服务器的hash值放置在hash环上,key在环上先找到虚拟服务器节点,在得到物理服务器的信息
这三种方法现在只是看懂了第一种,望如果看了这书的人不吝赐教
相关文章推荐
- 实战Memcached缓存系统
- Redis和Memcached的区别详解
- PHP MemCached 高级缓存应用代码
- PHP模块 Memcached功能多于Memcache
- php的memcached客户端memcached
- php模块memcache和memcached区别分析
- 探讨:如何通过stats命令分析Memcached的内部状态
- 利用Memcached在php下实现session机制 替换PHP的原生session支持
- ubuntu+php环境下的Memcached 安装方法
- Nginx HttpMemcModule和直接访问memcached效率对比测试
- PHP内存缓存Memcached类实例
- Memcached常用命令及使用说明
- Memcached 入门介绍(安装与配置)
- PHP扩展模块memcached长连接使用方法分析
- Shell脚本实现的memcached进程监控
- linux下编译安装memcached服务
- php扩展memcached和memcache的安装配置方法
- PHP模块memcached使用指南
- 深入eAccelerator与memcached的区别详解
- Memcached常用命令以及使用说明详解