SlideShare une entreprise Scribd logo
1  sur  25
BeetleSoft 大型网站技术架构探讨 [1]
那是不是流量大就是大型网站 ?呢 Google Analytics
BeetleSoft 大型网站技术架构探讨 [2]
追求这 3 个目 ,是网站 的根源标 闹腾
BeetleSoft 大型网站技术架构探讨 [3]
一般地,本文提到的物理服 器都是泛指务 pc 物理服 器;级 务 Web Server 泛指
HTTP 服 器和 用服 器 合体务 应 务 综
于一个 水性网站来 了 成本,对 试 说为 节约 Web Server 和 DB Server 都放在同一台
pc Server 服 器上是常 的事情。务 见
当网站 量增大,访问 cpu 理能力是瓶 的 候,通 把处 颈 时 过 web Server 和 Db
Server 物理分 的,效果明简单 开 显
BeetleSoft 大型网站技术架构探讨 [4]
量持 增大, 面响 越来越慢。考 到网站 在 水性成 段,访问 续 页 应 虑 还处 试 长阶 节
成本,硬件不 ,着重 用本身 化。约 动 应 优
采取 存 理机制是个必然的缓 处 选择
BeetleSoft 大型网站技术架构探讨 [5]
有 可以吹一下时间还 idempotent , etag(http://www.infoq.com/cn/articles/etags)
BeetleSoft 大型网站技术架构探讨 [6]
客向网站 出 求访 发 访问请 , 由前端 面 存器 担原服 器的 理 程做出页 缓 负 务 处 进
响应 , 取原服 器的相 网 内容获 务 应 页 , 将其 存在自身的内存中储 , 与 此同时 , 传
送 客 一 存的内容给访 这 缓 ; 如有另一 客也 求 之前的相同内容访 请 访问 , 前端 面页
存器毋 再次 取原服 器上的相 内容缓 须 获 务 应 , 而直接从自身的内存中 取获 , 将这
一内容 送 客。反之传 给访 , 前端 面 存器也可 存 客的页 缓 缓 访 GET 和 POST 求。请
   客 面 的是前端 面 存器访 实际 对 页 缓 , 与网站之 的通 完全由前端 面 存间 讯 页 缓
器反向代理 , 而非原服 器直接响 客务 应访 , 将大大加快 客上网流 度这 访 畅 , 有效
提升 量访问 , 著降低 占用显 带宽 , 原始服 器的繁忙度减轻 务 , 加快响 速度应 , 毋
不停地 置大内存须 购 , 大硬盘 , 容 力 施 服 器端 省成本。扩 电 设 为 务 节
BeetleSoft 大型网站技术架构探讨 [7]
ESI 是一个基于 XML 的 言,目的是在标记语 HTTP 中 装各 源。在 境组 种资 实际环
中,一个 生成的 面,当中可能只有少量的内容是 繁 化的或是个性化动态 页 频 变
的, 于 的对 传统 Cache 服 器来 , 了能 保 面的 效性,却由于 面务 说 为 够 证页 时 页
中 些少量的 内容而无法将整个 面 行 存。这 动态 页 进 缓 ESI 通 使用 的过 简单 标记语
言来 那些可以 存和不能 存的网 中的内容片断 行描述,每个网 都被对 缓 缓 页 进 页
分成不同的小部分分 予不同的 存控制策略,使划 别赋 缓 Cache 服 器可以根据务
些策略在将完整的网 送 用 之前将不同的小部分 地 合在一起。这 页发 给 户 动态 组
通 控制,可以有效地 少从服 器抓取整个 面的次数,而只用从原服过这种 减 务 页
器中提取少量的不能 存的片断,因此可以有效降低原服 器的 ,同务 缓 务 负载 时
提高用 的响 。户访问 应时间
BeetleSoft 大型网站技术架构探讨 [8]
常 存算法见缓
莱蒂算法(贝 Belady's Algorithm )
最有效率的 存算法会 掉未来最 内不使用的数据。 理想情况被称缓 丢 长时间 这种
作 莱蒂最 算法或者千里眼算法。由于要 数据要多久后才被使用基本上贝 优 预计
是不可能的,所以 算法没有 的可操作性。它的作用在于 不同的 存这种 实际 为 缓
算法 立一个 劣 准。订 优 标
最近最少使用算法 (LRU , Least Recently Used )
最近最少使用算法的思路是 弃近段 内最少被使用的数据。要 算丢 时间 实现这种
法需要跟踪数据何 被使用,用 方法来 去近一段 被最少使用次数时 这种 筛选 时间
的数据其代价往往是昂 的。它的 往往是通 在 存数据上 立 志贵 实现 过 缓 设 时间标
位,用以跟踪最近最少被使用的 存数据。一个数据每被使用一次,其他数据缓
的 志位数 就要增加。时间标 值
BeetleSoft 大型网站技术架构探讨 [9]
网站反 不 , 展比 利。 于有 逼馈 错 业务发 较顺 终 傻 VC 投 了, 充足,就必钱 银弹 须
考 网站可用性及服 容量冗余性 。增加机器,虑 务 问题 搞 HA 是必然 了选择
BeetleSoft 大型网站技术架构探讨 [10]
DNS 均衡负载  反向代理 均衡负载  直接路由 F5 硬件
LVS ( LVS 集群采用 IP 均衡技 和基于内容 求分 技 。 度器具有很负载 术 请 发 术 调
好的吞吐率,将 求均衡地 移到不同的服 器上 行,且 度器自 屏蔽掉请 转 务 执 调 动
服 器的故障,从而将一 服 器 成一个高性能的、高可用的虚 服 器。务 组 务 构 拟 务
整个服 器集群的 客 是透明的,而且无需修改客 端和服 器端的程务 结构对 户 户 务
序)
Virtual Server via NAT ( VS-NAT )
用地址翻 虚 服 器。地址 器有译实现 拟 务 转换
能被外界 到的合法访问 IP 地址,它修改来自专
有网 的流出包的地址。外界看起来包是来自络
地址 器本身,当外界包送到 器 ,它转换 转换 时
BeetleSoft 大型网站技术架构探讨 [11]
各个 系数据 厂商关 库 针对 dal 及 replication 都有自己方案
独立的 DAL Proxy 服 器务
MySQL: mysqlproxy,Amoeba
PostgreSQL: PL/Proxy (Skype)
DAL API
Java: Hibernate Shard,Ibatis Shard,HiveDB,Guzz
Python: Pyshards
BeetleSoft 大型网站技术架构探讨 [12]
网站 展迅速,数据量大幅增大是当前最大的挑 ,用 分散各地区,某业务发 战 户
些地方用 响 很慢,影响体 和 展户访问 应 验 业务发
同 ,由于数据量 大,数据 存在本地内存已 不 ,分布式 存是必然时 过 缓 经 现实 缓
了选择
BeetleSoft 大型网站技术架构探讨 [13]
CDN 的全称是 Content Delivery Network ,即内容分 网 。其目的是通 在发 络 过 现
有的 Internet 中增加一 新的网 架 ,将网站的内容 布到最接近用 的网层 络 构 发 户
络 " 边缘 " ,使用 可以就近取得所需的内容,解决户 Internet 网 的状况络拥挤
,提高用 网站的响 速度。从技 上全面解决由于网 小、用户访问 应 术 络带宽 户访
量大、网点分布不均等原因所造成的用 网站响 速度慢的 。问 户访问 应 问题 ( 也
就是一个服 器的内容,平均分部到多个服 器上,服 器智能 , 用务 务 务 识别 让 户
取离用 最近的服 器,提高速度。获 户 务
BeetleSoft 大型网站技术架构探讨 [14]
本地 存缓 vs 分布式 存, 什么要 分布式 存?缓 为 搞 缓
什么分布式 存器都是采取为 缓 Key-Value 形式 ?
BeetleSoft 大型网站技术架构探讨 [15]
垂直分 后,各模 数据之 如何 ?垂直分 前提是良好的松耦合的库 块 间 关联查询 库
模 化块 设计
BeetleSoft 大型网站技术架构探讨 [16]
Shard 是分布式解决方案,与数据 集中式的表空 分区是 个不同方案库 间 两
BeetleSoft 大型网站技术架构探讨 [17]
某天突然 网站可以成 第发现 为 2 个 facebook 了,用 ,数据量 到户过亿 达 pb 。级
网站性能不是通 增加硬件服 器就能 足的。(机房放 都不 )过简单 务 够满 满 够 这
就不得面 以下 :既然样 对 选择 1 个机房都容不下了(可看做一个数据中心),
那么就建多几个(多个数据中心);建立数据中心,无疑就需要更多的机器和
存 ,考 天价的成本的,利用 有廉价的存 和机器,参照储 虑 现 储 google 的 GFS 、
Map/Reduce 、 Bigtable 技 模式搭建分布式存 和 算的架 就是必然 了术 储 计 构 选择
。
BeetleSoft 大型网站技术架构探讨 [18]
DFS 提供了一个全局命名空 的高可用(通 跨机器(和跨机架)的文件数据间 过 复
制来 到高可用性,免受 文件存 系 无法避免的 多失 的影响)文件达 传统 储 统 许 败
系 ,解决高容量数据高效、可靠存 ;统 储问题 Map/Reduce 的 算框架,它与计
DFS 密 作,帮助 理收集到的海量数据紧 协 处 ;Key-Value DB 代替 的数据 ,传统 库
通 一些主 来 海量数据,并 高效的 。过 键 组织 实现 查询
BeetleSoft 大型网站技术架构探讨 [19]
从网站架 演 程来看,涉及到构 变过 n 多的技 点及 模式, 什么要用 些术 设计 为 这
技 ? 什么 ?困惑了?术 为 这样设计
所以我 需要理 来支 和指 我 架 工作们 论 撑 导 们 构设计
BeetleSoft 大型网站技术架构探讨 [20]
Eric Brewer, 一位加州大学伯克利分校的教授
http://www.cs.berkeley.edu/~brewer/
BeetleSoft 大型网站技术架构探讨 [21]
CAP 分布式系 和 型都有重大指 意 ;对开发 统 选 导 义
BeetleSoft 大型网站技术架构探讨 [22]
http://en.wikipedia.org/wiki/Shared_nothing_architecture
SNA 的主要是 在一个集群分布式 算 境中,若认为 计 环 Session 状 在各个态维护 节
点服 器上, 了保 状 一致性, 点务 为 证 态 节 间 Session 数据需要互相拷 同步,贝 严
重影响性能。
BeetleSoft 大型网站技术架构探讨 [23]
基于 SOA 方面架 的很多了, 里就不 略 了构说 这 简单 过
切勿浪 多 西去做用 少的 西同 可以做好的事情费较 东 较 东 样
BeetleSoft 大型网站技术架构探讨 [24]
很 明 的漫画说 问题
BeetleSoft 大型网站技术架构探讨 [25]
言的 意味着不同的架 路 、不同的语 选择 构 线 开发  框架、不同的部署方式测试
及不同的 效率,最 到底, 言 涉及到 源成本。开发 终 语 选择 资
和人是最 要的钱 终 o( _ )o…∩ ∩

Contenu connexe

Tendances

高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
everestsun
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
knuthocean
 

Tendances (20)

Hbase
HbaseHbase
Hbase
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
Memlink
MemlinkMemlink
Memlink
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
Fdfs for cnblogs 1th
Fdfs for cnblogs 1thFdfs for cnblogs 1th
Fdfs for cnblogs 1th
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury110412 kningsoft-mongo db-intro-usage-in-mercury
110412 kningsoft-mongo db-intro-usage-in-mercury
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
统一接入的架构思考
统一接入的架构思考统一接入的架构思考
统一接入的架构思考
 
一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生一个 Mongodb command 的前世今生
一个 Mongodb command 的前世今生
 
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao ZhangBuilding the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
Building the Production Ready EB level Storage Product from Ceph - Dongmao Zhang
 
大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
 
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
 
Memcached vs redis
Memcached vs redisMemcached vs redis
Memcached vs redis
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
 

En vedette

VMUG 2010 Spring session
VMUG 2010 Spring sessionVMUG 2010 Spring session
VMUG 2010 Spring session
denisbaturin
 
SOHO3QCommunity-en
SOHO3QCommunity-enSOHO3QCommunity-en
SOHO3QCommunity-en
notes4mark
 

En vedette (12)

Youth Challenge Corporate Brand Guidelines
Youth Challenge Corporate Brand GuidelinesYouth Challenge Corporate Brand Guidelines
Youth Challenge Corporate Brand Guidelines
 
Viata
ViataViata
Viata
 
Outsidein Retso
Outsidein RetsoOutsidein Retso
Outsidein Retso
 
VMUG 2010 Spring session
VMUG 2010 Spring sessionVMUG 2010 Spring session
VMUG 2010 Spring session
 
2011 Kia Sedona Orlando | Orlando Kia
2011 Kia Sedona Orlando | Orlando Kia 2011 Kia Sedona Orlando | Orlando Kia
2011 Kia Sedona Orlando | Orlando Kia
 
Celula
CelulaCelula
Celula
 
Hi,Cheese!!! - 1st draft
Hi,Cheese!!! - 1st draftHi,Cheese!!! - 1st draft
Hi,Cheese!!! - 1st draft
 
2011 Kia Soul Orlando | Orlando Kia
2011 Kia Soul Orlando | Orlando Kia 2011 Kia Soul Orlando | Orlando Kia
2011 Kia Soul Orlando | Orlando Kia
 
SOHO3QCommunity-en
SOHO3QCommunity-enSOHO3QCommunity-en
SOHO3QCommunity-en
 
1000turki
1000turki1000turki
1000turki
 
Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...
Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...
Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...
 
Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...
Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...
Curso Formación Profesorado Universitario 2016 :Enseñanza y Aprendizaje por C...
 

Similaire à 大型网站架构设计

高可用数据库平台及日常管理经验介绍
高可用数据库平台及日常管理经验介绍高可用数据库平台及日常管理经验介绍
高可用数据库平台及日常管理经验介绍
uptodate
 
高可用数据库平台架构及日常管理经验介绍.ppt
高可用数据库平台架构及日常管理经验介绍.ppt高可用数据库平台架构及日常管理经验介绍.ppt
高可用数据库平台架构及日常管理经验介绍.ppt
Frank Cai
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
Cosey Lee
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
Monster Supreme
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务
drewz lin
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
Frank Cai
 
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
George Ang
 

Similaire à 大型网站架构设计 (20)

如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
 
Java@taobao
Java@taobaoJava@taobao
Java@taobao
 
高可用数据库平台及日常管理经验介绍
高可用数据库平台及日常管理经验介绍高可用数据库平台及日常管理经验介绍
高可用数据库平台及日常管理经验介绍
 
高可用数据库平台架构及日常管理经验介绍.ppt
高可用数据库平台架构及日常管理经验介绍.ppt高可用数据库平台架构及日常管理经验介绍.ppt
高可用数据库平台架构及日常管理经验介绍.ppt
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
 
构建基于Lamp的网站架构
构建基于Lamp的网站架构构建基于Lamp的网站架构
构建基于Lamp的网站架构
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
 
LVS
LVSLVS
LVS
 
使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务使用LVS集群架设高可扩展的网络服务
使用LVS集群架设高可扩展的网络服务
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务
 
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
H base云存储
H base云存储H base云存储
H base云存储
 
基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)基于hbase的实时计算框架prom(20111114)
基于hbase的实时计算框架prom(20111114)
 
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
腾讯大讲堂17 性能优化不是仅局限于后台(qzone)
 

大型网站架构设计

  • 2. BeetleSoft 大型网站技术架构探讨 [2] 追求这 3 个目 ,是网站 的根源标 闹腾
  • 3. BeetleSoft 大型网站技术架构探讨 [3] 一般地,本文提到的物理服 器都是泛指务 pc 物理服 器;级 务 Web Server 泛指 HTTP 服 器和 用服 器 合体务 应 务 综 于一个 水性网站来 了 成本,对 试 说为 节约 Web Server 和 DB Server 都放在同一台 pc Server 服 器上是常 的事情。务 见 当网站 量增大,访问 cpu 理能力是瓶 的 候,通 把处 颈 时 过 web Server 和 Db Server 物理分 的,效果明简单 开 显
  • 4. BeetleSoft 大型网站技术架构探讨 [4] 量持 增大, 面响 越来越慢。考 到网站 在 水性成 段,访问 续 页 应 虑 还处 试 长阶 节 成本,硬件不 ,着重 用本身 化。约 动 应 优 采取 存 理机制是个必然的缓 处 选择
  • 5. BeetleSoft 大型网站技术架构探讨 [5] 有 可以吹一下时间还 idempotent , etag(http://www.infoq.com/cn/articles/etags)
  • 6. BeetleSoft 大型网站技术架构探讨 [6] 客向网站 出 求访 发 访问请 , 由前端 面 存器 担原服 器的 理 程做出页 缓 负 务 处 进 响应 , 取原服 器的相 网 内容获 务 应 页 , 将其 存在自身的内存中储 , 与 此同时 , 传 送 客 一 存的内容给访 这 缓 ; 如有另一 客也 求 之前的相同内容访 请 访问 , 前端 面页 存器毋 再次 取原服 器上的相 内容缓 须 获 务 应 , 而直接从自身的内存中 取获 , 将这 一内容 送 客。反之传 给访 , 前端 面 存器也可 存 客的页 缓 缓 访 GET 和 POST 求。请    客 面 的是前端 面 存器访 实际 对 页 缓 , 与网站之 的通 完全由前端 面 存间 讯 页 缓 器反向代理 , 而非原服 器直接响 客务 应访 , 将大大加快 客上网流 度这 访 畅 , 有效 提升 量访问 , 著降低 占用显 带宽 , 原始服 器的繁忙度减轻 务 , 加快响 速度应 , 毋 不停地 置大内存须 购 , 大硬盘 , 容 力 施 服 器端 省成本。扩 电 设 为 务 节
  • 7. BeetleSoft 大型网站技术架构探讨 [7] ESI 是一个基于 XML 的 言,目的是在标记语 HTTP 中 装各 源。在 境组 种资 实际环 中,一个 生成的 面,当中可能只有少量的内容是 繁 化的或是个性化动态 页 频 变 的, 于 的对 传统 Cache 服 器来 , 了能 保 面的 效性,却由于 面务 说 为 够 证页 时 页 中 些少量的 内容而无法将整个 面 行 存。这 动态 页 进 缓 ESI 通 使用 的过 简单 标记语 言来 那些可以 存和不能 存的网 中的内容片断 行描述,每个网 都被对 缓 缓 页 进 页 分成不同的小部分分 予不同的 存控制策略,使划 别赋 缓 Cache 服 器可以根据务 些策略在将完整的网 送 用 之前将不同的小部分 地 合在一起。这 页发 给 户 动态 组 通 控制,可以有效地 少从服 器抓取整个 面的次数,而只用从原服过这种 减 务 页 器中提取少量的不能 存的片断,因此可以有效降低原服 器的 ,同务 缓 务 负载 时 提高用 的响 。户访问 应时间
  • 8. BeetleSoft 大型网站技术架构探讨 [8] 常 存算法见缓 莱蒂算法(贝 Belady's Algorithm ) 最有效率的 存算法会 掉未来最 内不使用的数据。 理想情况被称缓 丢 长时间 这种 作 莱蒂最 算法或者千里眼算法。由于要 数据要多久后才被使用基本上贝 优 预计 是不可能的,所以 算法没有 的可操作性。它的作用在于 不同的 存这种 实际 为 缓 算法 立一个 劣 准。订 优 标 最近最少使用算法 (LRU , Least Recently Used ) 最近最少使用算法的思路是 弃近段 内最少被使用的数据。要 算丢 时间 实现这种 法需要跟踪数据何 被使用,用 方法来 去近一段 被最少使用次数时 这种 筛选 时间 的数据其代价往往是昂 的。它的 往往是通 在 存数据上 立 志贵 实现 过 缓 设 时间标 位,用以跟踪最近最少被使用的 存数据。一个数据每被使用一次,其他数据缓 的 志位数 就要增加。时间标 值
  • 9. BeetleSoft 大型网站技术架构探讨 [9] 网站反 不 , 展比 利。 于有 逼馈 错 业务发 较顺 终 傻 VC 投 了, 充足,就必钱 银弹 须 考 网站可用性及服 容量冗余性 。增加机器,虑 务 问题 搞 HA 是必然 了选择
  • 10. BeetleSoft 大型网站技术架构探讨 [10] DNS 均衡负载 反向代理 均衡负载 直接路由 F5 硬件 LVS ( LVS 集群采用 IP 均衡技 和基于内容 求分 技 。 度器具有很负载 术 请 发 术 调 好的吞吐率,将 求均衡地 移到不同的服 器上 行,且 度器自 屏蔽掉请 转 务 执 调 动 服 器的故障,从而将一 服 器 成一个高性能的、高可用的虚 服 器。务 组 务 构 拟 务 整个服 器集群的 客 是透明的,而且无需修改客 端和服 器端的程务 结构对 户 户 务 序) Virtual Server via NAT ( VS-NAT ) 用地址翻 虚 服 器。地址 器有译实现 拟 务 转换 能被外界 到的合法访问 IP 地址,它修改来自专 有网 的流出包的地址。外界看起来包是来自络 地址 器本身,当外界包送到 器 ,它转换 转换 时
  • 11. BeetleSoft 大型网站技术架构探讨 [11] 各个 系数据 厂商关 库 针对 dal 及 replication 都有自己方案 独立的 DAL Proxy 服 器务 MySQL: mysqlproxy,Amoeba PostgreSQL: PL/Proxy (Skype) DAL API Java: Hibernate Shard,Ibatis Shard,HiveDB,Guzz Python: Pyshards
  • 12. BeetleSoft 大型网站技术架构探讨 [12] 网站 展迅速,数据量大幅增大是当前最大的挑 ,用 分散各地区,某业务发 战 户 些地方用 响 很慢,影响体 和 展户访问 应 验 业务发 同 ,由于数据量 大,数据 存在本地内存已 不 ,分布式 存是必然时 过 缓 经 现实 缓 了选择
  • 13. BeetleSoft 大型网站技术架构探讨 [13] CDN 的全称是 Content Delivery Network ,即内容分 网 。其目的是通 在发 络 过 现 有的 Internet 中增加一 新的网 架 ,将网站的内容 布到最接近用 的网层 络 构 发 户 络 " 边缘 " ,使用 可以就近取得所需的内容,解决户 Internet 网 的状况络拥挤 ,提高用 网站的响 速度。从技 上全面解决由于网 小、用户访问 应 术 络带宽 户访 量大、网点分布不均等原因所造成的用 网站响 速度慢的 。问 户访问 应 问题 ( 也 就是一个服 器的内容,平均分部到多个服 器上,服 器智能 , 用务 务 务 识别 让 户 取离用 最近的服 器,提高速度。获 户 务
  • 14. BeetleSoft 大型网站技术架构探讨 [14] 本地 存缓 vs 分布式 存, 什么要 分布式 存?缓 为 搞 缓 什么分布式 存器都是采取为 缓 Key-Value 形式 ?
  • 15. BeetleSoft 大型网站技术架构探讨 [15] 垂直分 后,各模 数据之 如何 ?垂直分 前提是良好的松耦合的库 块 间 关联查询 库 模 化块 设计
  • 16. BeetleSoft 大型网站技术架构探讨 [16] Shard 是分布式解决方案,与数据 集中式的表空 分区是 个不同方案库 间 两
  • 17. BeetleSoft 大型网站技术架构探讨 [17] 某天突然 网站可以成 第发现 为 2 个 facebook 了,用 ,数据量 到户过亿 达 pb 。级 网站性能不是通 增加硬件服 器就能 足的。(机房放 都不 )过简单 务 够满 满 够 这 就不得面 以下 :既然样 对 选择 1 个机房都容不下了(可看做一个数据中心), 那么就建多几个(多个数据中心);建立数据中心,无疑就需要更多的机器和 存 ,考 天价的成本的,利用 有廉价的存 和机器,参照储 虑 现 储 google 的 GFS 、 Map/Reduce 、 Bigtable 技 模式搭建分布式存 和 算的架 就是必然 了术 储 计 构 选择 。
  • 18. BeetleSoft 大型网站技术架构探讨 [18] DFS 提供了一个全局命名空 的高可用(通 跨机器(和跨机架)的文件数据间 过 复 制来 到高可用性,免受 文件存 系 无法避免的 多失 的影响)文件达 传统 储 统 许 败 系 ,解决高容量数据高效、可靠存 ;统 储问题 Map/Reduce 的 算框架,它与计 DFS 密 作,帮助 理收集到的海量数据紧 协 处 ;Key-Value DB 代替 的数据 ,传统 库 通 一些主 来 海量数据,并 高效的 。过 键 组织 实现 查询
  • 19. BeetleSoft 大型网站技术架构探讨 [19] 从网站架 演 程来看,涉及到构 变过 n 多的技 点及 模式, 什么要用 些术 设计 为 这 技 ? 什么 ?困惑了?术 为 这样设计 所以我 需要理 来支 和指 我 架 工作们 论 撑 导 们 构设计
  • 20. BeetleSoft 大型网站技术架构探讨 [20] Eric Brewer, 一位加州大学伯克利分校的教授 http://www.cs.berkeley.edu/~brewer/
  • 21. BeetleSoft 大型网站技术架构探讨 [21] CAP 分布式系 和 型都有重大指 意 ;对开发 统 选 导 义
  • 22. BeetleSoft 大型网站技术架构探讨 [22] http://en.wikipedia.org/wiki/Shared_nothing_architecture SNA 的主要是 在一个集群分布式 算 境中,若认为 计 环 Session 状 在各个态维护 节 点服 器上, 了保 状 一致性, 点务 为 证 态 节 间 Session 数据需要互相拷 同步,贝 严 重影响性能。
  • 23. BeetleSoft 大型网站技术架构探讨 [23] 基于 SOA 方面架 的很多了, 里就不 略 了构说 这 简单 过 切勿浪 多 西去做用 少的 西同 可以做好的事情费较 东 较 东 样
  • 25. BeetleSoft 大型网站技术架构探讨 [25] 言的 意味着不同的架 路 、不同的语 选择 构 线 开发 框架、不同的部署方式测试 及不同的 效率,最 到底, 言 涉及到 源成本。开发 终 语 选择 资 和人是最 要的钱 终 o( _ )o…∩ ∩