一、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. JavaScript基本内容

    注释: /*多行 注释*/ //单行注释 变量: //变量均为对象,常用类型:String.Number.Boolean.Array.Object var value = "hello&qu ...

  2. 项目Alpha冲刺--3/10

    项目Alpha冲刺--3/10 1.团队信息 团队名称:基于云的胜利冲锋队 成员信息 队员学号 队员姓名 个人博客地址 备注 221500201 孙文慈 https://www.cnblogs.com ...

  3. Pandas 基础(1) - 初识及安装 yupyter

    Hello, 大家好, 昨天说了我会再更新一个关于 Pandas 基础知识的教程, 这里就是啦......Pandas 被广泛应用于数据分析领域, 是一个很好的分析工具, 也是我们后面学习 machi ...

  4. P4001 [BJOI2006]狼抓兔子

    传送门 思路: 不少题解都是用网络流来做最小割(网络流是什么),但对于一个不会网络流的蒟蒻来做这题相当困难. 听机房daolao说可以重构图做最短路.然后就baidu将平面图转换成一个对偶图,因为网络 ...

  5. tornado关于AsyncHTTPClient的使用笔记

    先来一段同步的httpclient使用代码 url = 'https://www.baidu.com/' http_client = HTTPClient() response = http_clie ...

  6. c代码,输出i,j,k互不相同的三位数

    #include <stdio.h> int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++){ for(j= ...

  7. vue.js相关UI组件收集

    内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 ###UI组件 element ★9689 - 饿了么出品的Vue2的web UI工具套件 Vux ★6927 - 基于Vu ...

  8. java操作vaftpd实现上传、下载

    1.配置文件conf/vsftpd.properties (我是单独写了一个配置文件,你可以直接写在application中) vsftpd.ip=192.168.**.** vsftpd.user= ...

  9. Golang atomic

    原子操作函数 分为下面系列函数,其中Xxx可以是Int32/Int64/Uint32/Uint64/Uintptr/Pointer其中一种. 1.SwapXxx系列:交换新旧值: // SwapInt ...

  10. Codeforces 801C - Voltage Keepsake

    C. Voltage Keepsake 题目链接:http://codeforces.com/problemset/problem/801/C time limit per test 2 second ...