Memcached缓存技术介绍.pptx_第1页
Memcached缓存技术介绍.pptx_第2页
Memcached缓存技术介绍.pptx_第3页
Memcached缓存技术介绍.pptx_第4页
Memcached缓存技术介绍.pptx_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Memcached 缓存技术介绍 内容概要 CAP 问题 NoSQL 介绍 Memcached 介绍 Memcached 维护 Memcached 相关 CAP 问题 nCAP理论认为任何基于网络的数据共享系统(分布式数据系统),最多只能满足数据一致性、 可用性、分区容错性,三要素中的两个要素: l数据一致性(C, Consistency);等同于所有节点访问同一份最新的数据副本; l数据可用性(A, Availability); l分区容错性(P, Partition-Tolerance); CAP 应用 NoSQL/RDBMS uNoSQL: 弥补关系型数据库的不足。 关系型数据库优点: 数据一致性/完整性 复杂数据模型处理 关系型数据库不足: 大量数据的写入处理性能问题 对线上表做索引或表结构变更 简单查询快速返回结果的性能问题 NoSQL 优点: 数据易缓存 海量数据存储 快速高并发读写 高可扩展性、分布式,易于数据的分散、处理 NoSQL 不足: 缺乏事务一致性 不支持复杂查询 NoSQL 选型 l数据模型及操作模型: 应用层数据模型是行、对象还是文档型?系统是否能支持进行一些统计工作? l一致性: 数据是否被复制到了多台机器上?不同节点的数据如何保证一致性? l可靠性: 更新数据时,是否立即写到持久化存储设备中?新数据是否能同步到多台机器? l扩展性: 数据量有多大,单机是否能容下?读写并发需求单机是否能支持? l分区策略: 考虑到对扩展性、可用性或者持久性的要求,是否需要一份数据存储在多台机器上?是否需要知道或者 能否知道数据存储在哪些机器上? l事务机制: 业务是否需要 ACID 事务机制? l单机性能: 如果将数据持久化存储在磁盘上,哪种数据结构能满足需求?读写比率?写操作是否会成为IO瓶颈? l负载可评估: 是否支持一些性能监控功能或接口? 注:数据库的数据模型指的是数据在数据库中的组织方式,数据库的操作模型指的是存取这些数据的方式。 通常数据模型包括关系模型、键值模型以及各种图结构模型。操作语言可能包括 SQL、键值查询及 MapReduce 等。NoSQL 通常结合了多种数据模型和操作模型,提供不一样的架构方式。 NoSQL 分类 Memcached 介绍 Memcached是什么? 高性能的分布式内存缓存服务。 典型使用场景:通过缓存数据库查询结果,减少数据库访问次数,降低数据库负载; 提高动态Web应用的访问速度、增强可扩展性。 场景选择: 分布式部署 容忍数据丢失 快速存取数据 频繁访问相同数据 Memcached 特点: 键值对 内存存储 数据可丢失 快速读写处理 基于libevent的事件处理 基于客户端的分布式处理 基于C/S架构,文本行通信协议 Libevent 介绍 lLibevent 是一套跨平台的事件处理接口封装,内部使用 select、epoll、kqueue等系统调 用管理事件机制。 兼容的操作系统包括:Windows/Linux/BSD/Solaris 等操作系统的的事件处理。 l封装的接口包括: poll、select(Windows)、epoll(Linux)、kqueue(BSD)、/dev/pool(Solaris) lMemcached 使用 libevent进行网络并发连接处理,在高并发连接下,保持快速响应能力。 /provos/libevent/ 安装 下载: / /memcached/memcached/ 安装 libevent: rootlocalhost libevent-2.0.19-stable# ./configure -prefix=/usr/local rootlocalhost libevent-2.0.19-stable# make items数量:2690(已经存储2690个key值) STAT items:2:age 487061 # Slab Id=2; 已经存在时间,单位秒 STAT items:2:evicted 0 # Slab Id=2; 被踢出的数量 STAT items:2:evicted_nonzero 0 STAT items:2:evicted_time 0 STAT items:2:outofmemory 0 STAT items:2:tailrepairs 0 STAT items:2:reclaimed 19 STAT items:2:expired_unfetched 15 STAT items:2:evicted_unfetched 0 命令行操作 1、存入Key(key为jrj_abc,value为12345) # printf “set jrj_abc 0 0 5rn12345rn“ | nc 11 11211 STORED # printf “get jrj_abcrn“ | nc 11 11211 VALUE jrj_abc 0 5 12345 END 2、添加value值 # printf “add jrj_abc 0 0 5rn56789rn“ | nc 11 11211 NOT_STORED 3、替换value值 # printf “replace jrj_abc 0 0 5rn34567rn“ | nc 11 11211 STORED # printf “get jrj_abcrn“ | nc 11 11211 VALUE jrj_abc 0 5 34567 END 命令行操作 4、数值增加 # printf “incr jrj_abc 1rn“ | nc 11 11211 34568 5、数值减少 # printf “decr jrj_abc 3rn“ | nc 11 11211 34565 6、数据删除 # printf “delete jrj_abcrn“ | nc 11 11211 DELETED 7、清除所有Key # echo “flush_all“ | nc 11 11216 OK /p/memcached/wiki/NewCommands#No_Reply 优化 n调试块大小 使用 Growth Factor进行调试: 启动时指定 Growth Factor(通过 -f选项),可以适当控制 slab差异,默认值为1.25。 以 verbose模式启动 Memcached: 默认 Growth Factor输出(f=1.25): # memcached -m 1024 -c 40960 -u root -p 11219 -P /var/run/m11219.pid -vv slab class 1: chunk size 96 perslab 10922 slab class 2: chunk size 120 perslab 8738 slab class 3: chunk size 152 perslab 6898 slab class 4: chunk size 192 perslab 5461 设置 Growth Factor为 2倍(f=2): # memcached -m 1024 -c 40960 -u root -p 11219 -P /var/run/m11219.pid -f2 -vv slab class 1: chunk size 96 perslab 10922 slab class 2: chunk size 192 perslab 5461 slab class 3: chunk size 384 perslab 2730 slab class 4: chunk size 768 perslab 1365 输出可见,从192字节的组开始,组大小依次增大为原来的 2倍。 这样设置后,slab之间的差别比较大,有些情况下会浪费内存。 通过重新计算数据的预期平均长度,调整 growth factor,以获得最恰当的内存使用。 工具 1、libmemcached 使用方便,能一次性从多台服务器获得信息。 rootlocalhost libmemcached-1.0.9# ./configure -prefix=/data/server/libmemcached-1.0.9 -with-mysql=/usr/bin -with-memcached=/data/server/memcached-1.4.13 rootlocalhost libmemcached-1.0.9# make & make install 格式: # memstat -servers=server1:port1,server2:port2, # memstat -servers=11:11211,11:11212 Server: 11 (11211) pid: 13827 Server: 11 (11212) pid: 13834 相关命令: memcapable memcat memcp memdump memerror memexist memflush memparse memping memrm memslap memstat memtouch 工具 2、memcached-tool # memcached-tool 11:11211 # Item_Size Max_age 1MB_pages Count Full? 1 96 B 7791 s 1 2 no 2 120 B 491912 s 1 2725 no 3 152 B 506578 s 2 8610 no 列含义: 列含义 #slab class 编号 Item_SizeChunk 大小 Max_ageLRU 内最旧的记录生存时间 1MB_pages分配给 Slab的页数 CountSlab 内的记录数 Full?Slab 内是否含有空闲 chunk 3、memcache-top: # ./memcache-top-v0.6 11:11211 USAGE HIT % CONN TIME EVICT/s READ/s WRITE/s 使用规范 Memcached 实例申请: 单实例 MC缓存池初始化为1G,每组分布式容量共2G; 分配原则: a 缓存数据 500M以内分配公共分布式组; b 缓存数据 500M以上可以申请独立分布式组,视情况而定; c 公共实例,禁止使用无 apps前缀的写入,前缀使用参考 “Key 前缀命名“; d 只允许使用分布式算法缓存数据; 禁止只使用分布式组中的单实例,如只使用 mc11:11211,mc12:11211 中的 mc11:11211 实例 ; 说明: a 单实例 MC缓存池上限为2G,即每个分布式组上限为 4G,缓存数据超过 4G再讨论; b 分布式组的缓存用满,重启各实例扩充至 4G内存,再满则迁移部分缓存至新组; 前缀命名 Key 前缀命名: 格式:mc.apps:key_name 说明: mc.为统一前缀 apps为各自的 应用/业务 名称,长度限制在 10个字符以内 :为前缀和 Key名称分隔符 key_name key 名称 Key 前缀名需要记录在 wiki页,方便查询,防止重名冲突; /pages/viewpage.action?pageId=88015310 按前缀统计: # echo “stats detail on“ | nc 11 11216 OK # printf “set mc.jrj:jrj_abc 0 0 5rn12345rn“ | nc 11 11216 STORED # echo “stats detail dump“ | nc 11 11216 PREFIX mc.jrj get 0 hit 0 set 1 del 0 END # echo “stats detail off“ | nc 11 11216 OK 安全和性能 安全和性能: a 访问限制:使用MC前,需提供 Client IP地址,Memcached服务器开通 iptables限制; b 数据安全:不能用来存储永久性数据,Memcached数据缓存在内存中,随时可能丢失; c 公共实例,不要随意开启 “stats detail on“前缀统计功能,对性能有影响, 如需统计请通知 DBA组; d 公共实例,不要随意 “flush_all“ 缓存数据,如需清除数据请通知 DBA组; 说明: a 由于 MC数据易丢失性,如缓存的是 DB数据,程序中做好检测, 在 MC故障后自动获取后端 DB数据; b 如可能,建议使用连接池连接; 防火墙限制: # Memcached 11211 iptables -I INPUT -p tcp -s localhost -dport 11211 -j ACCEPT iptables -I INPUT -p tcp -s 11 -dport 11211 -j ACCEPT iptables -I INPUT -p tcp -s 49 -dport 11211 -j ACCEPT iptables -A INPUT -p tcp -dport 11211 -j DROP 安全和性能 Memcached Patch(心远): 说明: 基于最新版本 memcached-1.4.13所做的修订,专用于公共 memcached实例,加上以下功能: 1)支持管理员IP白名单 2)非管理员不能执行危险指令:如:flush_all、stats *、slabs * 3)客户端写入数据,key必须带 app前缀 (注:在外界写入时对 key有个 50字节内的字符检查,对mc写入性能影响不大) 源码: /jrjsso/RESEARCH/memcached-1.4.13 安装:同 Memcached 使用: telnet mc1.jrjc.local 11211 show_admin_ip# 显示管理员IP地址白名单 # 注:系统启动后,白名单默认包含 本机访问权限 add_admin_ip IP_ADDR# 添加管理员IP地址,IP_ADDR如:5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论