6年经验,电商平台,分布式事务,分布式¶
(本面经实战的内容来自我的53_✅27届,数藏项目,交易链路开发,秒杀,该候选人是拿我的项目做了包装,里面涉及的所有问题项目课中都有详细讲解,可以在项目课中和我们一起学)¶
面试者背景¶
:::warning 19年毕业,Java开发,国企,做电商平台
电商平台做了多久?2年,系统多大体量,日活5-6万。你负责了哪些业务?订单、库存、交易、
介绍下这个系统的架构?分布式架构,springcloud Alibaba,nacos、dubbo、sentinel
分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗?
交易模块和订单模块的区别是啥?订单-订单生命周期管理,交易-聚合模块。
一次下单流程都需要哪些模块的配合?交易、库存、订单。
商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。
冻结库存是干嘛的?TCC的try做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥?
TRY:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。
Cancel:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、
先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过?
TCC过程中,还没来得及confirm服务挂了怎么办?
自己实现的TCC吗,为啥不用seata中的?
TCC和XA相比区别,优缺点?效率。为啥TCC是最终一致性?中间状态、
除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。
项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库?
分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id?
代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutool的workerid不能超过32,如果超过了32台机器怎么办?
分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的?
ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat,你在做技术选型的时候怎么考虑的
订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表?
分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?
项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。
如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?
Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、
:::
题目解析¶
:::color4 介绍下这个系统的架构?分布式架构,springcloud Alibaba,nacos、dubbo、sentinel
分了哪些微服务?支付、订单、交易、用户,营销有吗?么有营销???商品模块有吗?
交易模块和订单模块的区别是啥?订单-订单生命周期管理,交易-聚合模块。
一次下单流程都需要哪些模块的配合?交易、库存、订单。
:::
:::color4 商品上的库存是怎么设计的?可售库存数、冻结库存、库存总量。
冻结库存是干嘛的?TCC的try做冻结。订单、库存等模块在TCC的不同步骤中分别做了啥?
TRY:库存做冻结、订单创建(用户看不到),Confirm:库存冻结转化成扣减,订单确认。
Cancel:库存解冻、订单废弃。Confirm之后的cancel呢?事务表、
先操作库存还是订单?如何解决的TCC的空回滚和悬挂问题?怎么知道有空回滚过?
TCC过程中,还没来得及confirm服务挂了怎么办?
自己实现的TCC吗,为啥不用seata中的?
TCC和XA相比区别,优缺点?效率。为啥TCC是最终一致性?中间状态、
除了TCC还用过其他的分布式事务方案吗?事务消息、RocketMQ,为啥不用本地消息表。
:::
:::color4 项目中做了分库分表,订单表多大数据量?为啥不用分布式数据库?
分库分表后主键ID是怎么生成的?介绍下雪花算法。雪花算法什么时候会重复?时钟回拨、如果没有时钟回拨还可能重复么?如何解决时钟回拨的问题?抛异常、等待?切换机器码、提前准备一批id?
代码中雪花算法是用框架做的吗?hutool,机器码是怎么设置的?redis自增。Hutool的workerid不能超过32,如果超过了32台机器怎么办?
分库分表后,如何做扫表?没有分表字段,怎么查询?shardingjdbc如果没有分表键,怎么查的?
ShardingJdbc是你选的吗。知道其他的框架么?为啥不用mycat,你在做技术选型的时候怎么考虑的
订单号的生成逻辑是怎么样的?基因法,你怎么知道订单能分到哪张表?
分表算法怎么实现的?uid hash 取余,为啥要先hash再取余?
:::
:::color4 项目中解决过哪些线上问题?CPU高问题,arthas、获取数据库链接?连接失效?keep-alive,防火墙。
:::
:::color4 如果让你设计一个点赞系统,你会考虑哪些问题,难点可能是什么。你的方案是怎样的?并发、多少并发算高?如果是直播间点赞会有其他方案吗?
:::
:::color4 Free看到机器上内存还有很多,但是有频繁的fullgc,可能的原因是什么?JVM分配的内存少、
:::
113_✅假设还有很多内存,有什么情况还会频繁fullgc?