架构平台部 cache及算法 培训
DESCRIPTION
架构平台部 Cache及算法 培训. 讲师: 娄继冰 日期:2009年 08 月 12 日. 课程简介. 本课程主要讲解Cache的用法、实现原理、后续的优化点以及目前流行的Cache系统,从多个角度描述Cache目前在服务器层的使用,尤其其所带来的明显性能提升,并结合目前架构平台部属下的服务器模块进行说明。 通过该课程的学习可以对Cache有个基本的了解,充分了解其在服务器架构中所扮演的重要角色,并对部门服务器层的Cache有一个初步的认识,为后续的工作做一个铺垫。. 目录. Cache的作用 Cache的实现原理 Cache在TFS中的应用 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/1.jpg)
架构平台部Cache 及算法培训
讲师:娄继冰日期: 2009 年 08 月 12 日
![Page 2: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/2.jpg)
课程简介
本课程主要讲解 Cache的用法、实现原理、后续的优化点以及目前流行的 Cache系统,从多个角度描述 Cach
e目前在服务器层的使用,尤其其所带来的明显性能提升,并结合目前架构平台部属下的服务器模块进行说明。
通过该课程的学习可以对 Cache有个基本的了解,充分了解其在服务器架构中所扮演的重要角色,并对部门服务器层的 Cache有一个初步的认识,为后续的工作做一个铺垫。
![Page 3: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/3.jpg)
目录
Cache 的作用
Cache的实现原理
Cache在 TFS中的应用
通用的MemCached
课后作业
推荐书目
![Page 4: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/4.jpg)
自我简介
娄继冰( lollylou )
架构平台部 -存储平台中心 -平台开发组
主要做TFS相关的项目开发及模块性能优化
![Page 5: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/5.jpg)
Cache 的作用
基于 20/80原则,可以用最少的存储抗住最多的请求用最快速的设备对最多的请求作出最及时的响应对相对热点的数据提供最优的服务性能通过降低对落地设备的压力,提高系统整体的支撑能力通过写 Cache提高用户上传体验,并合并请求降低后台压力
Cache注意点:脏数据的安全性数据的一致性
![Page 6: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/6.jpg)
Cache 的实现原理Cache 通常有两种类型:内存Cache
用户数据保存在Chunk 内存块中Hash+LRU链表,通过Hash链表快速地找到指定Key的 Inode通过 Inode 节点从指定的Chunk 内存快中读取数据LRU通过淘汰策略对节点进行热点更新和节点淘汰定时将脏节点dump到磁盘文件中节点更新写binlog 到磁盘文件中
磁盘Cache用户数据保存在Chunk 的磁盘块中Hash+LRU链表,通过 Inode 找到指定Key的数据定时将内存的数据镜像到磁盘文件中节点更新写binlog 到磁盘文件中
![Page 7: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/7.jpg)
Cache 的实现原理NODE区
头部结构
CHUNK区
hashBucket
NODE
头部结构
CHUNK CHUNK CHUNK CHUNK
CHUNK CHUNK CHUNK CHUNK
CHUNK CHUNK CHUNK CHUNK
NODE NODE
NODE NODE NODE
CHUNK空闲链表
NODE/CHUNK数据链表
NODE空闲链表
NODE附加链表
NODE MAP链表
为避免图形过于复杂, NODE到CHUNK的数据链表只画了一条示意
![Page 8: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/8.jpg)
Cache 的实现原理Cache 的数据恢复内存Cache 一般都会有脏节点,磁盘Cache 的数据量比较大,因此都需要直接从本地恢复数据,目前采用的恢复数据方式是dump+binlogdump文件
内存Cache 是定时将其脏节点的数据保存在本地磁盘文件中磁盘Cache 是将整个所管理的内存镜像到本地磁盘文件中
binlog内存 Cache 对每次节点的更新都将数据保存在本地磁盘文件中磁盘Cache 对每次节点的更新只需要将节点信息保存文件中
数据恢复首先从dump文件将数据恢复到内存按照时间顺序将通过日志流水恢复节点更新数据
![Page 9: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/9.jpg)
Cache 的实现原理Cahce 涉及的算法LRU算法“最近最少使用算法”,它是将最近一段时间内最少被访问过的节点淘汰出局。将最近访问比较频繁的节点放在链表首部。至于频繁的标准可以用时间间隔移动或者每次移动的方式等。Hash算法哈希算法是将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。衡量Hash算法的好坏主要看其Hash值的散列度及其计算的复杂度。红黑树算法
每一个节点不是红色就是黑色根节点总是黑色的如果节点是红色的,则它的子节点必须是黑色的根节点到叶节点或空子节点的每条路径,包含同等的黑节点
![Page 10: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/10.jpg)
Cache 在 TFS 中的应用
trxd
天津 / 南京 Cache
缩略图 Cache
chxmaster
idxmaster md5master
useridx fileidx
md5chk
DU chxd chxd
TDB仓库
Disk 存储
一个服务器性能如何 80%的情况下取决于其对 Cache的利用,因此,对 TFS 这么一个稳定高效的存储系统, Cache的使用尤为关键。所有底层存储的上层均由一个 Cache模块 (Download、 Upl
oad、 UserIdx、 FileIdx、Md5C
hk),包括上层的缩略图 Cache和大图 Cache,其均是为了提高对原始数据的读写性能而设置的中间层 Cache模块。
![Page 11: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/11.jpg)
通用的 MemCached
![Page 12: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/12.jpg)
通用的 MemCached
HashTable自动扩展memcached使用的是 hashtable来维护名值对为了降低 hash 值的碰撞, memcached 使用自动扩展的策略当 hashtable中保存的 item数目大于它的大小的 1.5 倍时, memcached 就会实行 hashtable的 2 倍容量扩展并把原 hanshtable中的元素会重新 hash并放到新的 hashtable中而且为了降低查找的延时,这种数据迁移会分散在多次的访问中
LRU并不是每次 get一个 item,它都会被放到 LRU的链首只有两次访问间隔 60 秒以上, item 才会被更新到链首
![Page 13: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/13.jpg)
课后作业
作业内容:1、设计内存 Cache的 Inode和 Chunk的数据结构2、设计内存 Cache的 dump和 binlog文件的数据格式3、内存 Cache和磁盘 Cache的 (dump+binlog)的区别及原理
作业要求:1、通过代码的形式展现数据结构及其数据排列格式2、说明 dump和 binlog的作用、原理及保存的数据格式3、说明其原理的基础上,比对其实现的区别及原因
作业例子程序, Google~~
![Page 14: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/14.jpg)
推荐书目:
MemCached 源码分析 -----Google
深入理解 Linux 内核 ( 第三版 )----- 陈莉君等译
STL 源码剖析 ----- 侯捷
![Page 15: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/15.jpg)
Q&A
![Page 16: 架构平台部 Cache及算法 培训](https://reader033.vdocuments.mx/reader033/viewer/2022061406/56815294550346895dc0b985/html5/thumbnails/16.jpg)