oppo后端16连问(二)

chujichenxuyuan
发布于 2022-5-16 18:03
浏览
0收藏

4. 你们的接口幂等是如何保证的?


如果你调用下游接口超时了,是不是考虑重试?如果重试,下游接口就需要支持幂等啦。

 

实现幂等一般有这8种方案:

 

 •  select+insert+主键/唯一索引冲突
 •  直接insert + 主键/唯一索引冲突
 •  状态机幂等
 •  抽取防重表
 •  token令牌
 •  悲观锁(如select for update,很少用)
 •  乐观锁
 •  分布式锁


大家平时是用哪个方案解决幂等的,最后结合工作实际讲讲哈。可以看下我之前这篇文章: 聊聊幂等设计

 

5. 你们的mySQL架构是怎样的?


大家可以结合自己公司的MySQL架构聊聊。如果不是很清楚的话,可以结合我之前写的来看看哈:面试必备:聊聊MySQL的主从

 

数据的库高可用方案

 

 •  双机主备
 •  一主一从
 •  一主多从
 •  MariaDB同步多主机
 •  数据库中间件


5.1 双机主备
 oppo后端16连问(二)-鸿蒙开发者社区 •  优点:一个机器故障了可以自动切换,操作比较简单。
 •  缺点:只有一个库在工作,读写压力大,未能实现读写分离,并发也有一定限制


5.2 一主一从
oppo后端16连问(二)-鸿蒙开发者社区 •  优点:从库支持读,分担了主库的压力,提升了并发度。一个机器故障了可以自动切换,操作比较简单。
 •  缺点:一台从库,并发支持还是不够,并且一共两台机器,还是存在同时故障的机率,不够高可用。


5.3 一主多从
oppo后端16连问(二)-鸿蒙开发者社区 •  优点:多个从库支持读,分担了主库的压力,明显提升了读的并发度。
 •  缺点:只有一台主机写,因此写的并发度不高


5.4 MariaDB同步多主机集群
oppo后端16连问(二)-鸿蒙开发者社区 •  有代理层实现负载均衡,多个数据库可以同时进行读写操作;各个数据库之间可以通过Galera Replication方法进行数据同步,每个库理论上数据是完全一致的。
 •  优点:读写的并发度都明显提升,可以任意节点读写,可以自动剔除故障节点,具有较高的可靠性。
 •  缺点:数据量不支持特别大。要避免大事务卡死,如果集群节点一个变慢,其他节点也会跟着变慢。


5.5 数据库中间件
oppo后端16连问(二)-鸿蒙开发者社区 •  mycat分片存储,每个分片配置一主多从的集群。
 •  优点:解决高并发高数据量的高可用方案
 •  缺点:维护成本比较大。
大家有兴趣可以看看我这篇文章哈:面试必备:聊聊MySQL的主从

 

6. 常见的索引结构有?哈希表结构属于哪种场景?


哈希表、有序数组和搜索树。

 

 •  哈希表这种结构适用于只有等值查询的场景
 •  有序数组适合范围查询,用二分法快速得到,时间复杂度为 O(log(N))。查询还好,如果是插入,就得挪动后面所有的记录,成本太高。因此它一般只适用静态存储引擎,比如保存2018年某个城市的所有人口信息。
 •  B+树适合范围查询,我们一般建的索引结构都是B+树。


7.给你ab,ac,abc字段,你是如何加索引的?


这主要考察联合索引的最左前缀原则知识点。

 

 •  这个最左前缀可以是联合索引的最左N个字段。比如组合索引(a,b,c)可以相当于建了(a),(a,b),(a,b,c)三个索引,大大提高了索引复用能力。
 •  最左前缀也可以是字符串索引的最左M个字符。


因此给你ab,ac,abc字段,你可以直接加abc联合索引和ac联合索引即可。

标签
已于2022-5-16 18:03:48修改
收藏
回复
举报
回复
    相关推荐