缓存技术

接触缓存也是这几年时才开始注意,以前也只是知道一点皮毛,后来才了解到外面很多大型网站都大量使用缓存。
一个大型网站如果能够合理使用缓存能有效地减轻系统压力。分别讲下我们熟悉的几个网站的使用缓存技术吧。
豆瓣网
接触豆瓣网的架构也是在2009年qconn大会,当时才知道豆瓣的缓存使用比较牛。
豆瓣使用的缓存是大名鼎鼎的Memcache,豆瓣使用Memcache时对libmemcache做了python封装(使用Pyrex),性能是纯python版的3x+,后来对修正了libmemcached的consistent hash相关bug。其中consistent hash很有意思,采用圆周型有效的解决节点增加的问题。
豆瓣其实对Memcache的客户端进行了改造,其实如果使用java可以考虑用hessian改造客户端,hessian的序列化和反序列化还是比较牛的。
手机之家
手机之家应该是自己开发了缓存系统,不过有意思的是,手机之家是通过dal连接缓存,dal是他们自己开发的组件,有效地使业务分离,避免程序员自己写入key和value值,而dal也集成了数据库和搜索功能。看来dal比较强大。网上很文章说过,高春辉是老大,他博客就有关于手机之家的架构。其实我个人觉得不应该在dal中集成那么多功能,其实可以搞过搜索dal,缓存dal,分开是不是会好点。
优酷网
缓存黄金原则:让数据更靠近 CPU
CPU--&gtCPU 一级缓存--&gt二级缓存--&gt内存--&gt硬盘--&gtLAN--&gtWAN
Youku 自己的内部项目,针对大文件缓存的。目前开源软件中,Squid 的 write() 用户进程空间有消耗,Lighttpd 1.5 的 AIO(异步I/O) 读取文件到用户内存导致效率也比较低下。Youku 不用内存做缓存(避免内存拷贝,避免内存锁)。值得注意的是,缓存技术容易被滥用,也有副作用,比如接到老大哥通知要把某个视频撤下来,如果在缓存里是比较麻烦的。其实酷优大型文件是通过分成多个小文件,这样缓冲起来也提高了速度。
Memcached动态任意扩展(Consistent hashing),基于libevent(封装epoll),memcached兼容接口,本地unix domain socket,对Memcached长连接,类似facebook的mencached应用。
其实从优酷的对大型文件处理我们可以得到启发,很多大行文件处理可以学习这样。
facebook
获取个人信息数据:通过Cache,隐性通过用户所在的 DB 获取(基于 User-ID 获知 DB)
获取朋友连接信息:通过Cache,否则的话通过DB(基于 User-ID 获知 DB)
并行抓取每个朋友的 10个照片相册 ID ,从Cache抓取,如果失效,再从 DB 抓取(基于相册 ID)
并行抓取最近相册中的照片数据
运行PHP 把整个业务逻辑跑出来
返回数据给用户
其实特别在大型网站,会员信息都可以通过缓存获取,如果用户信息更新,可以通过推送技术把缓存更新就可以了,缓存可以独立出来,也可以在应用服务器。
后面继续......

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10594357/viewspace-629841/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10594357/viewspace-629841/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值