@wangzhuanyun
2019-10-21T11:59:29.000000Z
字数 1266
阅读 350
未分类
性能
访问速度
影响因素:
(软件质量,网络配置<用户带宽,服务器带宽>,用户配置<电脑配置,浏览器渲染速度>)
性能指标
相应时间(RT):一次请求的从请求到相应的时间间隔
并发用户数:同时访问系统的用户数
吞吐量:TPS(每秒事务速度),QPS(查询速度),HPS(每秒点击量)
性能计数器:内存,CPU....
什么情况进行性能调整
业务场景:用户访问网站加载太慢
瓶颈:
应用处理慢:存储分离,缓存,集群
数据库处理慢:缓存,读写分离
页面,静态资源加载太慢:代理加速(CDN加速与反向代理)
可用性
网站反映速度
量化公式
网站年度可用性=(1-不可用时间/年度运行总时间)*100%
业界通常使用几个9来进行表示,比如:2个9及99%
面临问题
应用服务器宕机
服务超时(线程死锁等)
数据库服务故障,数据丢失
优化思路:
(应用,服务,数据)备份,失效转移
落地方案:
应用集群
应用分布式(灾难分摊,灵活集群配置)
服务(熔断,异步,降级)
数据备份(分布式数据库,主从同步)
应用集群方案:
DNS负载均衡(1.DNS可靠性高 2.不判断节点故障)
Nginx负载均衡(容易成为系统瓶颈)
LVS负载均衡(抗负载能力强,配置少,节点故障判断能力弱)
应用分布式:
分布式应用(多个具有不同职能的应用,组成一个完整的应用)
服务高可用
常见问题:异常,超时
实现思路:熔断,异步(请求和处理隔离),降级(舍末保本)
数据高可用:
分布式——故障分摊(垂直,水平,混合)
显示方案(Cobar,MyCat)
集群——灵活配置(一主多从<主写从读>,多主多从<主写从读,多主互相备份>)
缓存高可用
redisCluster
多主多从(至少6台服务器)
slot=CRC16(KEY)mod 16384
伸缩性
用户量突增,系统做最小调整满足需求(网站根据情况灵活调整硬件配置的能力)
应用场景
应用负荷增大
数据库数据量增大
缓存数据量增大
应用服务器伸缩
分布式+集群(按需伸缩)
注意事项(无状态应用)
数据库服务器伸缩
mycat(重新指定分片规则,根据新的规则进行旧数据迁移)
缓存服务器伸缩
redisCluster(重新指定slot,按照新的slot迁移缓存数据)
扩展性
新功能最小开发量
描述:面临新业务们如何在对现有系统影响最小的情况下持续扩展
场景:
1.原有业务功能调整
2.服务器地址发生变化
3.数据结构发生变化
优化方式:
A.服务器地址发生变化:
1.动态获取地址
2.统一托管配置
B.原有业务功能调整:
并行业务->消息中间件
C.数据结构发生变化:NOSQL数据库
安全性
攻击方式与防护
网站攻击(XSS攻击<跨站脚本攻击>,注入攻击,CSRF<夸站点请求伪造>攻击)
隔离防护
思路:
1.将业务应用限制于内网
2.使用网关进行请求代理
定义:
将一个庞大的系统按照一定的维度设计成多个子服务
优点:
高可用(故障分摊)
微服务定义:微服务就是一些协同工作的小而自治的服务
设计原则:
围绕业务切分
单一职责
谁创建,谁负责
避免循环依赖
作业:
架构优化5大方向
性能的衡量指标
可用性的衡量指标
集群的有点
XSS个CSRF攻击