工作6年的面试视频
文章目录
面试视频
eureka ,分布式,微服务
分布式事务怎么解决
base 理论: 基本可用,软状态,最终一致性
是什么: 多个服务协同完成这个事务
怎么做: tcc (try confirm cancel) 强一致性,代码耦合比较严重, mq 方案 (最终一致性)
每个服务 try 都能成功,就走下一步,
如果有失败,就 进行回滚
熔断
微服务 直接 有调用链, 如果下游服务不可用,上游服务请求 就会卡死,响应时间太久了,所以就有个熔断器 用来跳闸
缓存 与数据库双写一致性
- 最好就是上锁
- 防止多个线程 访问缓存 导致 数据的不一致
- 先 更新数据库,更新完成后删除缓存
- 下次访问 才读入缓存
缓存雪崩和缓存穿透怎么解决
雪崩的话用 随机 过期时间,防止 key 一起过期
缓存穿透:
- 布隆过滤器
- 存 null
mq重复发消息 【幂等性怎么解决】
- 前端生成一个唯一的访问 token
- 消息确认机制 【手动确认 防止重传 导致的bug]】
- 消费端有个确认机制 可以防止消息没有被确认 重复消费
es选举机制
es 只能有一个 master 节点, 如果多个master 节点 就会有脑裂
避免脑裂的话,就要多数原则 要大多数 节点同意 该节点成为 master节点
接口幂等性
- 数据库建立唯一索引 【下次再插入这个 数据就抛异常】
- 生成一个唯一的token ,token 缓存到 redis,请求 先提交 token,成功就删除 token
设计模式
- 工厂
- 代理
- 静态和动态
- 切面编程啥的
- 模板方法模式
文章作者 LYR
上次更新 2021-08-17