51CTO博客开发
周六的S2 Web 2.0技术沙龙上介绍了memcache中使用mutex场景(文后要演讲稿),有网友对详情感兴趣,简单介绍如下。 场景 Mutex主要用于有大量并发访问并存在cache过期的场合,如 首页top 10, 由数据库加载到memcache缓存n分钟 微博中名人的content cache, 一旦不存在会大量请求不能命中并加载数据库 需要执行多个I
最近在微博上提到了每周五进行一次内部的技术交流,方法也在不断的改进中,目前情况分享如下。希望也能听到一些更好的建议。 内容选取 大部分都是接近工作的,比如应用层如何访问cache及db、当前项目的重构或某个复杂的算法等。比如一个重构的话题让大家找出项目中目前不合理的若干问题,并分析这些问题存在的历史原因。然后大家分别发表自己认为合适的解决方案并进行讨论。 可以取得的成效 团
Twitter在其7.9一篇官方技术博客Cassandra at Twitter Today提到暂停使用Cassandra来代替MySQL存储feed的计划,这是Twitter一个重要的架构策略 调整,因为之前Twitter一直是业界Cassandra方向的领头羊。 For now, we’re not working on using
到北京后做了不少代码堆砌和纸上谈兵的架构设计工作,有点怀念之前搞的珠三角技术沙龙。由于北京技术方面活动也不少,如果有一些互补的Topic就 锦上添花了,看到杭州一些垂直的技术或产品论坛就非常不错,因此打算在北京也组织一些专业的垂直话题,由于近期工作和微博架构及平台有关,考虑到国内很多 新兴的web 2.0网站或应用也是微博或者facebook这样的方向,大家面
DRY(Don’t Repeat Yourself)是架构设计中经常用到的一句话,这一原则应用非常广泛,在程序设计中同样会用到,不少代码或许不知不觉中违反了这一定义,如《程序员修 炼之道》一书中就有如下一题,重构下面一段代码 if (state == TEXAS) { &n
最近阅读了《卓有成效的程序员》(The Productive Programmer) 一书,此书虽是2009年出版,但是介绍内容的价值并不会随着时间过去而降低,相信5-10年后对于大部分开发者仍然具有借鉴价值。 大部分章节是介绍具体的方法来如何提高程序员工作效率。记住具体的技巧未必有太大价值,很多人都认同一种观点就是,读一本书最终的目标是忘记其中所有的观点,但是它会潜移默化影响了你以后的思维
在使用Twitter几年的时间里面,经常思考微博如何更好的实现,恰好最近几个月也参与了相关工作,大部分都是工程实践,总结实践会促生更具实际价值的理论。因此在QCon Beijing 2010这次演讲参考了不少网友的意见后选择了《构建可扩展微博架构》的题目。 由于在决定选题时知道来自Twitter总部有30万followers的@nk也会讲一个类似的题目,心中当时有点忐忑,最大的顾虑就是要讲的领域
很多优秀的开发者在进入Google之前都是非常活跃的开源贡献者,但是进入Google之后往往就销声匿迹了,包括嘲笑了此现象的Memcached 作者Brad在进入Google之后也无法逃脱此规律。Brad在最近一篇文章Contributing to Open Source projects谈到相关原因 许多优秀开发者都很喜欢编程,他们喜欢研究有趣有挑战的问题,并不特别在意这些项目是否
在前文《多IDC的数据分布设计(一)》中介绍了多IDC数据一致性的几种实现原理,遗憾的是,目前虽然有不少分布式产品,但几乎都没有开源的产品专门针对IDC来优化。本文从实践的角度分析各种方法优缺点。 背景资料 Latency差异 Jeff Dean提到不同数据访问方式latency差异 Numbers Everyone Should Know L1 cache reference&nbs
很多人都熟悉Twitter访问故障时候那条白色的鲸鱼。今年新推出的Twitter Engineering Blog讲述了Twitter白鲸技术故障的原因及解决思路。这是到目前为止Twitter公开的最底层的一篇技术资料。 http://engineering.twitter.com/2010/02/anatomy-of-whale.html 当Web Server发生503错误后,Twitte
在2009年Facebook Developer Garage Shanghai活动上,Five Minutes程延辉 介绍开心农场架构,让大家了解了SNS game的一些挑战和设计模式。 由于农场游戏风靡全球,最近highscalability.com网站采访了美版开心农场FarmVille的Luke Rajlich,他介绍了FarmVille的部分架构资料(1)。 所有模块都是一个可降
上个月跟某个朋友谈及多IDC数据同时读写访问的问题(tweet),当时觉得有不少解决方案,但觉得思路还不够清晰。最近看了Google App Engine工程师Ryan Barrett介绍GAE后端数据服务的演讲稿Transactions Across Datacenters(视频),用Ryan的方法来分析这个问题后就豁然开朗。 按Ryan的方法,多IDC实现有以下几种思路。 一、Master
建议Web应用中大数据集翻页可以采用这种cursor方式,不过此方法缺点是翻页时必须连续,不能跳页。
在 2009年最后一天,根据自己小小的视角提出一些技术建议,供同行参考。 编程语言 首先要能跳出语言之争及语言偏见,架构师需要在中立的角度选择最合适团队的语言,避免在技术决策中加入过多个人喜好。在系统语言层面,主要可关注以下几种 Erlang, 会继续在小圈子内流行,业界应用Erlang技术最大的障碍不是Erlang技术本身,而在于缺乏这方面专业人才。 Scala, 和Erlang不同,S
Twitter的平台总监Ryan Sarver在最近一封给开发者公开email Platform announcements from LeWeb提到,打算将API用户请求限制扩大10倍,由目前的150次/小时扩大到1,500次/小时(但同时将搜索范围缩短到7天)。 *Auth announcements* With the recent launches of Retweet, List
每年这个时候,都很高兴看到有很多技术人的总结,展望及计划。透过别人的经验及计划,可以了解自己的不足。可惜的是到一定层次的人一般不轻易透露自己的想法,使我们错失了很多学习及观摩的机会。以下是个人的一些近期实践打算,跟目前工作业务无关。 网络模型研究,09年做的的C, Erlang, Java and Go Web Server performance test得出了一些实验室的结论
本文整理了Erlounge IV Erlang杭州开发者大会现场的记录的Tweets列表,建议先到 http://ecug.org/agenda/ 下载演讲文档,以便理解上下文。 Twitter的优势是小之美,整理成一篇大文章比较杂乱,仅希望能给不在现场的读者在阅读演讲稿时提供一些参考的信息。
had tested a hello world web server in C, Erlang, Java and the Go programming language. * C, use the well-known high performance web server nginx, with a hello world nginx module * Erlang/OTP * Jav
HTTP是大部分互联网应用接口的首选协议,但是由于HTTP协议短连接且是单向请求(request/response)的特性,决定了调用方要获得实时结果,需要不断的轮询(Polling)服务接口。从而造成大量无意义的请求及服务器相应的开销。针对此现状,许多方案应运而生。比如基于XMPP pubsub的方案、基于HTTP的web-hook的方案、适合即时通讯的comet方案等。但是由于HTTP的简洁及
这是一篇2009年初的资料How FriendFeed uses MySQL to store schema-less data,相信大部分人已经看过了。如Fenng的中文介绍FriendFeed 使用 MySQL 的经验。本文从不同的角度再补充下。作者几个月前也曾经在广州技术沙龙作过一次Key value store漫谈的演讲,许多参会人员对key value方向存在强烈的使用意愿,但同时也对完
根据网上公开资料整理的Twitter架构,主要是cache方面,加了作者自己的补充,跟实际的架构未必完全一致。 一些数据: Cache分Page cache, fragment cache, row cache, vector Cache, cache命中率见图。 Fragment cache存放了API各种请求格式的数据,包括XML, JSON,
在分布式算法领域,有个非常重要的算法叫Paxos, 它的重要性有多高呢,Google的Chubby [1]中提到 all working protocols for asynchronous consensus we have so far encountered have Paxos at their core. 关于Paxos算法的详述在维基百科中有更多介绍,中文版介绍的是choo
很多同学可能熟知Memcached的LRU淘汰算法,它是在slab内部进行的,如果所有空间都被slabs分配,即使另外一个slab里面有空位,仍然存在踢数据可能。你可以把slab理解为教室,如果你的教室满了,即使别的教室有空位你的教室也只能踢人才能进人。 本文介绍的却是另外一种现象。今天监控发现线上一memcached发生数据被踢现象,用stats命令看evictions&g
最近项目中一个分布式应用碰到一些设计问题,听过上次技术沙龙key value store漫谈的同学可能会比较容易理解以下说明。 场景 假定一个有状态的服务,可以理解成web或者socket服务器,每个用户在这个服务上登录后是有状态的,我们把它的状态连同其他加载到内存的用户数据统称用户session。由于session数据实时会变化,加上程序访问session频率大,几乎所有的操作都跟sessi
为了更清楚的看清自己,拿一个成熟工业领域用设计汽车的例子来类比软件设计与开发。 技术人员的学习与实践有三个层次 第一层次 了解专业知识与原理 作为一名汽车设计师,在正式上岗之前,首先要了解汽车的各种原理。如引擎、燃料、悬挂,制动、碟鼓,ABS,风阻,油耗,安全防撞等知识,设计汽车目标并不仅是制造一个漂亮的外壳或者让轮子转起来。相反它一个有机的整体,一个系统的工程,你必须有综合的了解才能进行下
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的任务分布非常简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于图片resize需要消耗大量计算资源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。 Gearman分布式任
活动搞完,一般都得总结一下。但人们对自己当事的东西通常很难表达。就像以前学校考试,每次考完被问考得怎样,往往不知道该怎么回答。大部分题目感觉像是做对了,但又不知道是否符合“标准答案”。考试的标准答案是老师定的,那活动或者演讲的“标准答案”呢,则是在每个参与者心中。 现场情况 很多参会的同学都做了精彩的总结,很客观,所以我也没必要进一步补充了。本次
I had tested the following key-value store for set() and get() MemcacheDB, use memcached client protocol. Tokyo Tyrant (Tokyo Cabinet), use memcached client protocol Redis, use JRedis
Topic 1: 选好业务与技术,单枪匹马做游戏 (赖勇浩) 视频地址:http://www.slideshare.net/iso1600/key-value-store Topic 2: 分布式 Key Value Store 漫谈 (Tim Yang) 地址: 分布式Key Value Store漫谈
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号