Design Levels
Consistency Models
Scalability
- vertical scalability
- horizential scalability
降级(Downgrade)
- 失败次数降级:主要是一些不稳定的 API,当失败调用次数达到一定阀值自动降级,同样要使用异步机制探测回复情况
- 超时降级(Timeout Downgrade):主要配置好超时时间和超时重试次数和机制,并使用异步机制探测回复情况
- 限流降级(Rate Limits Downgrade):秒杀或者抢购一些限购商品时,此时可能会因为访问量太大而导致系统崩溃,此时会使用限流来进行限制访问量,当达到限流阀值,后续请求会被降级;降级后的处理方案可以是:排队页面(将用户导流到排队页面等一会重试)、无货(直接告知用户没货了)、错误页(如活动太火爆了,稍后重试)。
- 故障降级:比如要调用的远程服务挂掉了(网络故障、DNS故障、http服务返回错误的状态码、rpc服务抛出异常),则可以直接降级。降级后的处理方案有:默认值(比如库存服务挂了,返回默认现货)、兜底数据(比如广告挂了,返回提前准备好的一些静态页面)、缓存(之前暂存的一些缓存数据)
熔断(Circuit Breaker)也可被视为一种特殊的降级
微服务拆分
负载均衡
- DNS 负载均衡
- 反向代理负载均衡
- IP负载均衡
- 直接路由
静态资源
动态静态资源分离,静态资源使用 CDN 加速。
消息队列
镜像集群模式
削峰
消息队列具有很好的削峰作用的功能——即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。
Middleware
Cache
- 缓存与数据库的一致性问题
- 缓存雪崩
- 缓存穿透
- 缓存击穿
- Hot keys
数据库
- SQL vs NoSQL
- 数据库的分库分表
- 数据库读写分离
- 主从复制
- Read replicas
- CQS
- 连接池
Reference
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper