其他
【049期】面试官:什么是幂等?幂等性接口应该如何设计?
>>号外:关注“Java精选”公众号,回复“面试资料”,免费领取资料!“Java精选面试题”小程序,3000+ 道面试题在线刷,最新、最全 Java 面试题!
幂等性设计
为什么接口需要幂等呢?
创建订单时,需要减库存,如果减库存接口超时了,调用方重新调用一次(无论是否成功的执行了减库存代码),应该要保证不会多减一次库存。
接口提供方需要提供相应的查询接口。调用方在超时后去查询一下是否成功。是否多扣一次库存掌握在调用方手里。如果接口是提供给第三方使用的,就会存在一定的风险。 接口支持幂等。这样幂等的保证完全掌握在提供方自己手里,完全不用担心。
全局ID
1.可以创建一个分配中心,由中心统一分配。
2.集成在业务服务集群。
递增,起码保证每台机器上的ID递增。(保证数据库性能) 明确的规则,ID的各个位都有具体的定义。(方便追溯)
UUID
Snowflake
1bit:固定为0,二进制中最高位为符号位,0为整数,1位负数。所以固定为0表示生成的ID都为正数 41bit:作为毫秒数,大约能用69年。 10bit:作为机器编号(5bit是数据中心ID,5bit为机器ID)。支持1204个实例。 12bit:序列号,一毫秒最多生成2^12=4096个。
业务逻辑
HTTP的幂等性
小结
作者:pikaxiao
blog.csdn.net/qq_36011946/article/details/104200262
【036期】面试官问:公司项目中 Java 多线程一般适用于什么场景?
【037期】面试官:Spring Boot 项目中如何处理重复请求和并发请求问题?
【039期】头条面试:说一说 LRU 原理和 Redis 如何实现?
【040期】面试官问:说一说 Spring 中 @Autowired 和 new 对象有什么区别?
【041期】面试官:Java 线程池配置时常见的误区都有哪些?
【042期】面试再被问到 Spring 容器 IOC 初始化过程,就这样“砸”他!
【043期】面试官问:如何使用 Redis 实现电商系统的库存扣减?
【044期】面试官:批处理框架 Spring Batch 的源码解读和批处理原则?
【045期】阿里面试题:说说关于 BeanFactory 理解和 FactoryBean 有什么区别?
【046期】面试官:MySQL InnoDB 中意向锁有什么作用?与其他锁的区别?