《
从上百幅架构图中学大型网站建设经验(上)》文章地址:http://www.tfxk.com/zixun/04213BU2013.htm
5、Google
App Engine技术架构
然而,只管业务之间已经足够独立了,但是有些业务之间或多或少总会有点接洽,如用户,基础上都会和每个业务相关系,况且这种分区方式,也不能解决单张表数据量暴涨的问题,因而为何不尝尝水平sharding呢?
近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,经常见识到不少精妙绝伦的架构图。除了每每感慨于每幅图名义上的绘制的精致之外,更为架构
图当面所暗藏的设计思维所叹服。个人这两天始终在收集各大型网站的架构设计图,一为了一饱眼福,领略各类大型网站架构设计的精彩之外,二来也可供闲时重复
揣摩领会,何乐而不为呢?特此,总结整理了诸如国外wikipedia,Facebook,Yahoo!,YouTube,MySpace,Twitter,海内如优酷网等大型网站的技术架构(本文重点剖析优酷网的技术架构),以飨读者。
6、Amazon技术架构
Amazon的云架构图如下:
Yahoo! Mail 架构
写入无奈扩展
写入无法缓存
复制延时
锁榜样回升
表变大,缓存率降落
对于缓存系统,还能够看看下幅图:
缓存在大型web名目中起到了举足轻重的作用,究竟数据越凑近CPU存取速度越快。下图是twitter的缓存架构图:
Yahoo!
Mail 架构安排了 Oracle RAC,用来存储 Mail 服务相干的 Meta 数据。
2、Facebook 架构
防止内存拷贝,避免内存锁
如接到老大哥告诉要把某个视频撤下来,假如在缓存里是比拟麻烦的
其主从复制的进程如下图所示:
Amazon的Dynamo Key-Value存储架构图
如果把业务切割得足够独破,那把不同业务的数据放到不同的数据库服务器将是一个不错的方案,而且万一其中一个业务瓦解了也不会影响其他业务的畸形进行,并且也起到了负载分流的作用,大大晋升了数据库的吞吐才能。经由垂直分区后的数据库架构图如下:
貌似大的系统都对“缓存”情有独钟,从http缓存到memcached内存数据缓存,但优酷表现不用内存缓存,理由如下:
此篇文章终于写完了,从昨日有收拾此文的念头后,到本日上午找电脑上网而不得,再到此刻在网吧实现此文。着实也体味了一把什么叫做为技巧狂热的感到。大型
网站架构是一个实战性很强的货色,而你我或者当初临时还只是一个在外看热烈的门外汉罢了。不外,不要紧,小鱼小虾照样能畅游汪汪大洋,更何况日后亦能成长
为大鱼大鲨。
缓存策略
 ,网站设计;
WikiPedia 技术架构图Copy @Mark Bergsma
7、优酷网的技术架构
然而,主从复制也带来其余一系列机能瓶颈问题:
twitter平台大抵由twitter.com、手机以中举三方利用形成,如下图所示(其中流量主要以手机和第三方为重要起源):
。
下图是分布式存储系统的示用意,读者可观摩之:
可能有读者并不熟习Amazon,它现在已经是全球商品种类最多的网上零售商和寰球第2大互联网公司。而之前它仅仅是一个小小的网上书店。ok,下面,咱们来见识下它的架构。
简单的MySQL主从复制。
MySQL的主从复制解决了数据库的读写分别,并很好的提升了读的性能,其本来图如下:
ok,欢迎关注从上百幅架构图中学得半点大型网站建设经验(下)。有任何问题或过错,欢迎不吝教正。谢谢大家。本文完。
MySQL垂直分区
优酷的数据库架构也是阅历了很多曲折,从一开端的单台MySQL服务器(Just
Running)到简单的MySQL主从复制、SSD优化、垂直分库、水平sharding分库。
4、twitter技术架构
本文侧重凸显每一幅图的出色之处与其背地含意,而图的阐明性文字则从简从略。ok,好好享受此番架构盛宴吧。当然,若有任何倡议或问题,欢送不吝斧正。谢谢。
Datastore是基于BigTable技术的分布式数据库,固然其也可以被懂得成为一个服务,但是因为其是整个App
Engine独一存储长久化数据的处所,所以其是App Engine中一个异常中心的模块。其详细细节将在下篇和大家探讨。
GAE的架构图
Amazon的云架构图
这样,就根据module、method及params来确定调用绝对独立的模块,显得非常简练。下图是优酷的前端部分架构图:
Dynamo对Consistent
Hashing算法的改良在于:它放在环上作为一个node的是一组机器(而不是memcached把一台机器作为node),这一组机器是通过同步机制保障数据一致的。
后记
 ,成都网页设计公司;
Facebook 搜索功效的架构示意图
而且Squid 的 write() 用户过程空间有耗费,Lighttpd 1.5 的 AIO(异步I/O)
读取文件到用户内存导致效力也比较低下。
来自wikipedia的数据:峰值每秒钟3万个
HTTP 恳求 每秒钟
3Gbit
流量, 近乎375MB 350 台 PC 服务器。 GeoDNSA :40-line patch for BIND to
add geographical filters support to the existent views in BIND",
把用户带到最近的服务器。GeoDNS 在 WikiPedia 架构中担负重担当然是由 WikiPedia
的内容性质决议的--面向各个国度,各个地区。 负载平衡:LVS,请看下图:
从上百幅架构图中学大型网站建设教训(上)
引言
Dynamo是亚马逊的key-value模式的存储平台,可用性跟扩大性都很好,性能也不错:读写拜访中99.9%的响应时光都在300ms内。按散布
式体系常用的哈希算法切分数据,分放在不同的node上。Read操作时,也是依据key的哈希值寻找对应的node。Dynamo应用了
Consistent
Hashing算法,node对应的不再是一个断定的hash值,而是一个hash值范畴,key的hash值落在这个规模内,则顺时针沿ring找,碰
到的第一个node即为所需。
MySQL程度分片(Sharding)
如何来肯定某个用户所在的shard呢,可以建一张用户和shard对应的数据表,每次要求先从这张表找用户的shard
id,再从对应shard中查询相关数据,如下图所示:
但是,优酷是如何解决跨shard的查询呢,这个是个难点,据先容优酷是尽量不跨shard查问,切实不行通过多维分片索引、分布式搜寻引擎,下策是分布式数据库查询(这个无比麻烦而且耗性能)。
仔细的读者一定能发明,上副架构图之前呈现在此文之中:从多少幅架构图中偷得半点海里数据处置经验。本文与前文最大的不同是,前文只有几幅,此文系列将有上百幅架构图,任你纵情欣赏。
前端包含4个模块:Front End,Static Files,App Server,App Master。
全部服务群包括良多服务供App Server调用,比方Memcache,图形,用户,URL抓取和义务队列等。
这是一个十分好的思路,将用户按必定规矩(按id哈希)分组,并把该组用户的数据存储到一个数据库分片中,即一个sharding,这样跟着用户数目的增添,只有简略地配置一台服务器即可,原理图如下:
twitter的整体架构设计图
那问题发生总得解决的,这就产生下面的优化计划。
从一开始,优酷网就自建了一套CMS来解决前端的页面显示,各个模块之间分离得比较适当,前端可扩展性很好,UI的分离,闪开发与保护变得非常简单和机动,下图是优酷前真个模块调用关联:
1、WikiPedia 技术架构
 ,成都网站设计;
简单而言,上述GAE的架构分为如图所示的三个局部:前端,Datastore和服务群。
附注:1、此段优酷网的技术架构整顿于此处:
3、Yahoo!
Mail 架构
但
为何咱们访问优酷会如斯流利,与土豆比拟优酷的视频加载速度稍逊一筹?这个要归功于优酷树立的比较完美的内容散发网络(CDN),它通过多种方法保证分布
在全国各地的用户进行就近访问——用户点击视频请求后,优酷网将根据用户所处地域地位,将离用户最近、服务状态最好的视频服务器地址传递给用户,从而保证
用户可以得到疾速的视频休会。这就是CDN带来的上风,就近访问。
(责任编辑:网站建设)
从上百幅架构图中学大型网站建设经验(上)相关文章