一、WikiPedia(维基百科)
WikiPedia是非盈利网站,因此尽可能地使用免费的软件和廉价的服务器。截止到2012年,这个只有区区数百台服务器和十余个技术人员开发、维护的网站,成为流量全球排名第6的大型网站,可见其架构、性能优化有许多值得我们学习的地方。
1、WikiPedia的数据量
  • 峰值每秒钟3万个 HTTP 请求
  • 每秒钟 3Gbit 流量, 近乎375MB
  • 350 台 PC 服务器

2、WikiPedia的主要架构

 
3、WikiPedia的性能优化策略
1)前端
① 网站前端服务包括DNS服务、CDN服务、反向代理服务、静态资源服务等。对WikiPedia而言,80%以上的用户请求可以通过前端服务返回,请求不会到达应用服务器,这就大大减轻了应用服务器和存储端的压力。
② CDN服务对于Wikipedia性能优化居功至伟。因为用户查询的词条大部分集中在比重很小的热点词条上,将这些词条内容页面缓存在CDN服务器上,而CDN服务器又部署在离用户浏览器最近的地方,用户请求直接从CDN返回,响应速度非常快,这些请求甚至根本不会到达Wikipedia数据中心的Squid反向代理服务器,服务器压力减小,节省的资源可以更快地处理其他未被CDN缓存的请求。
③ Wikipedia前端架构的核心是反向代理服务器Squid集群,大约部署数十台服务器。请求通过LVS负载均衡地分发到每台Squid服务器,热点词条被缓存在这里,大量请求可直接返回响应,请求无需发送到Apache 服务器,减轻应用负载压力。Squid 缓存不能命中的请求再通过LVS发送到Apache应用服务器集群,如果有词条信息更新,应用服务器使用Invalidation Notification 服务通知Squid缓存失效,重新访问应用服务器更新词条。
2)服务端
后端优化最主要的手段是使用缓存,将热点数据缓存在分布式缓存系统的内存中,加速应用服务器的数据读操作速度,减轻存储和数据库服务器的负载。
Wikipedia的缓存使用策略如下:
① 热点特别集中的数据直接缓存到应用服务器的本地内存中,因为要占用应用服务器的内存且每台服务器都需要重复缓存这些数据,因此这些数据量很小,但是读取频率极高。
② 缓存数据的内容尽量是应用服务器可以直接使用的格式,比如HTML格式,以减少应用服务器从缓存中获取数据后解析构造数据的代价。
③ 使用缓存服务器存储 session对象。
④ 相比数据库,Memcached的持久化连接非常廉价,如有需要就创建一个Memcached连接。
3)MySQL数据库优化
① 使用较大的服务器内存。在Wikipedia应用场景中,增加内存比增加其他资源更能改善MySQL性能。
② 使用RAID0磁盘阵列以加速磁盘访问,RAID0虽然加速磁盘访问,但是却降低了数据库的持久可靠性,数据的可靠性问题可以通过MySQL主从复制、数据异步备份等手段来解决。
③ 将数据库事务一致性设置在较低水平,加快宕机恢复速度。
④ 如果Master数据库宕机,立即将应用切换到Slave数据库,同时关闭数据写服务,这意味着关闭词条编辑功能(通过约束业务获得技术方案选择余地)。
 
二、Facebook
1、Facebook的数据量
  • 每月的页面浏览量:570000000000 (5700亿)
  • 照片数量超过其他图片网站的总和(包括诸如Flickr等网站)
  • 每个月有超过30亿张照片上传
  • 每秒可以处理120万张照片,这还不包括CDN处理的照片
  • 每月处理超过25亿条内容 (状态更新,评论等)
  • 服务器超过30,000台(此数据为2009年的数据)

2、Facebook的主要架构

Facebook使用LAMP(Linux、Apache、MySQL、PHP)作为技术构架,为了配合其他大量的组件和服务,Facebook对已有的方法做了必要的改变、拓展和修改。比如:

  • Facebook依然使用PHP,但已重建新的编译器,以满足在其Web服务器上加载本地代码,从而提升性能;
  • Facebook使用Linux系统,但为了自身目的,也已做了必要的优化,尤其是在网络吞吐量方面;
  • Facebook使用MySQL,也对其做优化;
  • 还有定制的系统,比如:
                Haystack — 高度可扩展的对象存储,用来处理Facebook的庞大的图片;
                Scribe — Facebook的日志系统。
 
三、Google App Engine
Google App Engine是一款PaaS服务,帮助用户快速搭建web应用,并且无需再运维花费大量的时间和精力。
主要功能有:支持Web应用,提供持久存储空间,对应用自动扩展和负载均衡,支持Email、用户认证和缓存等多种服务等等。
GAE架构分为如上图所示的三个部分:前端,Datastore和服务群,主要架构如下:
 
四、Amazon AWS
1、平台以及状态
  • Linux、Oracle、C++、Perl、Mason、Java、Jboss、Servlets
  • 超过5500万活动顾客帐号
  • 世界范围内超过100万活动零售合作商
  • 构建一个页面所需访问的服务介于100至150个之间
2、Amazon AWS的主要架构
Amazon云计算服务AWS主要包括以下模块:
 
五、Twitter
1、Twitter的数据量
  • twitter每月有180万独立访问用户数,并且75%的流量来自twitter.com以外的网站。
  • 每天通过API有30亿次请求
  • 每天平均产生5500次tweet,37%活跃用户为手机用户,约60%的tweet来自第三方的应用。
2、系统架构
平台:Ruby on Rails 、Erlang 、MySQL 、Mongrel 、Munin 、Nagios 、Google Analytics 、AWStats 、Memcached
 
 
六、优酷
1、优酷的数据量
  • 日均独立访问人数(uv)达到了8900万(2010年数据)
  • 日均访问量(pv)达到了17亿,凭借这一数据成为google榜单中国内视频网站排名最高的厂商(2010年数据)
  • 1000多台服务器(2007年数据)
2、优酷的主要架构
 
 

2017-6-6&6-8/大型网站架构总结的更多相关文章

  1. Drupal与大型网站架构(译)- Large-Scale Web Site Infrastructure and Drupal

    Drupal与大型网站架构(译)- Large-Scale Web Site Infrastructure and Drupal Linuxjournal 网站经典文章翻译,原文地址: Large-S ...

  2. 《大型网站系统与JAVA中间件实践》读书笔记-大型网站架构演进

    大型网站架构演进 大型网站是一种很常见的分布式系统,除了海量数据和高并发的访问量,本身业务和系统也复杂. 大型网站的架构演进 我们现在常用的大型网站都是从小网站一步一步发展起来的,这个过程中会 有一些 ...

  3. Java程序员的职业发展道路 附:大型网站 -- 架构技能图谱(Java版)

    职业发展道路基本有3条: 第一条路线(技术专精): 初级Java开发---中级--高级---项目主管--Java项目经理---网站架构师----资深专家 第二条路线(技术转产品):初级Java开发-- ...

  4. 各大型网站架构分析收集-原网址http://blog.csdn.net/lovingprince/article/details/3379710

    1. PlentyOfFish 网站架构学习http://www.dbanotes.net/arch/plentyoffish_arch.html 采取 Windows 技术路线的 Web 2.0 站 ...

  5. 大型网站架构之JAVA中间件

    中间件就是在大型网站中,帮助各子模块间实现互相访问,消息共享或统一访问等功能的软件产品.常见的有: 远程服务框架中间件:主要解决各子模块之间互相访问的问题. 消息队列中间件:主要解决各子模之间消息共享 ...

  6. 大型网站架构演进(6)使用NoSQL和搜索引擎

    随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系型数据库技术(即NoSQL)和非数据库查询技术如搜索引擎.NoSQL数据库一般使用MongoDb,搜索引擎一般使用El ...

  7. 大型网站架构演化(八)——使用NoSQL和搜索引擎

    随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎,如图. NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分 ...

  8. 大型网站架构演化(六)——使用反向代理和CDN加速网站响应

    随着网站业务不断发展,用户规模越来越大,由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也极大.有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开.为了提供更 ...

  9. 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

    大型网站技术架构(四)--核心架构要素   作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...

随机推荐

  1. website for .Net Core

    5 Ways to Build Routing in ASP.NET Core Bundling in .NET Core MVC Applications with BundlerMinifier. ...

  2. 所有JTAG集成电路都应该支持菊花链

    菊花链 在电气和电子工程中,菊花链是一种布线方案,其中多个设备按顺序或环形连接在一起.相邻设备才能通信.菊花链可用于电源,模拟信号,数字数据或其组合. 但是由于菊花链的串联特性,如果任何一个设备从链路 ...

  3. 1、Python模块和包(0602)

    模块.异常.运行环境.mysqldb 模块: 顶层文件:作为整个文件的程序入口,就是负责去调用其他文件中的代码来实现程序流程功能的,称为顶层程序文件, 模块文件1 模块文件2 python模块 1.可 ...

  4. MInio python

    # Install Minio library. # $ pip install minio # # Import Minio library. from minio import Minio # I ...

  5. 批量Excel数据导入Oracle数据库

    由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...

  6. _killerstreak

    `count`连杀或终结连杀的数量(最大支持10个) `announceFlag` 0-不广播1-只广播连杀消息2-只广播终结连杀消息3-广播连杀与终结连杀消息 `rewId` 连杀奖励模板Id,对应 ...

  7. MAC office2016 安装及激活

    Office 下载地址: http://www.xitongtiandi.net/soft_yy/4285.html 破解补丁下载地址: https://bbs.feng.com/tencentdow ...

  8. idea使用教程(1)

    引言:本教程主要讲解一下常用的配置安装方法,不包含软件安装,按照以下教程配置后,可以直接用于生产环境. 参考网址:参考了尚硅谷关于idea的使用教学视屏 idea注册码地址:http://idea.l ...

  9. CoordinatorLayout实现的效果(标题栏效果)

    一.效果 CoordinatorLayouy是一个能够协调子布局的容器布局. 使用引入: compile 'com.android.support:design:24.1.1' 常见的使用方法如下:1 ...

  10. 虹软人脸识别 arcface2.0 安卓版本

    虹软官方网站提供了  AndroidStudio 版本的arcface2.0,我花了 几天的时间整理了一个 ADT版本的源码, 是自己从  官方 2.0 android版本中转换而来的.已经测试了,可 ...