`
gougouqihao
  • 浏览: 7099 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

知名互联网公司网站架构图

阅读更多

转自:http://blog.csdn.net/v_july_v/article/details/6839360

引言

    近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩之外,二来也可供闲时反复琢磨体会,何乐而不为呢?特此,总结整理了诸如国外wikipedia,Facebook,Yahoo!,YouTube,MySpace,Twitter,国内如优酷网等大型网站的技术架构(本文重点分析优酷网的技术架构),以飨读者。

    本文着重凸显每一幅图的精彩之处与其背后含义,而图的说明性文字则从简从略。ok,好好享受此番架构盛宴吧。当然,若有任何建议或问题,欢迎不吝指正。谢谢。

  • 1、WikiPedia 技术架构

                                             WikiPedia 技术架构图Copy @Mark Bergsma

  1. 来自wikipedia的数据:峰值每秒钟3万个 HTTP 请求 每秒钟 3Gbit 流量, 近乎375MB 350 台 PC 服务器。
  2. GeoDNSA :40-line patch for BIND to add geographical filters support to the existent views in BIND", 把用户带到最近的服务器。GeoDNS 在 WikiPedia 架构中担当重任当然是由 WikiPedia 的内容性质决定的--面向各个国家,各个地域。
  3. 负载均衡:LVS,请看下图:

  • 2、Facebook 架构

                                    Facebook 搜索功能的架构示意图

    细心的读者一定能发现,上副架构图之前出现在此文之中:从几幅架构图中偷得半点海里数据处理经验。本文与前文最大的不同是,前文只有几幅,此文系列将有上百幅架构图,任您尽情观赏。

  • 3、Yahoo! Mail 架构

                                               Yahoo! Mail 架构

    Yahoo! Mail 架构部署了 Oracle RAC,用来存储 Mail 服务相关的 Meta 数据。

  • 4、twitter技术架构

                                                     twitter的整体架构设计图

    twitter平台大致由twitter.com、手机以及第三方应用构成,如下图所示(其中流量主要以手机和第三方为主要来源):

    缓存在大型web项目中起到了举足轻重的作用,毕竟数据越靠近CPU存取速度越快。下图是twitter的缓存架构图:

    关于缓存系统,还可以看看下幅图:

  • 5、Google App Engine技术架构

                                            GAE的架构图

    简单而言,上述GAE的架构分为如图所示的三个部分:前端,Datastore和服务群。

  1. 前端包括4个模块:Front End,Static Files,App Server,App Master。
  2. Datastore是基于BigTable技术的分布式数据库,虽然其也可以被理解成为一个服务,但是由于其是整个App Engine唯一存储持久化数据的地方,所以其是App Engine中一个非常核心的模块。其具体细节将在下篇和大家讨论。

  3. 整个服务群包括很多服务供App Server调用,比如Memcache,图形,用户,URL抓取和任务队列等。

  • 6、Amazon技术架构

                                    Amazon的Dynamo Key-Value存储架构图

    可能有读者并不熟悉Amazon,它现在已经是全球商品品种最多的网上零售商和全球第2大互联网公司。而之前它仅仅是一个小小的网上书店。ok,下面,咱们来见识下它的架构。

    Dynamo是亚马逊的key-value模式的存储平台,可用性和扩展性都很好,性能也不错:读写访问中99.9%的响应时间都在300ms内。按分布式系统常用的哈希算法切分数据,分放在不同的node上。Read操作时,也是根据key的哈希值寻找对应的node。Dynamo使用了 Consistent Hashing算法,node对应的不再是一个确定的hash值,而是一个hash值范围,key的hash值落在这个范围内,则顺时针沿ring找,碰到的第一个node即为所需。

    Dynamo对Consistent Hashing算法的改进在于:它放在环上作为一个node的是一组机器(而不是memcached把一台机器作为node),这一组机器是通过同步机制保证数据一致的。

    下图是分布式存储系统的示意图,读者可观摩之:

    Amazon的云架构图如下:

                                           Amazon的云架构图

  • 7、优酷网的技术架构

    从一开始,优酷网就自建了一套CMS来解决前端的页面显示,各个模块之间分离得比较恰当,前端可扩展性很好,UI的分离,让开发与维护变得十分简单和灵活,下图是优酷前端的模块调用关系:

    这样,就根据module、method及params来确定调用相对独立的模块,显得非常简洁。下图是优酷的前端局部架构图:

    优酷的数据库架构也是经历了许多波折,从一开始的单台MySQL服务器(Just Running)到简单的MySQL主从复制、SSD优化、垂直分库、水平sharding分库。

  1. 简单的MySQL主从复制。
    MySQL的主从复制解决了数据库的读写分离,并很好的提升了读的性能,其原来图如下:

    其主从复制的过程如下图所示:

    但是,主从复制也带来其他一系列性能瓶颈问题:

    1. 写入无法扩展
    2. 写入无法缓存
    3. 复制延时
    4. 锁表率上升
    5. 表变大,缓存率下降

    那问题产生总得解决的,这就产生下面的优化方案。

  2.  MySQL垂直分区

        如果把业务切割得足够独立,那把不同业务的数据放到不同的数据库服务器将是一个不错的方案,而且万一其中一个业务崩溃了也不会影响其他业务的正常进行,并且也起到了负载分流的作用,大大提升了数据库的吞吐能力。经过垂直分区后的数据库架构图如下:

        然而,尽管业务之间已经足够独立了,但是有些业务之间或多或少总会有点联系,如用户,基本上都会和每个业务相关联,况且这种分区方式,也不能解决单张表数据量暴涨的问题,因此为何不试试水平sharding呢?

  3.  MySQL水平分片(Sharding)

        这是一个非常好的思路,将用户按一定规则(按id哈希)分组,并把该组用户的数据存储到一个数据库分片中,即一个sharding,这样随着用户数量的增加,只要简单地配置一台服务器即可,原理图如下:

      如何来确定某个用户所在的shard呢,可以建一张用户和shard对应的数据表,每次请求先从这张表找用户的shard id,再从对应shard中查询相关数据,如下图所示:    但是,优酷是如何解决跨shard的查询呢,这个是个难点,据介绍优酷是尽量不跨shard查询,实在不行通过多维分片索引、分布式搜索引擎,下策是分布式数据库查询(这个非常麻烦而且耗性能)。

  4.  缓存策略

    貌似大的系统都对“缓存”情有独钟,从http缓存到memcached内存数据缓存,但优酷表示没有用内存缓存,理由如下:

    1. 避免内存拷贝,避免内存锁
    2. 如接到老大哥通知要把某个视频撤下来,如果在缓存里是比较麻烦的

    而且Squid 的 write() 用户进程空间有消耗,Lighttpd 1.5 的 AIO(异步I/O) 读取文件到用户内存导致效率也比较低下。

    但为何我们访问优酷会如此流畅,与土豆相比优酷的视频加载速度略胜一筹?这个要归功于优酷建立的比较完善的内容分发网络(CDN),它通过多种方式保证分布在全国各地的用户进行就近访问——用户点击视频请求后,优酷网将根据用户所处地区位置,将离用户最近、服务状况最好的视频服务器地址传送给用户,从而保证用户可以得到快速的视频体验。这就是CDN带来的优势,就近访问。

    附注:1、此段优酷网的技术架构整理于此处:http://www.itivy.com/ivy/archive/2011/8/13/the-architecture-of-youku.html;2、同时推荐一个非常好的站点:http://www.dbanotes.net/)。从上百幅架构图中学得半点大型网站建设经验(上),完。

后记

    此篇文章终于写完了,从昨日有整理此文的动机后,到今日上午找电脑上网而不得,再到此刻在网吧完成此文。着实也体味了一把什么叫做为技术狂热的感觉。大型网站架构是一个实战性很强的东西,而你我或许现在暂时还只是一个在外看热闹的门外汉而已。不过,没关系,小鱼小虾照样能畅游汪汪大洋,更何况日后亦能成长为大鱼大鲨。

分享到:
评论

相关推荐

    PT23-70页超全互联网万能逻辑架构图手册.pptx

    PT23-70页超全互联网万能逻辑架构图手册.pptx 本资源手册概括了互联网万能逻辑架构图的设计理念和实现方法,涵盖了互联网平台的账号交易、账号鉴定、平台寄售等业务模块,以及产品设计、用户体验、企业形象、营销...

    著名网站架构设计(包括Facebook Google Amazon

    网站架构设计是构建高效、可扩展且可靠的在线服务的核心,对于Facebook、Google和Amazon这样的全球知名互联网巨头来说,他们的架构设计更是业界的典范。这些公司不仅处理着海量的数据,还要保证用户能快速、稳定地...

    百度百科架构图

    在给定的压缩包文件中,包含了一些知名的互联网公司的架构图,如“百度百科”、“淘宝量子”等,这些都是业界极具代表性的案例,对于理解和设计大规模分布式系统具有很高的学习价值。 首先,我们来看“百度百科架构...

    互联网公司基础组织架构.docx

    在互联网公司中,基础组织架构是企业高效运营的关键。这些公司通常由多个部门构成,每个部门都有其特定的职责和功能,共同推动公司的前进。以下是对互联网公司基础组织架构的详细解析: 首先,管理层序列包括CEO...

    大型网站架构资源集合

    9. **各大型网站架构分析.mht**:对不同知名网站的架构进行案例研究,分析它们如何解决特定的技术挑战,为读者提供了实际应用的参考。 10. **大型高并发高负载网站系统架构.mht**:对于处理高并发请求的网站,需要...

    知名网站产品架构分析

    综上所述,百度作为一家信息整合商,其产品架构覆盖了从线上到线下、从搜索到社交、从个人到企业的全方位布局,不断探索新的信息整合模式,以适应不断变化的互联网环境和用户需求。百度的成功不仅在于其强大的信息...

    新零售互联网金融分布式架构实践.pdf

    首先,新零售金融的核心研发人员主要来自蚂蚁金服、京东、百度、平安等知名企业的架构师,他们自主研发了超过300个核心业务系统,管理着超过2000台服务器。这种规模的IT系统对于新型互联网零售银行来说,意味着40%的...

    互联网公司或项目-内部运作模式

    - **输出文件**:产品需求文档、商业需求文档、市场分析报告、思维导图、流程图、信息架构图等。 **2. UI设计师** - **职责**:根据产品需求设计用户界面,制作页面效果图,确保视觉一致性。 - **工具**:常用的...

    大型网站技术架构_核心原理与案例分析_李智慧.pdf

    案例分析部分应当会涉及对一些知名大型网站架构的剖析,介绍它们是如何解决实际问题、应对高并发挑战、实现快速迭代的。通过对具体案例的学习,可以深入理解大型网站架构中每一个组件是如何协同工作,以及架构设计上...

    各大公司架构,豆瓣网,facebook,淘宝

    在这个领域,豆瓣网、Facebook和淘宝作为全球知名的互联网公司,它们的架构设计具有重要的参考价值。 【豆瓣网架构】 豆瓣网是中国的一家知名社交媒体和内容分享平台,它的架构设计注重用户互动和内容推荐。豆瓣的...

    小米途牛快的饿了么等大型网站架构技术

    【描述】:本话题将深入探讨小米、途牛、快的打车(现滴滴出行)以及饿了么等知名互联网公司的大型网站架构技术。这些公司在面对海量用户访问、高并发请求以及实时数据处理等挑战时,采用了哪些先进的技术和策略,以...

    个人网站架构详解定义.pdf

    个人网站架构详解定义 个人网站的设计与实现是一个涵盖了多个技术和步骤的过程,旨在让个人能够在互联网上展示自我,分享信息,并与他人互动。随着互联网的普及,越来越多的人希望通过创建自己的网站来表达个性,...

    46家著名IT公司的笔试题

    标题 "46家著名IT公司的笔试题" 涵盖了大量的技术知识点,这些知识点是IT行业,特别是互联网领域招聘过程中的常见考核内容。这包括但不限于编程语言、算法与数据结构、操作系统、网络、数据库、软件工程、计算机基础...

    java工程师找工作必备互联网公司笔试面试真题

    本资源"java工程师找工作必备互联网公司笔试面试真题"汇集了多家知名互联网公司的实际试题,旨在帮助Java开发者充分准备,提升通过率。以下是基于这个主题的详细知识点讲解: 1. **基础语法**:Java的基础语法是...

    电子商务公司组织架构.pdf

    2. **技术部**:技术部是电子商务公司的核心部门,负责公司网站的建设和维护、呼叫中心的建立、电子商务系统的开发、采购系统的集成、仓储系统的构建、CRM系统的实施以及各个系统间的无缝对接。这些工作对于保障平台...

    2019年互联网智能在线教育企业组织架构和部门职能设计.pdf

    通常,互联网智能在线教育公司的组织架构分为多个层次,包括决策层、管理层和执行层。决策层由董事会或高管团队组成,负责制定公司战略和发展方向;管理层则由各业务部门的负责人构成,他们执行策略并管理各自部门;...

    架构师特刊:Kubernetes PaaS冲击波.pdf

    众多知名科技公司如Google、Red Hat、Microsoft、IBM和Oracle等纷纷加入到Kubernetes的生态系统,利用Kubernetes的开放性和灵活性来支持自己的云服务和解决方案。 Kubernetes的出现,改变了PaaS的生态和企业的云...

Global site tag (gtag.js) - Google Analytics