文章分类 -  设计 & 架构

揭秘全球最大网站Facebook背后的那些软件
摘要:以Facebook现在的经营规模,诸多传统服务器的技术均将崩溃或根本无法支撑。那么面对5亿的活跃用户,Facebook的工程师们又将如何让网站平稳运转呢?伯乐在线 - 职场博客的这篇文章将展示Facebook的工程师完成这个艰巨任务所用到的一系列软件。   Facebook级别规模的挑战   在我们深入细节之前,先了解一组Facebook不得不面对数据,你就可以想象这种规模。Facebook每月的PV量:630,000,000,000 (6万3千亿)Facebook上的图片数量超过其他图片网站的总和(包括诸如Flickr这样的图片网站)每个月有超过30亿的图片上传到FacebookFacebo 阅读全文
posted @ 2010-12-23 23:47 菊次郎 阅读(247) 评论(0) 推荐(0)
Google十个核心技术
摘要:本篇将主要介绍Google的十个核心技术,而且可以分为四大类:1.分布式基础设施:GFS,Chubby和Protocol Buffer。2.分布式大规模数据处理:MapReduce和Sawzall。3.分布式数据库技术:BigTable和数据库Sharding。4.数据中心优化技术:数据中心高温化,12V电池和服务器整合。分布式基础设施GFS由于搜索引擎需要处理海量的数据,所以Google的两位创始人Larry Page和Sergey Brin在创业初期设计一套名为“BigFiles”的文件系统,而GFS(全称为“Google File System”)这套分布式文件系统则是“BigFiles 阅读全文
posted @ 2010-12-23 23:29 菊次郎 阅读(566) 评论(0) 推荐(0)
jabsorb学习
摘要:jabsorb是一种基于Ajax/Web2.0的简单轻便的框架,可用于在Web浏览中通过HTTP请求向服务端发送请求,并获得响应数据。1.jabsorb的安装引用:jabsorb-1.2.2.jar,slf4j-api-1.4.2.jar,slf4j-jdk14-1.4.2.jar,jsonrpc.js2.配置web.xml解释一下:这段代码配置了一个jabsorb引擎,实际上就是一个Servlet(和Struts1.x类似,也是通过Servlet作为入口的)。其中gzip_threshold可以取-1、0和一个正整数。如果值为-1,表示不会对响应的内容进行压缩,如果为0,表示对响应的所有内容 阅读全文
posted @ 2010-12-15 23:37 菊次郎 阅读(367) 评论(0) 推荐(0)
json-rpc 为什么?
摘要:之前被js运行的那个速度吓到了(界面就算能做得再漂亮,这样的速度能给用户什么良好的体验),感觉未来的RIA无非是flex和siverlight的天下,前几天google发布了chrome浏览器终于让我重拾对js构建RIA应用的信心,dojo, yui, ext, jquery这些js库再加上css一样可以支撑起未来的RIA,看来js还是挺有生命力的,呵呵。之前做过一个小网站,用的是ext,整个网站大多数内容是静态的,只有一小部份是要和后台交互的,当时想着要是可以直接在js中调服务器端对象的方法就好了,于是找到了dwr,dwr用起来确实很爽,不过我这个人很妙喜欢小一点轻量一点的东西,dwr还是觉 阅读全文
posted @ 2010-12-15 23:25 菊次郎 阅读(309) 评论(0) 推荐(0)
加载外部的jar文件中的类, 完成服务
摘要:这种模式, 就好象servlet,整个java的servlet几乎都是接口。 但是apache的tomcat的jar包实现了接口。 这样的话, 我们就可以通过加载类文件的形式使用实现类。假设, 我们有一个接口, 叫做Service:package plugin;public interface Service { void service();}然后我在 plugin.alexplugin下实现了这个Service接口。主要是两个类: AlexService,以及AlexDao然后, 我把这2个类打成jar包。在主函数中, 我首先需要做的是获取jar包, 并得到一个字节码序列, 注意实现中如何 阅读全文
posted @ 2010-12-14 23:55 菊次郎 阅读(705) 评论(0) 推荐(0)
classloader 体系学习
摘要:classloader就是把类文件加载到jvm中供虚拟机使用,先看一个magic小例子:首先,我定义一个alex/vicky包,然后在这个包内定义一个接口:publicinterfaceIService {voidservice();}然后使用这个接口定义一个实现类:publicclassService extendsIService{@Overridepublicvoidservice(){System.out.println("Alex");}}然后把这个类定义删掉,把这个类生成的class文件放到c:/alex/vicky文件夹下.再做一个实现类:publicclassMain {pub 阅读全文
posted @ 2010-12-14 22:53 菊次郎 阅读(4255) 评论(0) 推荐(0)
EasyMock学习
摘要:EasyMock学习:EasyMock的应用分为5步:1.使用 EasyMock生成 Mock对象;ServletRequestrequest = EasyMock.createMock(ServletRequest.class);如果是一个相对复杂的测试用例,需要对多个接口生成mock对象,使用MockControl来管理:IMocksControlcontrol = EasyMock.createControl();SomeInterfacemockObj = control.createMock(SomeInterface.class);AnotherInterfacemockAnoth 阅读全文
posted @ 2010-12-14 22:50 菊次郎 阅读(336) 评论(0) 推荐(0)
JDK里的设计模式
摘要:下面是JDK中有关23个经典设计模式的示例Structural(结构模式)Adapter:把一个接口或是类变成另外一种。• java.util.Arrays#asList()• javax.swing.JTable(TableModel)• java.io.InputStreamReader(InputStream)• java.io.OutputStreamWriter(OutputStream)• javax.xml.bind.annotation.adapters.XmlAdapter#marshal()• javax.xml.bind.annotation.adapters.XmlAd 阅读全文
posted @ 2010-12-12 14:44 菊次郎 阅读(109) 评论(0) 推荐(0)
Http 1.1 Etag 与 Last-Modified
摘要:在 Blog 盛行的今天,一些 Web 应用需要解析大量的 RSS Feed .如何提高效率是个非常重要的问题.在 MagpieRSS 的 Features 中列举了这样的一条: HTTP Conditional GETsSave bandwidth and speed up download times with intelligent use of Last-Modified and ETag... 阅读全文
posted @ 2010-11-22 23:52 菊次郎 阅读(336) 评论(0) 推荐(0)
Facebook 海量数据处理
摘要:好几个地方看到这个 Facebook - Needle in a Haystack: Efficient Storage of Billions of Photos,是 Facebook 的 Jason Sobel 做的一个 PPT,揭示了不少比较有参考价值的信息。【也别错过我过去的这篇Facebook 的PHP性能与扩展性】图片规模作为世界上最大的 SNS 站点之一,Facebook 图片有多少... 阅读全文
posted @ 2010-11-22 23:18 菊次郎 阅读(181) 评论(0) 推荐(0)
Facebook 的 PHP 性能与扩展性
摘要:炙手可热的 Facebook 是用 PHP 开发的。随着一些技术交流,逐渐能看到 Facebook 技术人员分享的经验。近期这个 geekSessions 站点上看到 Facebook 的 Lucas Nealan 分享的文档比较有参考价值。Cache 为 王任何一个成功的站点都有一套最合适自己的 Cache 策略。Note:这个层次图画的稍微有点问题,不是严格从上到下的。The Alternat... 阅读全文
posted @ 2010-11-22 23:07 菊次郎 阅读(223) 评论(0) 推荐(0)
Yahoo!社区架构
摘要:旧金山举行的 QCon 会议带给我们很多新鲜的信息。虽然没机会参加,但是看看各个网站"晒架构"也是个比较过瘾的事情。请参观并收藏这个页面:Architectures you've always wondered about。eBay 的架构和去年相比基本是换汤不换药,倒是 Yahoo! 的 Ian Flint(这位老兄是 Bix 的运营总监. Bix 已被雅虎收购) 这个 PPT Yahoo! C... 阅读全文
posted @ 2010-11-22 23:04 菊次郎 阅读(390) 评论(0) 推荐(0)
eBay 的数据库分布扩展架构
摘要:在过去的 Blog 中, 我(插一嘴:这里的"我" 如果替换成 "Fenng" 似乎有些自恋, 也不是我喜欢的行文语气, 可发现转贴不留名的行为太多了,他大爷的)曾经介绍过 《eBay 的应用服务器规模》 , 也介绍过 《eBay 的数据量》,在这篇文章中提到过 "eBay 购买了 Quest Share Plex 全球 Licence 用于数据复制",这个地方其实没有说开来。对于 eBay 这样... 阅读全文
posted @ 2010-11-22 22:54 菊次郎 阅读(155) 评论(0) 推荐(0)
学习 Flickr 的 基于 LAMP 的容量规划经验
摘要:好久没怎么正式更新 Blog 了,快荒芜了,长满了 Spam 的荒草。最近其实发现了不少可以和大家一起学习的好内容。Flickr 的 John Allspaw 在 MySQL Conf 2007 作了一个题为 Capacity planning for LAMP (下载PDF文件) 的技术报告,说起容量规划,多少有点空对空的意思,不过这个 PPT 还是介绍了不少 Flickr 的网站运维经验。Fl... 阅读全文
posted @ 2010-11-22 22:51 菊次郎 阅读(144) 评论(0) 推荐(0)
YouTube 的架构扩展
摘要:在西雅图扩展性的技术研讨会上,YouTube 的 Cuong Do 做了关于 YouTube Scalability 的报告。视频内容在 Google Video 上有(地址),可惜国内用户看不到。Kyle Cordes 对这个视频中的内容做了介绍。里面有不少技术性的内容。值得分享一下。(Kyle Cordes 的介绍是本文的主要来源)简单的说 YouTube 的数据流量, "一天的YouTube... 阅读全文
posted @ 2010-11-22 22:47 菊次郎 阅读(121) 评论(0) 推荐(0)
Digg 网站架构
摘要:本篇描述一下 Digg 的网站架构. Digg 工程师采用 LAMP (Linux, Apache, MySQL and PHP) 模式。这个 Alexa 排名在 100 左右的、自我估价 1.5 亿美金的站点目前有超过 100 台的 PC 服务器(足够少了),可以粗略分成三个部分:数据库服务器,Web 服务器,搜索服务器。数据库方面,和其他成功的 Web 2.0 站点一样,也是 MySQL,不过... 阅读全文
posted @ 2010-11-22 22:46 菊次郎 阅读(212) 评论(0) 推荐(0)
Amazon 的 Dynamo 架构
摘要:我在 DBAnotes.net 上记录过不少比较大的网站架构分析(eg: eBay [1], eBay [2]) ,Amazon 一直找不到太多的资料。国庆期间读到了一篇关于 Amazon Dynamo 的论文,非常精彩。Amazon Dynamo 这个高可用、可扩展存储体系支撑了Amazon 不少核心服务.先看一个示意图:从上图可以看出,Amazon 的架构是完全的分布式,去中心化。存储层也做到... 阅读全文
posted @ 2010-11-22 22:44 菊次郎 阅读(640) 评论(0) 推荐(0)
Flickr 的访问统计实现以及其他
摘要:TechCrunch 前两天报道说 Flickr 针对 Pro 用户新增了一项统计功能。今天有看到 Flickr 的 DBA Dathan Pattishall 描述了一下这个统计功能的实现。 Flickr 统计功能的基本技术信息:所有的信息统计是实时的同时用到 MYISAM 与 INNODB 两种引擎数据因为存储需求跨在 6 个 Cluster 上(12 台服务器,6 台提供服务,6 台做失败接... 阅读全文
posted @ 2010-11-22 22:30 菊次郎 阅读(145) 评论(0) 推荐(0)
WikiPedia 技术架构学习分享
摘要:维基百科(WikiPedia.org)位列世界十大网站,目前排名第八位。这是开放的力量。来点直接的数据:峰值每秒钟3万个 HTTP 请求每秒钟 3Gbit 流量, 近乎375MB350 台 PC 服务器(数据来源)架构示意图如下:GeoDNS在我写的这些网站架构的 Blog 中,GeoDNS 第一次出现,这东西是啥? "A 40-line patch for BIND to add geogra... 阅读全文
posted @ 2010-11-22 22:26 菊次郎 阅读(203) 评论(0) 推荐(0)
Tailrank 网站架构
摘要:每天数以千万计的 Blog 内容中,实时的热点是什么? Tailrank 这个 Web 2.0 Startup 致力于回答这个问题。专门爆料网站架构的 Todd Hoff 对 Kevin Burton 进行了采访。于是我们能了解一下 Tailrank 架构的一些信息。每小时索引 2400 万的 Blog 与 Feed,内容处理能力为 160-200Mbps,IO 写入大约在10-15MBps。每... 阅读全文
posted @ 2010-11-22 22:22 菊次郎 阅读(155) 评论(0) 推荐(0)