大型网站技术架构
2019-01-10 16:57:57 0 举报
AI智能生成
登录查看完整内容
大型网站技术架构
作者其他创作
大纲/内容
网站性能测试
减少http请求
使用浏览器缓存
启用压缩
CSS放在页面最上面,JavaScript放在页面最下面
减少Cookie传输
浏览器访问优化
CDN(Content Distribute Network,内容分发网络)加速
保护浏览器安全
缓存功能
负载均衡
反向代理
Web前端性能优化
本质是一个内存Hash表
二八定律:80%的访问落在20%的数据上
缓存的基本原理
缓存可用性
缓存预热
BloomFilter
缓存穿透
数据一致性
缓存读写比高的数据
热点数据
缓存的合理使用
缓存部署在多个服务器组成的集群中,以集群方式提供缓存服务
需要更新同步的分布式缓存,如 JBoss Cache
不互相通信的分布式缓存,如 Memcached
架构方式
分布式缓存架构
TCP(UDP也支持)通讯
通信协议简单
客服端程序丰富
Memcached服务端通信模块基于Libevent,一个支持事件触发的网络通信程序库
网络通信性能高
将内存空间分围一组slab,每个slab里又包含一组chunk,同一个slab里的每一个chunk的大小都是固定的,拥有相同大小chunk的slab被组织在一起叫做slab_class
存储数据时根据数据的Size大小,寻找一个大于Size的最小chunk将数据写入
避免了内存碎片管理的问题,内存的分配和释放都是一chunk为单位的
会带来内存浪费的问题
固定空间分配
内存管理高效
一致性Hash算法
服务器集群架构互不通信
Memcached
rdb
aof
持久化
Redis
分布式缓存
削峰作用
消息队列
异步操作
使用负载均衡技术为一个应用构建一个有多台服务器组成的服务器集群
子主题
使用集群
IO阻塞
多CPU
使用多线程的主要原因
将对象设计为无状态对象
使用局部对象
并发访问资源时使用锁
解决线程安全的手段
多线程
单例
对象池
资源复用
数据结构
垃圾回收
代码优化
应用服务器性能优化
机械硬盘 VS 固态硬盘
B+树 VS LSM树
RAID VS HDFS
存储性能优化
高性能架构
网站可用性度量
网站可用性考核
网站可用性的度量与考核
应用层
服务层
数据层
分层架构模型
高可用的网站架构
通过负载均衡进行无状态服务的失效转移
Session复制
Session绑定
Session服务器
利用Cookie记录Session
应用服务器集群的Session管理
高可用的应用
分级管理
超时设置
异步调用
拒绝服务
关闭功能
服务降级
信号量(Semaphore)
令牌桶(RateLimiter)
服务限流
服务熔断
在服务层保证服务重复调用和调用一次产生的结果相同
幂等性设计
当两个节点出现分歧时,由第3方的仲裁者决定听谁的。这个仲裁者,可能是一个锁服务,一个共享盘或者其它什么东西。
仲裁
当不能确定某个节点的状态时,通过fencing把对方干掉,确保共享资源被完全释放,前提是必须要有可靠的fence设备
fencing
如何防止HA集群脑裂
脑裂
通常用于读操作,但重试会带来更长延迟
Failover失败自动切换,当出现失败,重试其它服务器
通常用于非幂等性的写操作,比如新增记录
Failfast快速失败,只发起一次调用,失败立即报错
通常用于写入审计日志等操作
Failsafe失败安全,出现异常时,直接忽略
通常用于消息通知操作
Failback失败自动恢复,后台记录失败请求,定时重发
通常用于实时性要求较高的读操作,但需要浪费更多服务资源
Forking并行调用多个服务器,只要一个成功即返回
通常用于通知所有提供者更新缓存或日志等本地资源信息
Broadcast广播调用所有提供者,逐个调用,任意一台报错则报错
集群容错
高可用的服务
保证数据可持久存储
数据持久性
所有应用程序都能访问得到相同的数据
数据强一致
数据用户一致
数据最终一致
数据一致性Consistency
任何时候、任何应用程序都可以读写访问
数据可访问性Availability
系统可以跨网络分区线性伸缩
分区耐受性Partition Tolerance
指标
一个提供数据服务的存储系统无法同事满足数据一致性、数据可访问性、分区耐受性这三个条件
含义
CAP原理
基本可用(Basically Available)
软状态( Soft State)
最终一致性( Eventual Consistency)
BASE原理
add
高可用分布式锁RedLock
SET <KEY> NX EX
基于异常(使用临时节点)
基于相互监听(使用临时带序号节点)
Zookeeper
分布式锁
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TC - 事务协调者
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
TM - 事务管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
RM - 资源管理器
seata
JTA(Java Transaction API,XA的JAVA实现方案)
Atomikos是JTA的实现
单服务,多数据源
Atomikos
2PC 两阶段提交Two-phase Commit
Try
Confirm
Cancel
开源框架:ByteTCC,TCC-transaction,Himly
TCCTry-Confirm-Cancel
分布式事务
数据备份
失效确认
访问转移
数据恢复
失效转移
高可用的数据
网站发布
自动化测试
预发布验证
代码控制
自动化发布
灰度发布
蓝绿部署
金丝雀发布(灰度发布)
AB测试
上线部署方案
高可用网站的软件质量保证
监控数据采集
监控管理
网站运行监控
高可用架构
纵向分离(分层后分离)
横向分离(业务分割后分离)
不通功能进行物理分离实现伸缩
单一功能通过集群规模实现伸缩
网站架构的伸缩性设计
HTTP重定向负载均衡
DNS域名解析负载均衡
反向代理负载均衡
IP负载均衡
数据链路层负载均衡
轮询(Round Robin,RR)
加权轮询(Weighted Round Robin ,WRR)
随机(Random)
最少链接(Least Connections)
源地址散列(Source Hashing)
负载均衡算法
应用服务器集群的伸缩性设计
Memcached分布式缓存集群的访问模型
Memcached分布式缓存集群的伸缩性挑战
分布式缓存的一致性Hash算法
分布式缓存的集群的伸缩性设计
关系数据库集群的伸缩性设计
NoSQL数据库的伸缩性设计
数据存储服务器集群的伸缩新设计
伸缩性
构建可扩展的网站架构
事件驱动架构
分布式消息队列
利用分布式消息队列降低系统耦合性
利用分布式服务打造可复用的业务平台
利用开放平台建设网站生态圈
可扩展
XSS攻击
注入攻击
跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF
是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
CSRF攻击
网站应用攻击
单向散列加密
对称加密
非对称加密
密钥安全管理
信息加密技术及密钥安全管理
网站应用防御
OLTU
Oauth2
JWT(JSON Web Token)
认证
安全架构
《大型网站技术架构》
0 条评论
回复 删除
下一页