1.CAP定理

指在一个系统中,一致性、可用性、分区容错性3要素最多可同时实现2个

一致性:

在分布式系统中的所有数据备份,在同一时刻是否有相同的值

可用性:

在集群中一部分节点故障后,集群整体是否能响应客户端的读写请求

分区容错性:

分区相当于对通信的时限要求,系统如果不能在时限内达成数据一致性,说明发生了分区的情况

2.扩容

垂直扩展

增加机器本身性能,提升硬件性能

水平扩展

集群,增加机器

3.网络抖动

接口设计幂等性

发送一次请求和n次请求的结果应该是一致的

4.访问限流

客户端访问量 > 服务端承载范围

5.做访问限流

  1. 页面防止点击
  2. 防火墙过滤恶意IP
  3. nginx防止IP或代理到其他地址
  4. 网关进行限流算法
  5. 服务器controller中访问限流

6.漏桶算法

  1. 无法处理突发请求
  2. 请求一点点处理(桶满后,溢出,拒绝访问)
  3. 有的接口需要等待,有的执行很快

7.令牌桶算法

  1. 令牌加满,暂停
  2. 低峰积攒令牌

8.幂等性

  1. 查询、删除天然幂等性
  2. 唯一索引、组合索引(例如账号)
  3. token令牌,防止重复提交
  4. 悲观锁
  5. 乐观锁(更新订单式写where条件判断未支付时更改为支付)

9.微服务

单体服务架构

  1. 缺点
    1. 1个服务死,整个项目死
    2. 代码臃肿,耦合性大
    3. 机器要求高
  2. 优点

    1. 运维方便
    2. 架构简单,易于理解

      微服务

  3. 优点

    1. 高可用
    2. 硬件要求低
    3. 业务简单
    4. 快速响应
    5. 易构
    6. 天然的分布式
  4. 缺点
    1. 多台服务器
    2. 业务架构复杂
    3. 拆分力度难以界定
    4. 部署困难