大型网站技术架构(一)

大型网站软件特点

  • 高并发
  • 高并发用户,大流量访问
  • 高可用
  • 系统24小时不间断服务
  • 海量数据
  • 存储/管理海量数据
  • 网络复杂
  • 服务用户范围广,网络情况千差万别
  • 安全环境恶劣
  • 互联网的开放性,导致网站更易受到攻击

大型网站架构发展历程

  • 单机架构
  • 应用程序/数据库/文件等资源都部署在一台服务器上


    初始阶段的网站架构.png
  • 应用服务和数据服务分离
  • 应用服务器/文件服务器/数据服务器分离


    应用服务和数据服务分离.png
  • 缓存改善网站性能
  • 本地缓存: 访问速度快,受应用服务器内存限制,缓存数据有限
  • 分布式缓存: 使用集群方式,理论上不受内存容量限制的缓存服务


    网站使用缓存.png
  • 应用服务器集群
  • 通过负载均衡服务器,将用户访问请求分发到应用服务器集群中任何一台,若出现更多用户,就在集群中加入更多应用服务器,使应用服务器的负载不再成为网站瓶颈


    应用服务器集群部署.png
  • 数据库读写分离
  • 数据库主从热备功能实现数据库读写分离


    数据库读写分离.png
  • 使用反向代理和CDN加速网站响应
  • 反向代理: 基本原理是缓存,部署在网站的中心机房,用户请求到达中心机房后,首先访问反向代理服务器,若反向代理服务器缓存着用户请求的资源,就将其直接返回给用户
  • CDN: 基本原理是缓存,部署在网络提供商的机房,用户请求网站服务时,可从距离最近的网络提供商机房获取数据


    网站使用反向代理和CDN加速访问.png
  • 使用分布式文件系统和分布式数据库系统
  • 业务分库: 将不同业务数据库部署在不同的物理机上(分库分表)


    使用分布式文件和分布式数据库系统.png
  • 使用NoSQL和搜索引擎
  • 通过统一数据模块访问各种数据(聚合)


    使用NoSQL系统和搜索引擎.png
  • 业务拆分
  • 分而治之: 将网站拆分成不同应用,每个应用独立部署维护


    应用拆分.png
  • 分布式服务
  • 抽象复用服务,搭建共用业务服务(基础服务)


    分布式服务.png

网站架构设计误区

  • 一味追随大公司的解决方案
  • 因地制宜,不可一味盲从
  • 为了技术而技术
  • 脱离业务发展实际,一味追求新技术
  • 企图用技术解决所有问题
  • 技术是用来解决业务问题的,而业务问题也可以通过业务手段解决

网站架构模式

  • 分层
  • 概念: 将系统横向纬度切分为几个部分,每个部分负责相对单一的职责,然后通过上层对下层的依赖和调用组成一个完成的系统(如网络七层协议)
  • 挑战: 合理规划层次边界及接口,严格遵循分层架构约束,禁止跨层次调用(应用层直接调用数据层)及逆向调用(数据层调用服务层或服务层调用应用层)
  • 优点: 清晰的逻辑结构便于开发维护,各层之间具有一定独立性,只要维持调用接口不变,各层可根据具体问题独立演化发展而不需要其他层做出相应调整(扩展性)


    网站分层架构.jpg
  • 分割
  • 概念: 将系统纵向纬度切分,按不同业务进行分割(如:订单/库存/支付/搜索),也可更小粒度分割
  • 优点: 便于开发维护,不同模块分布式部署,提高网站并发处理能力和功能扩展能力
  • 分布式
  • 分布式挑战
# 网络: 分布式意味着服务调用必须通过网络,这可能对性能造成严重影响
# 服务器宕机概率: 服务器越多,宕机几率越大,使网站可用性降低
# 数据一致性: 分布式环境中保持数据一致性非常困难,分布式事务也难以保证
# 可维护性: 分布式网站依赖错综复杂,开发管理维护困难
  • 分布式方案
# 分布式应用和服务: 将分层和分割后的模块分布式部署,改善网站性能/并发性,加快开发和发布速度,减少数据库连接资源消耗,使不同应用复用共用服务,便于业务功能扩展
# 分布式静态资源: 静态资源分布式部署减轻应用服务器负载压力;使用独立域名加快浏览器并发加载的速度.(即常说的动静分离)
# 分布式数据和存储: 大型网站需要处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,需要分布式存储;除对传统关系数据库进行分布式部署外,为网站应用而生的NoSQL产品几乎都是分布式的
# 分布式文件系统: 支持云存储
# 分布式计算: 实时计算与非实时计算,如搜索引擎的索引构建/数据仓库的数据分析统计(如MapReduce及Storm)
# 分布式配置: 支持网站线上服务器配置实时更新(携程的开源分布式配置中心Apollo)
# 分布式锁: 实现并发和协同
  • 集群
  • 概念: 多台服务器相同应用构成一个集群,通过负载均衡服务器共同对外提供服务
  • 优点: 提供更好并发特性,如:有更多用户访问时,只需向集群中加入新机器即可;提高系统可用性,如:某台服务器发生故障,负载均衡服务器或系统的失效转移机制将请求转发到集群中其他服务器上,使服务器故障不影响用户使用
  • 缓存
  • CDN: 即内容分发网络,部署在离用户最近的网络服务商,用户的请求先到达网络服务商,在这里缓存网站的一些静态资源,可就近最快速度返回给用户,如视频和门户网站将访问量大的热点内容缓存在CDN
  • 反向代理: 用户请求到达网站的数据中心时,最先访问反向代理服务器,这里缓存网站的静态资源,无需将请求转发给应用服务器即可返回给用户
  • 本地缓存: 应用服务器本地缓存热点数据(如Google的Guava或JDK的Caffeine)
  • 分布式缓存: 将数据缓存在专门的分布式缓存集群中,应用通过网络通信访问缓存数据(如Redis)
  • 异步
  • 分类: 单机架构中内部通过多线程方式实现异步;分布式系统中通过分布式消息队列实现异步
  • 优点: 提高系统可用性;加快网站响应速度;消除并发访问高峰
  • 冗余
  • 冷备份: 数据库定期备份,存档保存
  • 热备份: 数据库主从复制,实时同步
  • 灾备数据中心: 抵抗地震/海啸的那个不可抗力导致的网站瘫痪,需进行灾备
  • 自动化
  • 自动化代码管理
  • 自动化测试
  • 自动化安全检测
  • 自动化部署
  • 自动化监控
  • 自动化报警
  • 自动化失效转移
  • 自动化失效恢复
  • 自动化降级
  • 自动化分配资源
  • 安全
  • 网络通信加密
  • 垃圾及敏感信息过滤
  • 风控

系统层次

  • 基础服务层
  • 提供数据库/缓存/存储/搜索等数据服务
  • 平台服务/应用服务层
  • 通过依赖调用和共享基础数据构成
  • API/业务层
  • 客户端和第三方应用

大型网站核心架构要素

  • 性能
  • 衡量网站性能有一系列指标,重要的有响应时间/TPS/系统性能计数器等
  • 可用性
  • 衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或多台服务器宕机,以及出现各种不可预期的问题时,系统整体是否依然可用
  • 伸缩性
  • 所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求
  • 衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群;是否容易向集群中添加新的服务器;加入新的服务器后是否可以提供和原来的服务器无差别的服务;集群中可容纳的总的服务器数量是否有限制
  • 扩展性
  • 衡量标准: 衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务时,是否可以实现对现有业务透明无影响,不需要任何改动或很少改动既有业务就可以上线新业务
  • 主要手段
# 事件驱动架构: 利用消息队列实现
# 分布式服务: 将业务和可复用服务分离,通过分布式服务框架调用
  • 安全性
  • 保护网站不受恶意访问和攻击,保护网站重要数据不被窃取
  • 衡量网站安全架构的标准就是针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343