1 / 16

架构平台部 Cache及算法 培训

架构平台部 Cache及算法 培训. 讲师: 娄继冰 日期:2009年 08 月 12 日. 课程简介. 本课程主要讲解Cache的用法、实现原理、后续的优化点以及目前流行的Cache系统,从多个角度描述Cache目前在服务器层的使用,尤其其所带来的明显性能提升,并结合目前架构平台部属下的服务器模块进行说明。 通过该课程的学习可以对Cache有个基本的了解,充分了解其在服务器架构中所扮演的重要角色,并对部门服务器层的Cache有一个初步的认识,为后续的工作做一个铺垫。. 目录. Cache的作用 Cache的实现原理 Cache在TFS中的应用

xannon
Download Presentation

架构平台部 Cache及算法 培训

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 架构平台部Cache及算法培训 讲师:娄继冰 日期:2009年08月12日

  2. 课程简介 本课程主要讲解Cache的用法、实现原理、后续的优化点以及目前流行的Cache系统,从多个角度描述Cache目前在服务器层的使用,尤其其所带来的明显性能提升,并结合目前架构平台部属下的服务器模块进行说明。 通过该课程的学习可以对Cache有个基本的了解,充分了解其在服务器架构中所扮演的重要角色,并对部门服务器层的Cache有一个初步的认识,为后续的工作做一个铺垫。

  3. 目录 • Cache的作用 • Cache的实现原理 • Cache在TFS中的应用 • 通用的MemCached • 课后作业 • 推荐书目

  4. 自我简介 娄继冰(lollylou) 架构平台部-存储平台中心-平台开发组 主要做TFS相关的项目开发及模块性能优化

  5. Cache的作用 • 基于20/80原则,可以用最少的存储抗住最多的请求 • 用最快速的设备对最多的请求作出最及时的响应 • 对相对热点的数据提供最优的服务性能 • 通过降低对落地设备的压力,提高系统整体的支撑能力 • 通过写Cache提高用户上传体验,并合并请求降低后台压力 Cache注意点: • 脏数据的安全性 • 数据的一致性

  6. Cache的实现原理 Cache通常有两种类型: • 内存Cache • 用户数据保存在Chunk内存块中 • Hash+LRU链表,通过Hash链表快速地找到指定Key的Inode • 通过Inode节点从指定的Chunk内存快中读取数据 • LRU通过淘汰策略对节点进行热点更新和节点淘汰 • 定时将脏节点dump到磁盘文件中 • 节点更新写binlog到磁盘文件中 • 磁盘Cache • 用户数据保存在Chunk的磁盘块中 • Hash+LRU链表,通过Inode找到指定Key的数据 • 定时将内存的数据镜像到磁盘文件中 • 节点更新写binlog到磁盘文件中

  7. Cache的实现原理

  8. Cache的实现原理 Cache的数据恢复 • 内存Cache一般都会有脏节点,磁盘Cache的数据量比较大,因此都需要直接从本地恢复数据,目前采用的恢复数据方式是dump+binlog • dump文件 • 内存Cache是定时将其脏节点的数据保存在本地磁盘文件中 • 磁盘Cache是将整个所管理的内存镜像到本地磁盘文件中 • binlog • 内存Cache对每次节点的更新都将数据保存在本地磁盘文件中 • 磁盘Cache对每次节点的更新只需要将节点信息保存文件中 • 数据恢复 • 首先从dump文件将数据恢复到内存 • 按照时间顺序将通过日志流水恢复节点更新数据

  9. Cache的实现原理 Cahce涉及的算法 • LRU算法 “最近最少使用算法”,它是将最近一段时间内最少被访问过的节点淘汰出局。将最近访问比较频繁的节点放在链表首部。至于频繁的标准可以用时间间隔移动或者每次移动的方式等。 • Hash算法 哈希算法是将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。衡量Hash算法的好坏主要看其Hash值的散列度及其计算的复杂度。 • 红黑树算法 • 每一个节点不是红色就是黑色 • 根节点总是黑色的 • 如果节点是红色的,则它的子节点必须是黑色的 • 根节点到叶节点或空子节点的每条路径,包含同等的黑节点

  10. 天津/南京Cache 缩略图Cache chxmaster trxd chxd DU chxd Disk存储 idxmaster md5master TDB 仓库 md5chk useridx fileidx Cache在TFS中的应用 一个服务器性能如何80%的情况下取决于其对Cache的利用,因此,对TFS这么一个稳定高效的存储系统,Cache的使用尤为关键。所有底层存储的上层均由一个Cache模块(Download、Upload、UserIdx、FileIdx、Md5Chk),包括上层的缩略图Cache和大图Cache,其均是为了提高对原始数据的读写性能而设置的中间层Cache模块。

  11. 通用的MemCached

  12. 通用的MemCached HashTable自动扩展 • memcached使用的是hashtable来维护名值对 • 为了降低hash值的碰撞,memcached 使用自动扩展的策略 • 当hashtable中保存的item数目大于它的大小的1.5倍时,memcached就会实行hashtable的2倍容量扩展 • 并把原hanshtable中的元素会重新hash并放到新的hashtable中 • 而且为了降低查找的延时,这种数据迁移会分散在多次的访问中 LRU • 并不是每次get一个item,它都会被放到LRU的链首 • 只有两次访问间隔60秒以上,item才会被更新到链首

  13. 课后作业 • 作业内容: • 1、设计内存Cache的Inode和Chunk的数据结构 • 2、设计内存Cache的dump和binlog文件的数据格式 • 3、内存Cache和磁盘Cache的(dump+binlog)的区别及原理 • 作业要求: • 1、通过代码的形式展现数据结构及其数据排列格式 • 2、说明dump和binlog的作用、原理及保存的数据格式 • 3、说明其原理的基础上,比对其实现的区别及原因 • 作业例子程序,Google~~

  14. 推荐书目: • MemCached源码分析-----Google • 深入理解Linux内核(第三版)-----陈莉君等译 • STL源码剖析-----侯捷

  15. Q&A

  16. 谢谢!

More Related