架构知识
文章平均质量分 87
wen-pan
是程序猿一只呀
展开
-
常见分布式事务解决方案
一、分布式事务开源框架方案市面上有很多开源的分布式事务框架,下面列举几个!!!seata,seata基本实现了最常用的各个场景的分布式事务解决方案,主要分为以下四种模式XA模式参考:Seata XA 模式缺点:需要数据库支持XA协议,长事务,持久占用资源,效率较低(分支事务需要在第二阶段执行后才进行提交或回滚)优点:强一致性保证,不会有分布式事务的脏读、脏写发生saga模式参考:SEATA Saga 模式Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中原创 2022-02-17 12:06:19 · 1602 阅读 · 0 评论 -
缓存和数据库一致性方案
一、先更新缓存再更新数据库方案假设线程一和线程二都要更新缓存和数据库(线程一将数据更新为a,线程二将数据更新为b)线程一先到达,然后线程一去更新了Redis缓存将缓存数据更新为a,然后准备更新数据库,此时由于某些原因(比如网络原因、程序发生GC等)导致线程一卡顿一下此时线程二到达,然后线程二完成对Redis缓存的更新和对数据库的更新,此时缓存中数据为b,数据库中的数据也为b然后线程一继续运行,接着去更新数据库,将数据库中的数据更新为a线程一和线程二都运行完毕。此时数据库和缓存的状态为:缓存中原创 2021-10-29 15:26:16 · 401 阅读 · 2 评论 -
如何设计一个能抗高并发的秒杀场景
说明:秒杀场景中有许多需要考虑的问题,这里只是将如何设计一个能抗高并发的秒杀设计的主流程进行分析!!!一、秒杀的特点商品库存总量固定先到先得,瞬时并发极大商品数量和库存数量有限二、如何设计秒杀场景秒杀开始前先将秒杀的商品和对应的库存预热到Redis中(商品code : 对应的库存)秒杀开始,大量用户开始点击按钮进行秒杀NGINX对用户请求进行过滤,通过执行lua脚本去Redis中扣减对应商品的库存(预减库存)如果库存扣减成功则继续放行请求到网关如果扣减库存失败,则直接返回个前端原创 2021-10-29 11:26:32 · 603 阅读 · 0 评论