面试问题2

面试问题二

  1. 数据库中的锁有哪些?
    1.按照锁的种类划分,分为行锁和表锁,无锁。

  2. 锁算法有哪些?
    1.行锁算法,分为普通行锁,gap-lock间隙锁,和next-key锁

  3. 表锁算法,
    1.意向锁,
    当一个事务,已经有表锁了,去访问加行锁的资源,行锁就会升级为意向锁。
    2.自增锁
    就是插入一个自增数据时候,其他事务不能访问。

  4. 如何设计一个秒杀系统?
    1.拆分服务,把订单服务,支付服务,库存服务分别拆分出来,单独设立服务。
    2.使用redis缓存订单信息,提前生成orderid并且把相关订单信息存入redis,用户,支付服务获取直接从redis获取订单信息即可。
    3.同时订单服务需要用redis做计数器,超过订单容量直接返回秒杀完毕。
    4.同时使用队列,kafka或者rabbitmq写入队列处理支付请求。防止数据库压力过大,库存服务监听订单服务的消息,处理数据库减库存。

  5. 微服务之间调用失败如何处理?
    springcloud中使用Hystrix做服务降级处理,方法内加上Hystrixcommand做异常处理即可。

  6. redis缓存雪崩怎么处理?
    1.设计redis缓存的过期时间尽量均匀,不要同一时间都过期
    2.增加redis集群,防止redis机器挂机导致不可用。

  7. redis缓存击穿怎么处理?
    1.热点数据永不过期,或者做一个监控把快过期的使用锁更新过期时间,延迟返回。

  8. redis缓存穿透怎么处理?
    1.使用布隆过滤,把一些不存在的值做缓存直接返回。
    2.设置token校验,防止恶意攻击。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值