大型网站架构核心要素
2022-11-02 16:31:16 14 举报
AI智能生成
高性能 高并发 高可用 后端服务 IT架构
作者其他创作
大纲/内容
目的:使其能够快速响应需求变化。衡量标准:服务增加新的业务产品时,是否可以实现对现有产品透明无影响。架构设计:对扩展开放,对修改关闭。
目的:低耦合高内聚
模式:中台架构
业务服务框架:SpringCloud,Dubbo
分布式服务特点:负载均衡、失效转移、高效的RPC通信、整合异构系统、对业务侵入最少、版本管理
分布式架构
生产者消费者模式属于事件驱动架构
分布式消息队列实现业务解耦
关系型数据库-表结构设计
非关系型数据库-天然可扩展性
可扩展的数据结构
利用开放平台建设网站生态圈
统一开放平台
开放能力
可扩展性:主要指功能扩展性1)系统基础设置稳定,不需要经常变更2)应用之间较少依赖或者耦合3)对需求变更可以敏捷响应
XSS攻击:(Core Site Script)跨站脚本攻击
注入攻击:SQL注入/OS注入攻击
在用户不知情的情况下,以用户身份伪造请求
CSRF攻击:(Cross Site Request Forgery 跨站点请求伪造)
ErrorCode 堆栈信息
HTML注释
文件上传漏洞
其他漏洞攻击
安全产品:WAF
场景:接口加密、密码加密
单项散列加密
DES算法,RC算法
对称加密:加密和解密使用的是同一个密钥
RSA算法
非对称加密:公钥+私钥模式
密钥安全管理
信息加密技术与密钥安全管理
双数组Trie算法
文本匹配
朴素贝叶斯算法、TAN算法、ARCS算法
分类算法
Hash表(扩容寻址:一致性hash算法)、布隆过滤器(存在误判)
黑/白名单
信息过滤与反垃圾
安全性
服务和数据分离
缓存的使用
数据库读写分离
反向代理+CDN加速
使用NoSQL和搜索引擎
SpringCloud Alibaba
Dubbo
分布式框架-微服务
架构演进之路
响应时间
网站系统用户数 >> 网站在线用户数 >> 网站并发用户数
并发数
系统性能计数器
TPS(每秒事务数)
HPS(每秒中HTTP请求数)
QPS(每秒查询数)
吞吐量
衡量指标
优化页面HTML样式
浏览器端的并发和异步特性
调整浏览器缓存策略
使用CDN服务
反向代理
浏览网站加载的是快还是慢?
用户视角下的网站性能
使用缓存加速数据读取
使用集群提高吞吐能力
使用异步消息加快响应及流量削峰
代码优化改善程序性能
开发人员视角下的网站性能
网络运营商的带宽能力
服务器硬件的配置
系统集群网络架构
服务器和网络带宽的利用率
更加关注基础设施性能和资源利用率
运维人员视角下的网站性能
不同视角下的网站性能
对系统不断施压,直到达到性能预期
性能测试
对系统不断施压,直到系统的某项或多项性能指标达到安全临界值
负载测试
超过安全临界值情况下继续施压,直到系统崩溃或者不能再处理任何请求
压力测试
给系统加载一定业务压力运行一段较长时间,以此检测系统是否稳定
稳定性测试
性能测试方法
性能分析:排查请求处理的各个环节耗时日志,检查各个环节监控数据分析影响性能的主要因数(内存、磁盘、网络、CPU、代码问题、架构问题、资源确实不足)
减少HTTP请求
使用浏览器缓存
文本文件(HTML/CSS/JS)的压缩效率可达80%
启用压缩,减少通信传输数据量
浏览器在下载完全部css后才开始渲染,JS则是立即执行
CSS放在页面最上面,JS放在页面最下面
较少Cookie传输
浏览器访问优化
CDN本质仍是一个缓存,将数据缓存在离用户最近的地方,缓存静态资源:图片、文件、CSS、Script、静态网页
CDN加速
反向代理服务器具备保护网站安全的作用
反向代理服务器配置缓存功能加速web请求
反向代理实现负载均衡功能
反向代理:服务器端代理称为反向代理
WEB前端性能优化
存放读写比例比较高、很少变化的数据;
知其可用
不可存放频繁修改的数据
不可存放没有热点访问的数据
不可不解决数据不一致和脏读问题
不可对缓存性能强制依赖,防止缓存雪崩带来的服务宕机
简单解决方案是把不存在的数据也缓存起来,其value为null
不可不考虑缓存击穿,防止恶意请求对DB造成的压力
知其不可用
Memcached
Redis
分布式缓存架构:产品分析
分布式缓存:二八原则
使用MQ将调用异步化
要处理好异步执行结果的回到通知
异步操作:异步+回调技术(任何可以晚点做的事情都应该晚点做)
使用集群
CPU计算型任务
IO阻塞型任务
一台服务器上启动线程数=[任务执行时间 /(任务执行时间-IO等待时间)] x CPU内核数
讲对象设计为无状态对象
使用局部对象
并发访问资源时使用锁
线程安全问题
多线程
单例技术
对象池技术
资源复用:要尽量减少那些开销很大的系统资源的创建和销毁
数据结构:程序=数据架构 + 算法
精准内存管理
垃圾回收
代码优化
应用服务器性能优化
索引
缓存+预加载技术
SQL优化
数据模型
存储架构
伸缩特性
引入NoSQL
数据库层面
从机械硬盘到固态硬盘
B+树 和 LSM树
RAID 和 HDFS
存储性能优化
性能优化
高性能
部署架构上对服务进行分级管理,核心应用和服务优先使用更好的硬件,在运维响应速度上也格外迅速。
RPC超时设置,重试或将请求转移到幂等性其他服务上
同步调用改成MQ异步调用
服务降级:1)拒绝服务:拒绝低优先级应用的服务 2)关闭功能:关闭部分不重要的功能
幂等性设计:在服务层保证服务重复调用和调用一次产生的结果相同,及服务具有幂等性。
应用服务:会话无状态的负载均衡
主从模式:MySQL主从备份
异步热备
主主模式:客户端并发向多个存储服务器同时写入数据,都返回成功才算成功
同步热备
数据备份
心跳检测
应用程序访问失败报告
失效确认
选举算法
访问转移
从健康的服务器恢复数据,将数据副本数目恢复到设定值
数据恢复
失效转移
存储服务:集群模式
分类1:大型集群,分时间段分批发布,把控新版本带来的回滚风险
分类2:灰度版本,种子用户,收集用户操作行为、收集用户体验报告,亦称:AB测试
灰度发布:总体要求整个发布过程中不影响该用户的体验
解决需要全面的回归测试的难题
自动化测试
快速失败:早发现早治疗
预发布服务器和线上服务器唯一不同就是没有配置在负载均衡服务器上,外部用户无法访问。
预发布验证
主干开发,分支发布
分支开发,主干发布
代码管理
示意图
火车发布模型
自动化发布
服务端日志收集
客户端日志收集
用户行为日志收集
服务器性能监控
运行数据报告
运维监控:不允许没有监控的系统上线
系统报警
自动优雅降级
监控管理
DevOps:完成飞行中飞机换引擎的工作
高可用性:主要手段是冗余
HTTP重定向负载均衡
DNS域名解析负载均衡
反向代理负载均衡
IP负载均衡
数据链路层负载均衡
轮询:平均分发
加权轮询:加权重分发
随机:随机数分发
最少链接:将请求分发到最少链接的服务器上
源地址散列:根据请求来源的IP地址进行Hash计算,得到相应服务器
负载均衡算法
应用服务器集群的伸缩性设计:负载均衡技术(会话无状态)
经典语录:计算机的任何问题都可以通过增加一个虚拟层来解决
一致性Hash算法
缓存服务器:要解决缓存路由失效的问题
分库:主从读写分离
分表组件:Cobar/Mycat等组件
关系数据库:分库/分表/表分区
放弃了: 1)结构化查询语句 2)事务一致性保证
具备了:1)高可用性 2)可伸缩性
NoSQL:先天支持弹性伸缩
伸缩性:通过增/减服务器资源数量实现抗压能力的线性增/减
网站架构核心要素
0 条评论
下一页