XX公司笔试题

高可用会遇到的问题:

缓存雪崩:大量key设置相同过期时间,导致缓存在同一时刻同时失效,导致所有请求直接访问数据库,压力骤大,引起雪崩。

解决办法:给每个缓存时间加上一个随机时间,使得每个key的过期时间不同。

缓存穿透:访问一个不存在的key,导致缓存不起作用,直接访问数据库,流量大时,数据库挂掉。

解决方法:访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间

缓存击穿:访问一个存在的key,在key过期的那一刻,大量请求涌入,直接访问数据库,导致数据库挂掉

解决办法:在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。

熔断器:当微服务的运行质量低于某个临界值时,启动熔断机制,暂停微服务调用一段时间,以保障后端的微服务不会因为持续过负荷而宕机

A服务需要调用B服务,但是B服务会出现一些小问题,如数据库变慢,网络延迟等问题,假设不用处理,则会导致涌入的进程越来越多,可能会需要用户重试。如果用了熔断器,断路器被设计为在不等待TCP连接超时的情况下快速而优雅地处理错误。这种快速失败机制将保护下游服务

 

sql优化问题

考虑在where后面的字段加入索引

避免在where语句的字段中对null进行判断,否则会放弃索引查询,启动全局搜索

尽量避免使用*,用字段代替

尽量避免用or来连接where查询语句的字段,尽量使用union all连接两个sql语句

尽量避免使用in,因为会放弃索引查询,启动全局搜索,用between来代替

尽量避免在where语句后对字段进行函数操作

尽量使用varchar来代替char

 

数据库创建的三大范式

1.保证字段的原子性

2.满足第一条的情况下,要求表中的列,都依赖主键,而不能有任一一列和主键没有关系,即一个表只描述一件事情

3.曼度第二个的条件下,任意一列只与主键直接相关,不能间接相关

基本表的性质

   (1) 原子性。基本表中的字段是不可再分解的。
   (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。
   (3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。
   (4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。

 

注册的时序图

感谢几位老铁的分享:

https://www.jianshu.com/p/b57d0773ee96
http://www.jintiankansha.me/t/Pt5PeHTR3b
https://blog.csdn.net/jie_liang/article/details/77340905
https://blog.csdn.net/qq_33862644/article/details/79692652
https://www.cnblogs.com/rick168/p/4674731.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值