面试题四 如何设计一个高并发的架构系统

一、系统拆分

使用dubbo、SpringCloud实现分布式,拆分系统,不同业务访问不同数据库

二、缓存

大量读请求直接从缓存里取

三、MQ

读请求解决好后,就要解决写请求,加入MQ进行削峰

四、分库分表

加入MQ可以针对平时数据量不大,但秒杀时数据量很大的场景,但如果平时数据量就很大,那MQ削峰了也没用。这时进行分库分表,将请求分摊到各个库

五、读写分离

要更新缓存中的数据,所以主库负责写,从库负责读

六、ELK

分布式系统上ELK

七、简述

阿里云ECS弹性伸缩,高峰特别是秒杀时,NGINX限流一个IP每秒1个,前端CDN静态化,还有秒杀前不要暴露真实秒杀地址,单机+cache,配置ECS感应流量,自动扩展到20-30台,单台扛几百用户单纯响应是没啥问题的(这里说的是单纯响应,就是说先确保不出现500或502这类错误),后端代码逻辑Redis防刷,需要同步调用的接口尽可能少(比如一般只走支付网关,拉起支付接口),redis+lua预热加减库存,如果需要限流redis队列排序限流等(比如队列里用户数控制最多50000),同步接口返回速度尽可能高(这里面需要JVM、各种SQL优化以及读写分离、分库分表),能走异步的尽量走异步,比如短信通知,购买成功加积分级别,抵用券等。事务尽可能的小,就是说都是小事务提交(不要把什么写日志,调接口也包在开启事务逻辑里面),还有乐观锁,悲观锁,间隙锁(特别是间隙锁,MySQL在RR隔离级别下产生的间隙锁要特别小心),快照读,当前读,mvcc这些一定要清楚认知和使用恰当,不然事务隔离级别下的锁竞争,平峰时快速普通SQL不光会跑到十几甚至几十秒,而且会造成MySQL线程数跑满,或者直接挂了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值