memcached 分布式
memcached定义
memcached 是一套分布式的高速缓存系统,被广泛应用于应用系统的缓存层来提升应用程序的访问速度;memcache缺乏认证以及安全管制,这表明应将memcached服务器放置在防火墙后;memcached的API使用32比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的服务器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据;memcached的缓存是基于内存的,因此不建议使用memcached缓存复杂的对象
通过定义可知,使用memcached可以高速的缓存频繁访问的对象,从而减轻存储系统(如关系型数据库,磁盘等)的访问负担;其次,memcache缓存的内容是在内存中,访问速度快,可以为应用系统实时响应提供依据。
memcached适用于什么情况
1. 底层数据库压力大,通过memcached可以将频繁访问的数据对象进行缓存,减少对底层数据库的访问来达到减轻数据库压力,使数据库有时间和处理能力去处理其他后台逻辑运算。
3. 对象变化周期长,也就是说对象长时间不进行修改,可以将这些对象缓存到memcached中,供业务快速访问。而对于对象变化比较频繁的,不建议memcached来缓存,因为memcached的访问很快,而且没有事务来控制数据一致性,所以时常导致缓存对象与时间保存对象不一致的情况。
memcached分布式的优势
memcached作为缓存层,需要缓存的内容会越来越多,当一台服务器无法承受所有缓存的内容时,就需要考虑将memcache调整为分布式,通过多台服务器来分担缓存的压力。memcached分布式的优势有哪些呢:
1. 客户端担当分布式的master,通过客户端的分布函数(默认哈希取余的方式)来将缓存的key分散到不同服务器上。至于为什么客户端担当分布式的master,是由于只要分布函数一致,那么不同客户端都会将相同的key会分配到同一台服务器上,而且master的职责比较单一(就是根据key得到数据所在服务器)。
2. memcached分布式集群上某台服务器宕机,客户端访问的缓存恰巧存储在宕机的服务器上时,缓存层被穿透去底层存储层读取数据,并将读取的内容缓存到未宕机的服务器上(分布方式去掉宕机的服务器,然后根据哈希取余的方式确定新的服务器)。
3. memcached分布式集群上宕机的服务器修复上线后,客户端访问的缓存能访问该台宕机的服务器了,但是缓存的内容却在其他服务器上,此时缓存层再次被穿透去底层存储层读取数据,并将读取的内容重新缓存到该宕机服务器上供后续访问使用;对于保存有相同key的另一台服务器上的相同key不会被自动删除但也不会再次使用,直到垃圾回收时清除。
4. memcached分布式集群上如果不同服务器存在相同的key,那么删除该key时,只会删除根据分布函数得到的服务器上的key,对于其他服务器上相同的key则不会被删除,直到垃圾回收。造成的风险是如果能访问的这台服务器又宕机了,而此时有相同key的服务器上key还未清除而且恰巧访问这台,就有可能造成脏读。
memcached分布式的缺点
1. memcached分布式不会存储副本,也就是说某一台服务器宕机,缓存在该台服务器上的内容就会丢失。
2. memcached的key分布并不是完全离散的,导致的结果就是某些台服务器缓存的量大,某些台服务器缓存的量小;不过memcached的访问速度快,缓存量大也不会造成太大的延迟。
3. 数据类型比较单一,不能存储复杂的对象。
memcached常用启动参数
-p 指定memcached启动的端口,默认为11211
-m 指定memcached使用的最大内存,默认为64M
-t 指定memcached线程数,默认为4
-l 绑定的IP地址,默认为所有都允许访问,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1则只允许本机访问
-d start 启动memcached服务
-d restart 重启memcached服务
-c 最大同时连接数,默认为1024
memcached性能
memcached的性能已经特别高,但是随着存储量和并发量的增大,性能会下降,但是使用集群,性能比使用单台时要高。详情请看:http://www.diggerplus.org/archives/190;
其他
1. memcached的key最大存储250个英文字母
2. memcached的key不能存在空格和控制字符
3. memcached的默认过期时间为30天,如果设置超时时间长于30天,则30天起效,也就是说超时时间不会超过30天
4. memcached单个key的值最大为1M,如果缓存的值大小大于1M,可以通过将值拆分为多个key进行保存
memcached 分布式的更多相关文章
- Memcached 分布式缓存实现原理
摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...
- memcached分布式实现原理
摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...
- memcached 分布式聚类算法
memcached 分布式集群,该决定必须书面开发商自己.和redis 由分布式server决定.上 memcached 有两个选项用于分布式.第一个是:模运算 另一种是:一致性hash 分布式算法. ...
- memcached分布式缓存
1.memcached分布式简介 memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能.Memcache集群主机不能够相互通信传输数据,它的“分布式”是基于客户端的程序逻辑算 ...
- 让memcached分布式
memcached是应用最广的开源cache产品,它本身不提供分布式的解决方案,我猜想一方面它想尽量保持产品简单高效,另一方面cache的key-value的特性使得让memcached分布式起来比较 ...
- 09 Memcached 分布式之取模算法的缺陷
一: Memcached 分布式之取模算法的缺陷(1)假设你有8台服务器,运行中突然down一台,则求余数的底数就7. 后果: key_0%8==0 ,key_0%7==0 =>hist(命中) ...
- Memcached 分布式缓存实现原理简介
摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...
- Memcached分布式缓存初体验
1 Memcached简介/下载/安装 Memcached是一个高性能的不是内存对象缓存系统,用于动态Web应用以减轻数据库负载.Memcached基于一个存储键/值对的HashMap.其客户端可以使 ...
- 缓存应用--Memcached分布式缓存简介
一. 什么是Memcached Memcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态. ...
随机推荐
- js实现表单验证 常用JS表单验证
CSS代码 @charset "gb2312"; /* CSS Document */ body,dl,dt,dd,div,form {padding:;margin:;} #he ...
- oracle 实现ID自增
CREATE TABLE testTable1 ( ID INT NOT NULL, NAME ) NOT NULL, PRIMARY KEY(ID) ) TABLESPACE MYDB; --创建自 ...
- asp.net静态变量的生命周期和线程安全
void Application_Start开始 void Application_End结束的,本来这就是对的 今天要做一个全局的应用,想确认一下,在网上一找,我的天,说什么的都有 大概分三种 1. ...
- maven导入本地jar包
<dependency> <groupId>com.qrcode</groupId> <artifactId>qrcode</artifactId ...
- cut命令
cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的. (1)其语法格式为:cut [-bn] [f ...
- jsp页面无法解析EL表达式
从eclipse迁移到idea,真是各种被坑. 今天遇到的jsp无法解析EL,页面直接就显示${xxx}好坑爹 Root cause:idea生成的web.xml 的web-app版本居然是2.3,2 ...
- maven增加自定义jar包
1.博客来源: http://www.cnblogs.com/leiOOlei/p/3356834.html 导入平台SDK的方法 mvn install:install-file -DgroupId ...
- How-to: Enable User Authentication and Authorization in Apache HBase
With the default Apache HBase configuration, everyone is allowed to read from and write to all table ...
- Idea安装及简单配置
1. 安装JDK 设置环境变量 JAVA_HOME C:\Program Files\Java\jdk1.8.0_45 CLASSPATH .;%JAVA_HOME%\lib; ...
- LR常用函数以及调用自定义函数
2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...