分摊算法
1. 什么是分摊分摊算法主要适用于需要将 总量(如金额、资源、费用、收益)按某种规则分配给多个部分的场景。 为了更好地理解“分摊”概念,可以通过一个常见的电商购物场景来说明。假设有一个满减优惠活动:满20元减10元。你凑单购买了两件商品, 最终实付20元,每个商品各自的实付金额计算过程如下 计算每个商品的支付占比 计算实付金额 商品 单价 数量 分摊比例(四舍五入,2位精度) 实...
1. 什么是分摊分摊算法主要适用于需要将 总量(如金额、资源、费用、收益)按某种规则分配给多个部分的场景。 为了更好地理解“分摊”概念,可以通过一个常见的电商购物场景来说明。假设有一个满减优惠活动:满20元减10元。你凑单购买了两件商品, 最终实付20元,每个商品各自的实付金额计算过程如下 计算每个商品的支付占比 计算实付金额 商品 单价 数量 分摊比例(四舍五入,2位精度) 实...
SafeInventory-本地事务下,如何安全操作库存 SafeInventory-分布式事务下,如何安全操作库存 在以上2篇文章中,已经详细说明了 本地事务下通过数据库乐观锁、数据库悲观锁、分布式锁 实现安全扣减库存 分布式事务下,通过预扣库存方案 实现安全扣减库存以上所有方案,其处理逻辑均依赖于数据库, 在高并发场景下会遇到 DB 层面带来的性能瓶颈。 面对数据库带来的性能瓶颈问题...
在SafeInventory-分布式事务下,如何安全操作库存,一文中已经详细说明在本地事务下如何安全操作库存。 本文将继续讨论在分布式事务下, 如何安全操作库存。 在购物场景下,库存扣减是一个典型的分布式事务,通常涉及三个系统:订单系统、库存系统和支付系统。其交互流程如下: 订单系统请求扣减库存:在用户下单时,订单系统首先向库存系统请求扣减库存,只有在确认有足够库存的情况下,订单才会创建成...
库存是许多业务场景中都会涉及的概念,比如购物场景中的商品库存,以及营销场景中的优惠券库存。不同的业务场景有各自的交互流程,后端设计也会随之不同。 购物场景:用户必须完成支付才能真正拥有商品。因此,库存的扣减需要与支付流程紧密结合,并与其他系统交互协调,确保在支付成功后才正式扣减库存。 营销场景:用户通常只需点击领取按钮即可获得优惠券,而不需要支付。这种情况下,库存的扣减操作可以通过一个简...
1. 什么是幂等在系统设计中,“幂等”是一种非常重要的概念。 幂等性(Idempotency)指的是一个操作无论执行多少次,其结果都应保持一致,和只执行一次的结果相同。 这在分布式系统、网络请求和服务接口中尤为重要,因为它可以确保系统的数据一致性。 2. 为什么会出现重复请求重复请求在系统设计中是一个常见的问题,尤其是在高并发和分布式环境中。 出现重复请求的原因有多种,包括用户操作、业务逻辑...
本文参考《图解密码技术》, 从HTTPs 为什么比HTTP 安全的角度梳理多个和密码相关的知识点, 希望对你有帮助。 以下内容介绍,均基于Alice 向Bob 发送邮件为基础进行介绍 1. 前置知识1.1 计算机网络在了解密码具体知识前,需要先了解一下传输信息的计算机网络。主要有2点 计算机网络是分层的 网络传输依赖一系列中间设备 网络传输并不是简单的A点到B点的直接通信,而是依赖于一系列...
这2周,cursor 因为下面这条推特,又爆火了一波 cursor 是什么根据官网的介绍, cursor is a AI Code Editor。 它可以辅助你更好得进行代码开发,甚至根据自然语言完成开发。 用cursor 实现一个浏览器插件现在有cursor 2周免费体验时间,2周需要每月需要付费20美元。 作为一名后端工程师,我对前端的掌握程度就是能看懂一点点,但是几乎没有实际编...
理解了Spring事务实现原理, 现在来解决一个实际问题。 在实际业务开发中,我们经常会遇到在一个事务内执行多个业务操作保证原子性, 同时希望这段逻辑是并发安全的。 比如在商品售卖场景中,非常重要的一件事就是防止超卖,且要保证多个业务操作之间的原子性。以下示例代码,明显会出现超卖问题(查询是否有库存时有库存并不代码真正扣减库存时还有库存,假设扣减库存时SQL 中没有乐观锁) 12345678...
1. 数据库事务1.1 数据库事务实现原理Spring提供了灵活方便的事务管理功能,但这些功能都是基于底层数据库本身的事务处理机制工作的。要想深入了解Spring的事务管理和配置,有必要先学习数据库事务的基础知识。有需要可以阅读以下文章Intro to 事务Intro to InnoDB事务InnoDB事务-原子性的实现, undo logInnoDB事务-隔离性的实现, MVCC &a...
建议了解以下内容后再阅读本文 Spring IOC容器 和 Spring beanSpring IOC 容器启动过程拓展点Spring bean 实例化Java 动态代理Spring AOP 实践Spring AOP XML配置方式原理详解Spring AOP 注解方式原理详解 关于Spring 循环依赖, 在 Spring bean 实例化一文中讲解了使用三级缓存+暴露早期引用机制 解决...