王者段位java模式

参考视频

hystrix 降级 限流

配置 中心 阿波罗,config 等

微服务网关 zuul

rbac模型

用户和角色是多对多的 一个 角色 多个用户,一个用户 多个 角色

权限 和 角色关系,一个权限 多个 角色,一个 角色可以多个权限

常见分布式解决方案

  1. tcc
  2. 最大努力尝试
  3. 最终一致性

rabbitMQ 重复消息

rabbitMQ重复消息参考博客

redis 和 mysql 双写一致性的问题

先更新 数据库 再删除缓存

【可能出现的问题,更新完成后, 缓存 还没有删除,可能导致

短暂的数据不一致问题】

你直接回答: 没有十全十美的解决方案

redis 分布式锁

  1. setnx 的问题:
    • 还没有操作完, 这个锁已经过期了
      • 解决方案: watchdog 看门狗机制

mybatis 二级缓存, hashMap redis 缓存的区别

redis 做分布式缓存, 允许别的服务 同时去使用

数据库的优化

  • 分库分表
  • 集群
  • explain 解释 优化
    • 覆盖索引
    • 回表

分表策略

  1. 设置步长
  2. 按照时间
    1. 今年的放一张表
    2. 这个月的放一张表
  3. hash算法
    1. 算出 在哪张表

union 的问题

  1. union 会导致临时表产生
  2. union和 union all 区别
    1. union 会去重 【去重的话 会导致效率低】
    2. union all 不去重

索引

直接回答 b + 树,

b+ 树 和 二叉树 的区别

b+ 树 有多个子节点, 这样压低了 层数 ,如果是 二叉树的话,数据量比较多

层数就比较深, b+ 数压低层数,查询效率就会比较高

myisam 和 innodb 索引上面的区别

my 分为2部分 索引 和 数据文件 是 不一样的 ,数据分离,

查询的话 是先查索引再查数据,会有个回表操作

这里 我直接 说 myisam 是非聚集索引 查询会回表

innodb 如果是 主键索引的话,直接 就是 可以 一次查询出来、

因为 索引和数据是存 一起的,叫做聚集索引

那 innodb 普通索引是非聚集索引, 索引存的是 主键,查询 会有个回表操作。也就是查询2次回表效率低

innodb 可以支持事务, myisam 不支持事务,只能锁表,更新操作 锁表,导致效率太低

mysql 默认使用 innodb , innodb 和 myisam 区别是 innodb 行锁,myisam 表锁

innodb 锁表怎么解决
1. 锁表的话,可能是 因为 范围更新,导致 锁住一个比较大的区间【 这样 近似看成是锁表了】
2. 数据库备份的时候,好像会锁表