`
hkaimin1989
  • 浏览: 9210 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

可伸缩性的10年探索:知名网站的技术发展历程

 
阅读更多
互联网已经发展多年,其中不乏脱颖而出者,这些网站多数都已存在了接近10年或10年以上,在如此长时间的发展过程中,除了业务上面临的挑战,在技术上也面临了很多的挑战。我挑选了一些Alexa排名较前的网站(排名截止到2012年4月21日),看看它们在技术上是如何应对业务发展过程中的挑战的。





Google目前Alexa排名第1。它诞生于1997年,当时是一个研究性项目,每个月build一次索引,build出来的索引通过sharding(shard by doc)的方式分散到多台服务器(Index Server)上,具体的网页数据同样通过sharding的方式分散到多台服务器(Doc Server)上,当用户提交请求时,通过前端的一台服务器将请求提交给Index Server获得打了分的倒排索引,然后从Doc Server提取具体的网页信息(例如网页标题、搜索关键词匹配的片段信息等),最终展现给用户。

随着索引的网页增加,这个结构可通过增加Index Server以及Doc Server来存储索引以及网页的数据,但仍然会面临其他很多方面的问题,于是在这之后的十多年的时间里,Google做了很多事情来改进上面的结构。

1999年,Google增加了一个Cache Cluster,用来Cache查询的索引结果和文档片段信息,同时将Index Server和Doc Server通过Replicate的方式变成了Cluster。这两个改造带来的好处是网站的响应速度、可支撑的访问量以及可用性(Availability)得到了提升。这个变化造成了成本的增加,Google在硬件方面的风格始终是不用昂贵的高端硬件,而是在软件层面来保证系统的可靠性及高性能,于是同年,Google开始采用自行设计的服务器来降低成本。2000年,Google开始自行设计DataCenter,采用了各种方法(例如采用其他的制冷方法来替代空调)来优化PUE(能源利用率),同时对自行设计的服务器也做了很多化。2001年,Google对Index的格式进行了修改,将所有的Index放入内存, 这次改造带来的好处是网站的响应速度以及可支撑的访问量得到了极大的提升。2003年,Google发表了文章Google Cluster Architecture,其Cluster结构组成为硬件LB+Index Cluster+Doc Cluster+大量廉价服务器(例如IDE硬盘、性价比高的CPU等),通过并行处理+sharding来保证在降低对硬件要求的同时,响应速度仍然很快。同年Google发表了关于Google文件系统的论文(GFS在2000年就已经上线),这篇论文很大程度也体现了Google不用昂贵硬件的风格,通过GFS+大量廉价的服务器即可存储大量的数据。2004年,Google再次对Index的格式进行了修改,使得网站的响应速度继续提升。同年Google发表关于MapReduce的论文,通过MapReduce+大量廉价的服务器即可快速完成以前要使用昂贵小型机、中型机甚至是大型机才能完成的计算任务,而这显然对于Google快速地构建索引提供了很大的帮助。2006年,Google发表了关于BigTable的论文(2003年开始上线),使得海量数据的分析能够达到在线系统的要求了,这对于Google提升网站的响应速度起到了很大的帮助。

以上3篇论文彻底改变了业界对于海量数据的存储、分析和检索的方法(小道消息:Google内部已完成了GFS、MapReduce、BigTable的替换),也奠定了Google在业界的技术领导地位。

在一些场景中,Google也采用MySQL来存储数据。同样,Google对MySQL也做了很多修改,它使用的MySQL信息可以从https://code.google.com/p/google-mysql/了解。

2007年,Google将build索引的时间缩短到分钟级,当新网页出现后,几分钟后即可在Google搜索到,同时将Index Cluster通过Protocol Buffers对外提供Service,以供Google各种搜索(例如网页、图片、新闻、书籍等)使用,除了Index Cluster提供的Service外,还有很多其他的Service,例如广告、词法检查等。Google的一次搜索大概需要调用内部50个以上的Service,Service主要用C++或Java来编写。2009年,Google的一篇《How Google uses Linux》文章,揭示了Google在提升机器利用率方面也做了很多的努力,例如将不同资源消耗类型的应用部署在同一台机器上。

在之后,Google又研发了Colossus(下一代类GFS文件系统)、Spanner(下一代类BigTable海量存储和计算架构)、实时搜索(基于Colossus实现),主要都是为了提升搜索的实时性以及存储更多数据。除了在海量数据相关技术上的革新外,Google也不断对业界的传统技术进行创新,例如提高TCP的初始拥塞窗口值、改进HTTP的SPDY协议、新的图片格式WebP等。

在Google的发展过程中,其技术的改造主要围绕在可伸缩性、性能、成本和可用性4个方面,Google不采用昂贵硬件的风格以及领先其他网站的数据量决定了其技术改造基本都是对传统的软硬件技术的革新。





Facebook目前Alexa排名第2。它采用LAMP构建,随着业务的发展,它也在技术上做了很多改造。

作为改造的第一步,Facebook首先在LAMP结构中增加了Memcached,用来缓存各种数据,从而大幅度提升系统的响应时间以及可支撑的访问量,之后又增加了Services层,将News Feed、Search等较通用的功能作为Service提供给前端的PHP系统使用,前端的系统通过Thrift访问这些Service。Facebook采用了多种语言来编写各种不同的Service,主要是针对不同的场景选择合适的语言,例如C++、Java、Erlang。
详细:http://hkaimin.blog.163.com/blog/static/199697052201252793029275/
  • 大小: 11.9 KB
  • 大小: 7.8 KB
分享到:
评论

相关推荐

    VB.NET可伸缩性技术手册

    VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB.NET可伸缩性技术手册VB...

    分布式系统可伸缩性研究综述_陈斌.pdf

    并行任务调度是提高系统可伸缩性的一个关键技术,通过对任务进行合理分配和并行处理,可以提升整体系统的处理能力。 此外,设计和测试也是保证可伸缩性的关键环节。设计阶段应考虑系统架构的可扩展性和模块化,以...

    windows可伸缩性范例

    在IT领域,尤其是在系统管理和架构设计中,"可伸缩性"是一个至关重要的概念。Windows操作系统作为广泛应用的桌面和服务器平台,同样面临着如何提供高效、灵活的可伸缩性解决方案的挑战。本篇将深入探讨"Windows可...

    可伸缩性最佳实践:来自eBay的经验

    可伸缩性最佳实践:来自eBay的经验

    数据访问宝典-实现最优性能可伸缩性的数据库应用程序

    资源名称:数据访问宝典-实现最优性能可伸缩性的数据库应用程序内容简介:在当今的企业数据库应用程序中,性能和可伸缩性比过去任何时候更为关键,传统的数据库调整对于解决可能在这些应用程序中遇到的性能问题有些...

    VB.NET可伸缩性技术手册(下)

    开发人员常常被寄予厚望——创建出健壮的符合业务要求的应用程序。...本资料为《VB.NET可伸缩性技术手册》一书带详细书签的PDF清晰电子版,可用Adobe Reader7.0或兼容阅读工具打开,推荐.NET爱好者下载!

    VB.NET可伸缩性技术手册(上)

    开发人员常常被寄予厚望——创建出健壮的符合业务要求的应用程序。...本资料为《VB.NET可伸缩性技术手册》一书带详细书签的PDF清晰电子版,可用Adobe Reader7.0或兼容阅读工具打开,推荐.NET爱好者下载!

    构建一个可伸缩性的容器平台的挑战与机遇

    在IT行业中,构建一个可伸缩性的容器平台是现代企业数字化转型的关键步骤。这涉及到将应用程序和服务部署在轻量级容器内,通过自动化工具进行管理和扩展,以应对不断变化的业务需求。本文将深入探讨构建这样的平台所...

    分布式系统可伸缩性研究综述.pdf

    可伸缩性是衡量分布式系统是否能随着需求和资源的变化而持续满足性能需求的能力。在计算机科学中,特别是在分布式系统领域,可...随着云计算和虚拟化技术的发展,可伸缩性的研究将继续是分布式系统领域的一个重要课题。

    知识领域: 软件架构 技术关键词: 微服务、容器化、事件驱动架构、领域驱动设计 内容关键词: 架构模式、系统设计、可伸缩性

    内容关键词: 架构模式、系统设计、可伸缩性 用途: 学习设计和构建可靠、可扩展的软件系统 资源描述: Martin Fowler 的《企业应用架构模式》一书是软件架构领域的经典之作,提供了丰富的架构设计模式和实践经验。

    MPEG2 SNR可伸缩编码

    本代码实现了对MPEG2 SNR可伸缩性编码,可以作为理解SNR可伸缩性编码的入门。

    可伸缩的系统技术方案

    在“可伸缩的系统技术方案”这一主题下,我们探讨了一系列旨在提高系统处理能力和适应性的技术策略与实践,下面将对这些知识点进行详细解析。 ### 垂直伸缩 垂直伸缩,又称纵向伸缩,是指通过增加单一服务器的硬件...

    互联网创业核心技术 构建可伸缩的web应用

    如何在创业之初,就构建好适合业务长远发展的技术架构:以不变应万变、以可伸缩性对抗变化莫测的业务需求,为自己的发展赢得时间、为产品创造优秀的用户体验?本书针对此痛点,给出了适切中肯的建议。

    深入比较MySQL与Oracle:性能、可伸缩性与最佳实践

    本文将深入探讨MySQL与Oracle在性能、可伸缩性以及最佳实践方面的比较,并通过代码示例来展示它们在实际应用中的表现。 MySQL和Oracle在性能和可伸缩性方面各有优势。Oracle适合大型企业和数据密集型应用,而MySQL...

    VB.NET可伸缩性技术手册(PDG)

    **VB.NET可伸缩性技术手册(PDG)** 在软件开发中,可伸缩性(Scalability)是一项至关重要的特性,它关乎程序在面对负载增加、数据增长或用户需求变化时,能否有效地扩展和适应。VB.NET作为.NET框架的一部分,提供了...

    互联网创业核心技术-构建可伸缩的Web应用

    《互联网创业核心技术:构建可伸缩的web应用》针对互联网创业需求快速迭代,业务快速发展,短时间内用户、数据、访问量激增的特点,提纲挈领地描述了伸缩性架构的基本原理与设计原则,详细阐述了Web应用前端层、服务...

    基于H264的精细可伸缩性视频编码研究

    基于给定的信息,我们可以深入探讨基于H.264的精细可伸缩性视频编码(FGS)的研究及其关键技术。 ### 一、引言 随着互联网技术的发展,视频传输的需求日益增长,特别是在有限带宽环境下如何高效传输视频数据成为了...

    大型网站技术架构:核心原理与案例分析

    第1篇 概述 1 大型网站架构演化 2 大型网站架构模式 3 大型网站核心架构要素 第2篇 架构 4 瞬时响应:网站的高性能架构 5 万无一失:网站的高可用架构 6 永无止境:网站的伸缩性架构...附录B Web开发技术发展历程

Global site tag (gtag.js) - Google Analytics