大型网站技术架构核心原理与案例分析
2023-05-27 08:24:12 0 举报
AI智能生成
大型网站技术架构核心原理与案例分析
作者其他创作
大纲/内容
高并发、大流量
高可用
海量数据
用户分布广泛、网络情况复杂
安全环境恶劣
需求快速变更、发布频繁
渐进式发展
特点
将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责
分层
将系统在纵向上切分,将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元
分割
将不同模块部署在不同的服务器上,通过远程调用协同工作
分布式应用和服务
分布式静态资源
分布式数据和存储
分布式计算
分类
分布式
多台服务器部署相同的应用,通过负载均衡共同对外提供服务
集群
改善软件系统的第一手段
数据访问热点不均衡。将某些会频繁访问的数据放入缓存中
数据在某段时间内有效,不会很快过期
条件
缓存
将一个复杂业务操作分成几个阶段,每个阶段之间通过共享数据的方式进行异步执行
异步
服务器冗余、数据库冗余
冗余
自动化
安全
模式
大型网站架构模式
有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计
软件架构
浏览器缓存、页面压缩、合理布局页面、减少Cookie传输等
CDN
浏览器前端
应用服务器
多线程、改善内存等
代码
索引、缓存、SQL优化等
数据库
性能
冗余、集群
可用性
服务器集群、无状态(不保存数据)
数据库集群
NoSQL
伸缩性
消息队列
事件驱动架构
业务和可复用服务分离开来,通过分布式服务框架调用
分布式服务
扩展性
攻击手段
防火墙
信息加密
安全性
五大要素
大型网站核心架构要素
最重要的衡量指标
响应时间
反应系统的负载特性
并发数
单位时间内系处理的请求数
吞吐量
性能计数器
指标
压力测试
负载测试
性能测试
稳定性测试
测试方法
减少HTTP请求
使用浏览器缓存
启用压缩
CSS放在上面、JS放在下面
减少Cookie传输
CDN加速
反向代理
WEB前端性能优化
提升性能第一要务:优先使用缓存
遵循二八定律:80%的访问落在20%的数据上,利用Hash表和内存的高速访问特性,将这20%的数据缓存起来
应用服务器性能优化
数据采用
B+树
LSM树
存储性能优化
单例
对象池
资源复用
数据结构
垃圾回收
将对象设计为无状态
使用局部变量
并发访问资源时使用锁
多线程
代码优化
性能优化
网站的高性能架构
四9原理
保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问
目的
数据和服务的冗余备份
失效转移
主要手段
保证应用服务器的无状态性
负载均衡
WEB容器开启Session复制功能,几台服务器之间进行Session同步
Session复制
利用负载均衡的源地址Hash算法,确保同一个IP请求分发到同一台服务器
Session绑定
利用Cookie记录Session
独立部署Session服务器统一管理Session
Session服务器
Session管理
高可用的应用
高可用的服务模块为业务产品提供基础公共服务
核心服务和服务优先使用更好的硬件;
子主题
服务部署进行必要的隔离,避免故障的连锁反应
分级管理
设置超时;一旦超时,通信框架抛出异常
超时设置
异步调用
为了保证核心应用和功能的正常运行,需要对服务进行降级处理
拒绝低优先级应用的调用,减少服务调用并发数,确保核心应用正常使用
拒绝服务
关闭部分不重的功能
关闭功能
服务降级
在服务层保证服务重复调用和调用一次产生的结果相同
幂等性设计
服务策略
高可用的服务
保证数据有多个副本,任意副本的失效都不会导致数据的永久丢失
数据备份
保证当一个数据副本不可以访问时,可以快速切换访问数据的其他副本,保证系统的可用
手段
数据持久性
数据可访问性
各个副本的数据在物理存储中总是一致的
数据强一致性
各个副本的数据可能会不一致,但通过纠错和校验机制,可以确定一个一致的且正确的数据返回给用户
数据用户一致性
系统经过一段时间(比较短)的自我恢复或者修正,数据最终会达到一致
数据最终一致性
数据一致性
CAP原理
冷备
存储服务器分为主存储服务器(Master)和从存储服务器(Slave)
主存储服务器将数据写入本机存储系统后立即返回成功,然后通过异步线程将写操作数据同步到从存储服务器
异步热备
多份数据副本的写入操作同步进行
应用程序收到成功时,表示多份数据的写操作都已完成
同步热备
热备
当一台数据服务器宕机时,应用服务器访问其他服务器。保证数据访问不会失效
通过心跳检测和应用程序访问失败报告
失效确认
数据恢复
三部分
高可用的数据
网站的高可用架构
通过不断地向集群中添加服务器来增强整个集群的处理能力
服务器集群
根据功能进行物理分离实现伸缩
单一功能通过集群实现伸缩
分为两类
应用服务器应该设计为无状态(不存储请求上下文信息)
HTTP重定向负载均衡
DNS域名解析负载均衡
反向代理负载均衡
IP负载均衡
数据链路层负载均衡
技术
轮询
加权轮询
随机
最符合负载均衡的算法
最少连接
同一个IP的请求总是在同一个服务器上处理
源地址散列
负载均衡算法
应用服务器集群
目的:新加入缓存服务器后应使整个缓存服务器集群中已经缓存的数据尽可能还被访问到
新增服务器,会导致命中率大幅度地降低
存在问题
1.在网站访问量最少的时候扩容缓存服务器集群
2.一致性Hash算法
方案
通过一个叫做一致性Hash环的数据结构实现KEY到缓存服务器的Hash映射
新加入节点只会影响整个环中的一小段
新增新节点会导致负载压力不均衡问题
问题
设置虚拟层:将每台物理缓存服务器虚拟为一组虚拟缓存服务器,将虚拟服务器的Hahs值放置在Hash环上,Key在环上先找到虚拟服务器节点,再得到物理服务器的信息
解决方案
扩展
一致性Hash算法
分布式缓存集群
Cobar模型
关系型数据库集群
NoSQL数据库集群
数据存储服务器集群
网站的伸缩性架构
对现有系统影响最小的情况下,系统能够持续扩展或提升的能力
基础设施稳定不需要经常变更
应用之间较少的耦合度
系统能够通过增加(或者)减少自身资源规模的方式增强(减少)自己计算处理事务的能力
概念
通过消息对象分解系统耦合性,不同子系统处理同一个消息
通过在低耦合的模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块之间的合作
新增业务,只要对该类消息感兴趣,即可订阅该消息,对原有系统没有任何影响
发布-订阅模式
分布式消息队列
通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务调用
将一个大应用拆分为多个小应用,各个应用独立部署,降低耦合度
纵向拆分
将复用的业务分拆出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务,不需要依赖具体的模块代码
横向拆分
业务拆分
负载均衡、失效转移、高效的远程通信、整合异构系统、对应用最少侵入、版本管理、实时监控
支持特性
Dubbo
框架
网站的可扩展性架构
跨站点脚本攻击;黑客通过篡改网页,注入恶意HTML脚本,用户在浏览网页时,控制用户浏览器进行恶意操作
对危险字符进行过滤
所有网站必备的XSS防攻击手段
消毒
防止XSS攻击者窃取Coolie
HttpOnly
防范手段
XSS攻击
SQL注入攻击
OS注入攻击
两种形式
通过正则匹配,过滤请求数据中可能注入的SQL
使用预编译手段,绑定参数是最好的防SQL注入方法
参数绑定
注入攻击
跨站点请求伪造,利用浏览器Cookie或者服务器Session策略,盗取用户身份
表单Token
验证码
Referer Check
CSRF攻击
Error Code
HTML注释
文件上传
路径遍历
Web防火墙
网站安全漏洞扫描
通过对不同输入长度的信息进行散列计算,得到固定长度的输入
MD5、SHA
单向散列加密
加密和解密使用的密钥是同一个密钥
适用于信息交换或者存储的场合,如Cookie加密,通信加密
DES、RC
对称加密
加密和解密使用的密钥不是同一个密钥,对外公开的为公钥,只有所有者知道的为私钥;
信息安全传输、数字签名
RSA
非对称加密
加密
网站的安全架构
大型网站技术架构-核心原理与案例分析
0 条评论
回复 删除
下一页