薄荷事务处理实践 张中南

Razor

2019/08/28 发布于 技术 分类

rubyconf2019 

文字内容
1. 薄荷Rails事务处理实践 张中南 2019/08/24
2. About Me: 张中南 aka steamzhang 薄荷冰山团队技术负责人 RubyChina ID: sidekiq
3. 我们今天聊聊... 动账处理 秒杀活动 分布式事务
4. 动账
5. Transfer Basic
6. Transfer Basic kill -9 11092
7. 恰烂钱1.0 ...
8. What if... Transfer server instance In the meantime
9. What if... Transfer server instance In the meantime
10. Then...
11. Then... Same as
12. Then... Same as SELECT * FROM users WHERE id=1 FOR UPDATE
13. 当尝试解决问题时 通常会引入新的问题
14. Deadlock In the meantime
15. Solve deadlock using resource ordering Resource ordering
16. Conclusion 通过事务和锁可以有效防止状态不一致问题 事务嵌套很容易导致死锁 资源排序是一种解决死锁的思路
17. 秒杀防超卖
18. 秒杀防超卖
19. 方案对比 数据库锁-悲观锁 版本控制-乐观锁 库存缓存
20. 数据库锁
21. 数据库锁 全服GIL
22. 数据库锁
23. 乐观锁
24. 乐观锁 ABA问题
25. 乐观锁
26. 库存缓存
27. 库存缓存
28. Conclusion 悲观锁不适用于高并发情况 乐观锁不适用于高写入情况 缓存预减库存可以有效防止超卖
29. Conclusion 拓展思考😁 悲观锁不适用于高并发情况 Redis挂了怎么办 乐观锁不适用于高写入情况 Sentinel脑裂、多Master情况 缓存预减库存可以有效防止超卖 SSDB/PIKA可以做吗?
30. 分布式事务
31. 分布式事务
32. 分布式事务 解决思路 串行执行 2PC TCC
34. Conclusion 先思考能否串行执行或通过业务改造进行 在TCC中,冻结-解冻模型是不错的实践 拥抱Java + RocketMQ生态😀
35. 万分感谢
36. Q&A
37. 谢谢大家