面试视频

eureka ,分布式,微服务

视频,工作6年, eureka,nacos

分布式事务怎么解决

base 理论: 基本可用,软状态,最终一致性

是什么: 多个服务协同完成这个事务

怎么做: tcc (try confirm cancel) 强一致性,代码耦合比较严重, mq 方案 (最终一致性)

每个服务 try 都能成功,就走下一步,

如果有失败,就 进行回滚

熔断

微服务 直接 有调用链, 如果下游服务不可用,上游服务请求 就会卡死,响应时间太久了,所以就有个熔断器 用来跳闸

缓存 与数据库双写一致性

  1. 最好就是上锁
    1. 防止多个线程 访问缓存 导致 数据的不一致
  2. 先 更新数据库,更新完成后删除缓存
    1. 下次访问 才读入缓存

缓存雪崩和缓存穿透怎么解决

雪崩的话用 随机 过期时间,防止 key 一起过期

缓存穿透:

  1. 布隆过滤器
  2. 存 null

mq重复发消息 【幂等性怎么解决】

  1. 前端生成一个唯一的访问 token
  2. 消息确认机制 【手动确认 防止重传 导致的bug]】
    1. 消费端有个确认机制 可以防止消息没有被确认 重复消费

es选举机制

es 只能有一个 master 节点, 如果多个master 节点 就会有脑裂

避免脑裂的话,就要多数原则 要大多数 节点同意 该节点成为 master节点

接口幂等性

  1. 数据库建立唯一索引 【下次再插入这个 数据就抛异常】
  2. 生成一个唯一的token ,token 缓存到 redis,请求 先提交 token,成功就删除 token

设计模式

  1. 工厂
  2. 代理
    1. 静态和动态
    2. 切面编程啥的
  3. 模板方法模式