接触缓存也是这几年时才开始注意,以前也只是知道一点皮毛,后来才了解到外面很多大型网站都大量使用缓存。
一个大型网站如果能够合理使用缓存能有效地减轻系统压力。分别讲下我们熟悉的几个网站的使用缓存技术吧。
豆瓣网
接触豆瓣网的架构也是在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 一级缓存-->二级缓存-->内存-->硬盘-->LAN-->WAN
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 把整个业务逻辑跑出来
返回数据给用户
其实特别在大型网站,会员信息都可以通过缓存获取,如果用户信息更新,可以通过推送技术把缓存更新就可以了,缓存可以独立出来,也可以在应用服务器。
后面继续......
分享到:
相关推荐
ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache...
缓存技术是IT领域中优化系统性能的关键技术之一,它主要通过存储常用数据来减少对慢速存储设备的访问,从而提升系统响应速度。本文将深入探讨缓存的基本概念、常见缓存技术及其应用场景。 首先,缓存(Cache)是一...
".net环境下的缓存技术" 在.NET环境下,缓存技术是提高应用程序性能、稳定性和可用性的重要手段。缓存技术可以解决性能问题、稳定性问题和可用性问题。 缓存技术可以解决的问题包括: * 性能问题:缓存可以将相应...
### ASP.NET 缓存技术详解 #### 一、概述 ASP.NET 缓存技术是用于提高网站性能的关键技术之一。通过缓存数据或页面,可以显著减少数据库访问次数,从而加快响应速度,提升用户体验。本篇文章将深入探讨 ASP.NET ...
Web缓存技术是互联网应用中的关键组成部分,它用于减少网络延迟和带宽消耗,提升用户体验。在进行Web缓存技术概述时,通常会涉及缓存的原理、架构、协议以及其在现代互联网中的应用等方面。 一、Web缓存的基本概念 ...
【缓存技术浅谈】 缓存技术是一种优化性能的关键手段,尤其在Web应用系统中扮演着重要角色。本文将探讨缓存的基本概念、其在Web应用系统中的作用以及各种类型的缓存技术。 缓存,也称作Cache,是高速缓冲存储器,...
ASP.net 页面缓存技术 输出缓存是 ASP.net 中的一种缓存技术,它允许开发者控制页面的缓存,以提高应用程序的性能。输出缓存可以将页面的输出缓存在客户端浏览器、代理服务器或 Web 服务器上,以便快速地将页面呈现...
**JAVA缓存技术详解** Java缓存技术是提高应用程序性能的关键技术之一,它通过存储频繁访问的数据,减少了对慢速资源(如磁盘或远程服务)的依赖,从而提升了系统的响应速度。本篇将深入探讨Java缓存技术的原理、...
超级缓存技术缓存技术asp页面缓存缓存技术asp页面缓存
Java缓存技术是提高应用程序性能的关键工具,尤其是在处理大量数据时。它通过存储频繁访问的数据在内存中,避免了重复的数据库查询,显著提升了响应速度。在这个“Java缓存技术的使用实例”中,我们将深入探讨Java...
ASP.NET缓存技术是提升应用程序性能的关键手段,它通过存储常用数据或计算结果,避免了重复的数据库查询或计算,从而显著减少了响应时间。本文主要总结了ASP.NET中的各种缓存策略及其应用。 首先,我们要了解缓存的...
### 高级地图缓存技术概述 #### 缓存相关概念 在《高级地图缓存技术》这篇文献中,作者刘姗与王知方详细介绍了地图缓存的基础概念及其重要性。缓存策略(Tiling Scheme)是确保不同缓存服务能够相互叠加的关键因素...
Java 缓存技术是优化应用程序性能的关键组成部分,尤其是在处理大量数据或者频繁访问相同资源的应用中。深入理解Java缓存技术可以帮助我们设计出更加高效、响应迅速的系统。在这个主题下,我们将探讨Java缓存的基本...
缓存技术浅谈
当我们谈论"Spring Boot缓存技术"时,实际上是在讨论如何在Spring Boot应用中有效地管理和利用缓存,以提高系统的性能和响应速度。缓存技术是解决高并发场景下数据访问延迟的有效手段,它通过将常用数据存储在内存中...
ASP.NET数据缓存技术是微软开发的Web应用程序框架ASP.NET中的一个重要特性,它主要用于提高网站性能,通过将常用数据暂存于内存中,避免频繁访问数据库,从而减少服务器的负载和响应时间。在这个主题中,我们将深入...