- 消息队列ABA分布式锁问题
- 分布式锁和xxl-job有关系吗?
- 高薪训练营学习顺序
- 在大作业中,有提到商家修改的商品数据,不一定要让用户实时感知到,但如果商家修改的是一些敏感数据(如商品价格),这个感觉应该是需要让用户实时获取的,那么通过缓存让用户延时获取可能会产生问题,需要怎么去解决呢?
- 大作业中,商品查询类的接口数据前后端交互,使用明文还是密文交互,需不需要对一些敏感词进行处理?
- 历史订单查询,冷热数据分离是如何实现的?
- 最新实时热点商品数据,一般商品访问次数是怎么统计出来的?如果普通商品并发量达到秒杀的程度,秒杀子系统和库存子系统之间怎么联系,是mq吗?
- 面试被问到Dubbo框架一般要配置哪些东西,不知道怎么回答?
- 在不同的场景下synchronized和reentrantLock如何选择?
消息队列ABA分布式锁问题
新增数据的版本号,解决ABA问题
基于binlog的这个场景是可以的哈。但是有一种场景是没有办法的哈
按我们上周说的binlog方案里,一次是变更一行记录。 比如版本9这条binlog,如果这里面变更了A、B这两个字段
然后在版本10里,我们变更了C这个字段。 如果我们消费了10这个版本的数据,然后9这条数据来了
如果我们把9丢弃了,会发生什么问题呢?
会造成数据不一致的问题
这个大家下来复盘、思考下, 数据同步以及异步通知的意义和作用
分布式锁和xxl-job有关系吗?
没关系,我是觉得每一份分片都是一把锁,然后所有worker抢占锁
高薪训练营学习顺序
- spring 源码是必须的
- Webflux 不着急
- mongo 和 neo4j 可以先不着急
- 分布式文件也可以先放放
- redis 排第一,其他的缓存放后面
- lucene 和 solar 可以放一放
- es 可以放后面
在大作业中,有提到商家修改的商品数据,不一定要让用户实时感知到,但如果商家修改的是一些敏感数据(如商品价格),这个感觉应该是需要让用户实时获取的,那么通过缓存让用户延时获取可能会产生问题,需要怎么去解决呢?
我有个类似的问题,秒杀的时候改库存咋办
秒杀的时候,你再改库存,不是难为人么
秒杀茅台的活动,都是提前N多天设计好,经过层层审批来的
秒杀库存一般都是提前设置好的吧,不会让你说改就改的,改少这个 只能说 尽量,这个是绝对不准的
这个价格,有几种模式,类似促销这种,实时生效了肯定有延迟。还一种模式,是这样玩的。比如 你在0点生效的促销,其实在晚上11点的时候,数据已经同步到缓存里了,只是会有生效时间,表示是晚上0点进行生效。在计算价格和促销的时候,会比较当前时间,如果到0点了,那么促销就会立马生效了,不存在延迟,因为他是提前同步到缓存里。但是对于,配置了价格,立马就需要生效了,在binlog的基础之上,可以启动一个异步线程,主动刷新一下缓存。
大作业中,商品查询类的接口数据前后端交互,使用明文还是密文交互,需不需要对一些敏感词进行处理?
使用 https,这个加密统一在nigix层开启就好了,咋们后端的微服务这些都不用关系了
历史订单查询,冷热数据分离是如何实现的?
订单列表走的是搜索,按时间进行排序的
订单详情在redis中。
最新实时热点商品数据,一般商品访问次数是怎么统计出来的?如果普通商品并发量达到秒杀的程度,秒杀子系统和库存子系统之间怎么联系,是mq吗?
扣减库存不用mq
面试被问到Dubbo框架一般要配置哪些东西,不知道怎么回答?
注册中心,超时时间,重试次数,服务调用算法
限流、鉴权、监控、序列化协议
还有就是 RPC框架基于的NIO框架里的 比如epoll监听的线程池、执行业务逻辑的业务线程池数量了这些
在不同的场景下synchronized和reentrantLock如何选择?
这两种锁都能实现线程同步,但是不知道在什么场景下如何选择,
- Synchronized是关键字,内置语言实现,Lock是接口。
- Synchronized在线程发生异常时会自动释放锁,因此不会发生异常死锁。Lock异常时不会自动释放锁,所以需要在finally中实现释放锁。
- Lock是可以中断锁,Synchronized是非中断锁,必须等待线程执行完成释放锁。
- Lock可以使用读锁提高多线程读效率。
- 锁是加在对象头上的
要关注 AQS