auto commit

This commit is contained in:
CyC2018
2020-11-17 00:32:18 +08:00
parent f5ad47b470
commit 7e61fc1360
380 changed files with 2371 additions and 46715 deletions

View File

@ -1,28 +1,24 @@
# 系统设计基础
<!-- GFM-TOC -->
* [性能](#一性能)
* [伸缩性](#二伸缩性)
* [扩展性](#三扩展性)
* [可用性](#四可用性)
* [安全性](#五安全性)
* [参考资料](#参考资料)
* [系统设计基础](#系统设计基础)
<!-- GFM-TOC -->
# 性能
## 性能
## 性能指标
### 性能指标
### 1. 响应时间
#### 1. 响应时间
指某个请求从发出到接收到响应消耗的时间
在对响应时间进行测试时通常采用重复请求的方式然后计算平均响应时间
### 2. 吞吐量
#### 2. 吞吐量
指系统在单位时间内可以处理的请求数量通常使用每秒的请求数来衡量
### 3. 并发用户数
#### 3. 并发用户数
指系统能同时处理的并发用户请求数量
@ -37,13 +33,13 @@
并发用户数不是越高越好因为如果并发用户数太高系统来不及处理这么多的请求会使得过多的请求需要等待那么响应时间就会大大提高
## 性能优化
### 性能优化
### 1. 集群
#### 1. 集群
将多台服务器组成集群使用负载均衡将请求转发到集群中避免单一服务器的负载压力过大导致性能降低
### 2. 缓存
#### 2. 缓存
缓存能够提高性能的原因如下
@ -51,21 +47,21 @@
- 缓存数据可以位于靠近用户的地理位置上
- 可以将计算结果进行缓存从而避免重复计算
### 3. 异步
#### 3. 异步
某些流程可以将操作转换为消息将消息发送到消息队列之后立即返回之后这个操作会被异步处理
# 伸缩性
## 伸缩性
指不断向集群中添加服务器来缓解不断上升的用户并发访问压力和不断增长的数据存储需求
## 伸缩性与性能
### 伸缩性与性能
如果系统存在性能问题那么单个用户的请求总是很慢的
如果系统存在伸缩性问题那么单个用户的请求可能会很快但是在并发数很高的情况下系统会很慢
## 实现伸缩性
### 实现伸缩性
应用服务器只要不具有状态那么就可以很容易地通过负载均衡器向集群中添加新的服务器
@ -73,7 +69,7 @@
对于非关系型数据库它们天生就是为海量数据而诞生对伸缩性的支持特别好
# 扩展性
## 扩展性
指的是添加新功能时对现有系统的其它应用无影响这就要求不同应用具备低耦合的特点
@ -82,9 +78,9 @@
- 使用消息队列进行解耦应用之间通过消息传递进行通信
- 使用分布式服务将业务和可复用的服务分离开来业务使用分布式服务框架调用可复用的服务新增的产品可以通过调用可复用的服务来实现业务逻辑对其它产品没有影响
# 可用性
## 可用性
## 冗余
### 冗余
保证高可用的主要手段是使用冗余当某个服务器故障时就请求其它服务器
@ -92,25 +88,18 @@
存储服务器的冗余需要使用主从复制来实现当主服务器故障时需要提升从服务器为主服务器这个过程称为切换
## 监控
### 监控
CPU内存磁盘网络等系统负载信息进行监控当某个信息达到一定阈值时通知运维人员从而在系统发生故障之前及时发现问题
## 服务降级
### 服务降级
服务降级是系统为了应对大量的请求主动关闭部分功能从而保证核心功能可用
# 安全性
## 安全性
要求系统在应对各种攻击手段时能够有可靠的应对措施
# 参考资料
## 参考资料
- 大型网站技术架构核心原理与案例分析
<div align="center"><img width="320px" src="https://cs-notes-1256109796.cos.ap-guangzhou.myqcloud.com/githubio/公众号二维码-2.png"></img></div>