说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

原作者使用Go开发memcached替代版,现已扎寨谷歌多个项目

HTML文档下载 WORD文档下载 PDF文档下载
memcached作者Brad Fitzpatrick用Go开发了前者的替代版,现已在Google多个生产环境中投入使用。对比老版本memcached,groupcache去掉了缓存有效期及缓存回收机制,随之而来的是通过自动备份来均衡负载。

groupcache是使用Go语言编写的缓存及缓存过滤库,作为memcached许多场景下的替代版本。相关的API文档和实例请猛戳 package groupcache。

对比原始memcached

首先,groupcache与memcached的相似之处:通过key分片,并且通过key来查询响应的peer。

其次,groupcache与memcached的不同之处:

1. 不需要对服务器进行单独的设置,这将大幅度减少部署和配置的工作量。groupcache既是客户端库也是服务器库,并连接到自己的peer上。

2. 具有缓存过滤机制。众所周知,在memcached出现“Sorry,cache miss(缓存丢失)”时,经常会因为不受控制用户数量的请求而导致数据库(或者其它组件)产生“惊群效应(thundering herd)”;groupcache会协调缓存填充,只会将重复调用中的一个放于缓存,而处理结果将发送给所有相同的调用者。

3. 不支持多个版本的值。如果“foo”键对应的值是“bar”,那么键“foo”的值永远都是“bar”。这里既没有缓存的有效期,也没有明确的缓存回收机制,因此同样也没有CAS或者Increment/Decrement。

4. 基于上一点的改变,groupcache就具备了自动备份“超热”项进行多重处理,这就避免了memcached中对某些键值过量访问而造成所在机器CPU或者NIC过载。

5. 当下只支持Go

运行机制

简而言之,groupcache查找一个Get(“foo”)的过程类似下面的情景(机器#5上,它是运行相同代码N台机器集中的一台):

1.  key“foo”的值是否会因为“过热”而储存在本地内存,如果是,就直接使用

2. key“foo”的值是否会因为peer #5是其拥有者而储存在本地内存,如果是,就直接使用

3. 首先确定key “fool”是否归属自己N个机器集合的peer中,如果是,就直接加载。如果有其它的调用者介入(通过相同的进程或者是peer的RPC请求,这些请求将会被阻塞,而处理结束后,他们将直接获得相同的结果)。如果不是,将key的所有者RPC到相应的peer。如果RPC失败,那么直接在本地加载(仍然通过备份来应对负载)。

采用情况

groupcache已经在dl.Google.com、Blogger、Google Code、Google Fiber、Google生产监视系统等项目中投入使用。

更多展示:Presentations

原文链接:  groupcache (编译/仲浩 审校/王鹏)

欢迎关注 @CSDN云计算微博,了解更多云信息。

是时候抛弃Eclipse转向IntelliJ了 Arrow:轻量级的Python时间日期库 编程语言API,你最青睐哪一款? 推动新输入方式发展:英特尔为感知计算设1亿美元基金 AWS到底有多大?目前看来有158000台服务器 C语言实现树的动态查找 第五届中国云计算大会于北京隆重举行 改变企业移动化:新Google地图API支持用户定制 诺基亚旗舰手机EOS真机图曝光 配备“巨型”摄像头 走进豆瓣:豆瓣的技术架构与团队文化分享 加速Web开发的10款HTML5工具 微软式微?AMD、英特尔等开始疏远Windows 语音技术现状:四千万突破语音产业的技术壁垒? 万维网联盟W3C推荐Web性能API 微软郑子颖:Windows Azure如何支持开源系统和软件? EMC 叶成辉:软件定义数据中心实现统一、开放的管理 百度云主任架构师 侯震宇:云终端开启数字生活 中国工程院院士 倪光南:中国云计算在全世界份额远超3% 信息图:未来的企业移动培训应用与技术 “2013年度中国优秀开源项目征集”活动最后三天 为什么开发者倾向于使用杂乱无章的免费工具 EMC合作伙伴销售经理杜术清:实现云的三种途径 开发者想走向海外:你融入老外的圈子了吗? 前微软工程师:美国监控和直接访问服务器?这不太可能 代码、TDD速查表 如何选择前端架构:服务器端HTML vs. JS部件 vs.单页Web应用 世界上最高深的Android特洛伊病毒 招聘iOS开发,老板必问的5个问题 护航科技吴伟湘:IT离线安全体检服务将带来颠覆 百度王继平:移动互联网时代云平台思路 “第八届开源中国开源世界高峰论坛”火热开启 奇怪的问题,急!!!!!!!! 有没有客家人?进来报道一下。 帮忙看几行代码是什么错误? 请问listview的排序问题!!!!!!!!!!???????????????????????????? 其实如今的中国,一个字就可以概括 再VC7中加入对话框的问题 TCP连接发送数据如何限制一个连接的最大速度? win2003 cdk??? 机子无法启动,各位大虾帮帮忙! 在一个FORM里面绘制了GDI对象,怎样将FORM中的选定的区域转换为位图呢? 心情不好,放分。 安装win 98时,提示“没有足够的常规内存”,该如何解决?? 奇怪的查询问题,既没有出错,也没有正确结果。 一个很基础的指针问题,为什么非要转化为一个二级指针再转化为一级指针呀,才能 想自己动手写一个论坛,请大虾推荐几本asp入门书籍 想比较一下corba webservice dcom的异同,作为论文发表如何 如何编程实现对共享文件的进行访问监视? 如何改变select-sQl查询窗的名字啊,默认是“查询”,能否改成自已喜欢的? 求助:做程控滤波器(模拟)可以用哪些芯片??? 请问取整用 那个函数? 快 C# Builder 1.0 企业版BT下载! 很容易的问题,送分了模态对话框问题 这个API调用没胡有语 错误,但为什么在打印出来好多小四方格呀,我以前也遇到 过,不知什么原因 pb8.0与java VM安装问题请教! 请教高手,我将整个目录的文件写到一个ListBox1里,想按字母顺序写入!! 一个页转到另一个页后,另一个页的地址栏上将汉字转换成了%%%%类似的东西,如何解决? form 标签里的 enctype="multipart/form-data" 是什么意思? 哪有jsp的免费空间?最好支持ftp的 我在程序里写了insert语句也执行成功了,但在sql explorer的data里却找不到该条记录?但insert相同记录却也提示记录重复?interbase数据 求解一水晶报表打包后的问题? 我出差了,才回来看了一眼可用分大大的多了,可是信誉分才有56了,怎么办呀!! rh8的文本界面能不能显示中文啊 请问一个命名管道的问题 一个简单的报表问题!请各位来帮忙解决! 各位老大帮我看看啊,什么都好了,就差这个了。 如何为动态创建的控件添加事件过程? C# Builder 1.0 企业版BT下载! 水晶报表求和 作软件需不需要认证?需要,不需要,我们只是讨论一下,不要这么认真 请问当我单击某个按钮时,如何设置此时的鼠标状态??? sql语言里:条件not in 与not exist有什么区别? 三级上机考试模拟软件怎么用? 怎样学API???????? 一个数据查询的问题,在线等待 在哪里可以下载Screnc.exe?急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急 菜鸟问题, GCC 编译出的目标码中函数前面有没有下划线呀? 如何实现一个表单的自动提交? 请教各位,如何在powerpoint 中用vb宏向幻灯片中写入文本 公司和厂有什么区别? 如何实现在Console的进度显示? 请问javaBean 是什么东西? 帮我找个英语演讲女的讲过的就行,只是女的很难找,我们是模仿比赛,时间很短,文本和音频都要 英语演讲啊,大家帮忙找啊,拜托了1.what I like most about My school2.The Importance of seconday Vocational school3.The Happiest Day I Ever Had in MY life 这个是题目啊,要快啊,我会给分的.急用啊! 学一段英语演讲,帮忙找点素材学一段经典的英语演讲,要标准的美音,(带录音带稿子)我是学学计算机的,最好弄段带计算机性质的.不是也计算机的也没什么关系,主要是锻炼.呵呵我的英语基 在数列{an}中,a1=1,an加1=(1加n分之1)an加2的n次方分之n加1 求数列{an}的前n项和Sn?急 sig签名错误什么意思 快手sig签名错误什么意思 个人签名怎么问题我叫李明兵,签名的话,要怎么签比较好看点,就写草字,有哪几种, 这篇文哪有错 在顺便改一下喽 GoshoppingGo shopping is a traditional way.we buy something inthis way for many years .Even today ,many people are used to go shopping.Going shopping hasa lot of advantages,too.You can call on some friends wit 帮忙给看一下错误在哪里,该怎么改正.classMysecondApp {public static void main(String ar[] ) {charc='a';int i=10;float f=15.7;sum(i,f) ;System.out.println("c="+c);}static voidsum(int i,j) {float p;p =i+j;System.out.println("sum is :"+p); 已知数列{an}中,a1=1,AnAn+1=2^n(n∈N*) (1)求数列(An)的前2n项之和S(2n) 已知数列{an} a1 =1 anan=2n a9+a10的值.重要的是方法.a1 =1 anan+1=2^n 求a9+a10 韩国6岁萝莉美照 【组图】劳动人口不足 推迟退休成亚洲国家\"奥巴马座驾“野兽”细节曝光:配有自动英国汇丰银行报告显示中国成最受欢迎移盘点全球最妩媚的变性人(组图)国资委部署国企改革:方案争取三中全会伊朗因美国制裁导致中国“欠了”其22报告称美财政不确定性冲击90万就业岗北京数十村民阻拦农田被承包种树时遭打猪贩两次上访被强制治疗 起诉政府被驳房利美起诉多家银行操纵LIBOR50对铁路新人集体婚礼微直播 网友直余学友任驻马店市委书记 前任涉违纪被男子冒充流浪女之父将其卖作他人妻非法一快递员为讨工资与老板争吵不慎捅死老闸北一出租房起火疑人为纵火 一对夫妻谁能代表舌尖上的上海?老上海:远不止澳大利亚:对失联马航MH370航班的韩国父亲选最便宜丧葬品为孩子入殓 称江苏如皋:这里的孩子为何“零择校”?辽宁一医院副科长招标采购药品器械吃回山西太原:政府工作接受群众“年检”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘