大型网站技术架构

概述

1.1 架构演化

初始网站架构

文件 应用程序 数据库 在一台服务器上

高流量、高并发网站:

应用服务与数据服务分离
应用服务器,文件服务器,数据库服务器

网站架构优化

  1. 利用缓存
    80%的业务集中在20%的数据上
    本读缓存
    远程分布式集群缓存
  2. 应用服务器集群改善并发性能
    通过负载均衡调度服务器,分发请求到应用服务器集群系统的任意一台服务器中
  3. 数据库读写分离
    主从热备;
  4. 反向代理 &cdn 加速网站访问速度
    反向代理: 网站中心机房
    cdn: 网络提供商机房
  5. 使用NoSQL和搜索引擎

1.2 价值观

中小型网站使用 LAMP

1.3 设计误区

追求大公司的解决方案
企图用技术解决所有问题

2.1 网站架构模式

分层:

分层 角色
应用层 业务,视图
服务层 为应用层提供服务支持
数据层 数据存储访问,搜索引擎;数据库,缓存文件

分割

高内聚低耦合的模块,功能和数据分离

分布式

优点: cpu,内存,存储资源越多,能够处理的并发和数据量越大;
缺点:服务器不工作的几率增大,导致部分应用无法访问,可用性降低。保持数据一致性困难

集群

独立部署服务器集群化,通过负载均衡设备共同对外提供服务
即使是访问量很小的分布式应用和服务,也要至少部署两台服务器构成集群提高系统的访问性

缓存

  1. CDN
    从距离用户最近的网络提供商进行响应;
    保存首页等经常访问的静态资源(变化较少);
    多见于视频网站,门户网站的热点内容
  2. 反向代理
    保存在网站的前端
    首页等静态资源

异步

分布式消息队列,等待服务器依次处理
场景: 促销,微博热点等访问高峰,使用消息队列将突然增加的访问请求数据放入消息队列中

冗余

服务器冗余
数据冗余

自动化

发布过程自动化 减少人为干预
自动化代码管理 版本控制,代码分支创建合并
自动化测试 部署测试环境,自动化样例测试,返回测试报告
自动化安全检测
自动化部署

安全 风险控制

安全校验
数据加密传输
验证码防止机器人程序攻击网站
防止xss,SQL注入
垃圾、敏感信息过滤

3.1 架构要素

架构

高性能

网站性能测试

  • 性能测试指标:
    响应时间
    并发数
    吞吐量

    网站性能优化第一定律:优先使用缓存优化性能

- 用户角度

优化html样式
利用浏览器的并发、异步特性
调整浏览器的缓存策略
减少http请求次数
使用cdn服务加速
反向代理

- 开发角度

合理使用缓存加速数据读取
使用集群增加吞吐能力
使用异步消息加速请求响应及实现削峰

前端性能优化

-浏览器性能优化

减少http请求次数
使用浏览器缓存
html页面中,css放在最上方,js放在最下方
减少cookie传输
启用压缩

应用服务器性能优化

集群
-- 安全性检查 缓存 加快访问速度 2:1原则

-使用分布式缓存

合理使用缓存:
几个名词:

  • 缓存预热
    在缓存系统启动前将热点数据加载好
  • 缓存穿透
    将不存在的数据存储起来,value = null
    由于不恰当的业务或者恶攻击 ,持续高并发请求某个不存在的数据,由于缓存中不存在,会持续向服务器发起请求,可能造成崩溃。
-异步操作

使用消息队列注意:请求放入消息队列立即返回,给予客户端响应;
对于订单处理,发送邮件,必须等待服务器响应通知用户订单成功,以免引起纠纷

-使用集群

负载均衡服务器

存储性能优化

RAID(廉价磁盘访问阵列)改善磁盘的访问延迟
磁盘存储方式:

  • 存储速度
  • 数据可靠性
  • 磁盘利用率
    大型企业应用采取 hadoop分布式文件系统,不需要haid支持
    三次备份,一台服务器宕机,立即备份到另一台

高可用

高可用的网站架构

应用层
数据层
服务层
部署到各自独立的服务器上

高可用的应用

高可用的服务

高可用的数据

缓存 服务不是数据存储服务,
扩大缓存服务器集群规模的的简单手段就是整个网站共享一个分布式缓存集群

- 原则

持久性: 在各种情况下数据都不会丢失
可访问性: 切换数据访问设备迅速
一致性:数据副本部分写入失败,导致不一致

-数据备份

冷备: 简单廉价 不能保证数据最终一致

-失效转移

失效确认:心跳检测 应用程序访问失败报告
访问转移
数据恢复:必须将数据恢复到系统设定的值

软件质量保证

-网站发布
- 自动化测试
-预发布验证
-代码控制

分支开发,主干发布:互不干扰,不同发布周期的开发可以在同一应用进行
主干开发,分支发布:主干代码反映整个应用状态,一目了然,利于持续集成

- 自动化发布
- 灰度发布

只发布一部分服务器,方便回滚

伸缩性

定义 不需要改变软硬件结构,通过改变部署服务器的数量扩大或缩小网站的服务能力

应用服务器集群伸缩性

-负载均衡
  • http负载均衡
  • 反向代理负载均衡
  • dns域名解析负载均衡
  • 数据链路层负载均衡
  • ip负载均衡

分布式缓存集群的伸缩性

-余数hash

用hash值/ 服务器数目 得到的数字对应服务器列表下标

-分布式缓存的一致性hash算法

计算机中的任何问题都可以通过增加一个虚拟层来实现

-一致性hash算法(虚拟层手段)

一台物理虚拟机虚拟为150个虚拟服务节点最合适

数据存储服务器集群伸缩性

- 关系型数据库的伸缩性

主从读写分离
业务分割模式

- noSQL数据库的伸缩性

应用最广泛的 HBase
数据以Hregion为单位进行管理

可扩展架构

分布式消息队列降低系统耦合性

EDA架构: 生产者消费者模式
分布式消息队列: 发布订阅模式
消息元 ---》 分布式消息队列
消息接收者 --》 从消息队列中获得
消息发送者和接收者之间无直接联系

分布式服务

横向拆分:
复用的业务拆分部署为独立的模块
纵向拆分:
大应用拆分为多个小应用

可扩展的数据结构

面向矩阵的稀疏阵列存储格式 nosql ColomnFamily

利用开放平台建立网络生态圈

第三方增值服务,开放的调用接口

安全

信息过滤与反垃圾

-文本匹配

正则表达式匹配(效率低)
trie树:双数组trie树
构建多级hash表 提交信息在hash过滤树及其分支只能够逐字匹配

-分类算法

训练模型

-黑名单

案例

淘宝架构演化

linux+apache+mysql+php
mvc+orm 自主开发Webx+IBatis
Spring 代替 EJB JBoss 代替收费的Weblogic

维基百科高性能架构

使用免费开源的软件

-前端性能优化

“圣杯”cdn服务 用户查询的词条集中于比重很小的热点词条上,将词条内容缓存到服务器上,cdn又部署在离用户最近的地方,响应速度极快。
由于大多数请求根本不会到达Squid服务器,服务器压力骤减,节约资源可以处理其他未被

-服务器性能优化

从硬件改善性能

-后端性能优化

使用缓存,热点数据缓存在分布式缓存系统的内存中

  1. 热点集中数据 缓存在应用服务器的本地存储中
  2. 缓存数据尽量是浏览器可以直接使用的格式,避免解析构造数据的代价
    使用缓存服务器存储session对象
    mySQL 使用 raid0存储阵列,将加速磁盘访问放在首位,但数据丢失无法恢复
    业务后退一小步,技术前进一大步

Doris 高可用架构设计

在各种软硬件故障的情况下,如何保障数据可靠,服务可用

分布式存储系统

网购秒杀系统设计案例分析

大型网站典型故障

架构师

领导艺术

职场策略

架构师角色划分

一些名词

热备

宕机

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容