随笔分类 -  分布式及架构

缓存一致性的根本原因
摘要:缓存与数据库属于异构分布式事务,不具有原子性 事务mq也是,所以应用层只能增强可观测性,使其可控而不是100%可靠 阅读全文

posted @ 2025-12-26 00:14 silyvin 阅读(0) 评论(0) 推荐(0)

转账tcc
摘要:核心关注点: 1 二阶段消息丢了 2 二阶段提交部分自己崩了 问:账户系统里,为什么要tcc 二阶段锁定资源,tcc预留资源 订单和资金,支付宝是mq最终一致性,具体怎么对账的? 悬挂和空会滚具体怎么做,try未执行cancel已触发的场景,弄张本地表记录状态,同时cover幂等 问:如果二阶段消息 阅读全文

posted @ 2025-12-25 01:09 silyvin 阅读(2) 评论(0) 推荐(0)

多线程插入也是随机io,那为啥不用uuid【yetdone】
摘要:首先,并发写入确实是随机io,但是uuid带来的页分裂更恶劣 而多线程并发写入有序id,操作系统有办法优化,比如磁盘调度算法-电梯算法 老实说ds说的有点牵强 阅读全文

posted @ 2025-10-08 22:22 silyvin 阅读(40) 评论(0) 推荐(0)

双活一致性【yetdone】
摘要:1 机房内高可用,但机房整体断网断电就完了 2 双活什么 2.1 存储层 canal+otter 2.2 应用层 2.2.1 静态路由(强一致) 如果用户突然挂vpn发起第二笔转账,就完了 2.2.2 动态负载(弱一致) 不能用 2.2.3 无状态网关(分片强一致,无脑裂) 根据具体业务hash路由 阅读全文

posted @ 2025-09-20 22:10 silyvin 阅读(0) 评论(0) 推荐(0)

【删除】撮合引擎二 无状态【yet】
摘要:https://mp.weixin.qq.com/s/kmuG5azJnqjKRYlkiVHWqQ?poc_token=HA31umijtk8JqRdMNKY-tN-3a0ir5a2ktLoCjscv 正因为应用是有状态的,所以需要通过Disruptor提升单机的性能和吞吐量。 为什么撮合应用不设计 阅读全文

posted @ 2025-09-06 14:46 silyvin 阅读(8) 评论(0) 推荐(0)

使用分布式锁做幂等的一个坑
摘要:redis分布式锁实践 线程1 线程2 putifabsentexpire 成功 putifabsentexpire 成功,因为读从库 put(orderid, instanceid_threadid get thread id == current? 认为取得锁失败,对于 1)幂等场景,直接退出即 阅读全文

posted @ 2025-08-10 22:43 silyvin 阅读(17) 评论(0) 推荐(0)

缓存一致性坑【done】
摘要:1 写db-delete redis 保可用性,这个方案不行,必须加入双删去扰动并发 保一致性(也不行,必须加select数据库锁与隔壁update互斥,redis分布式锁不行) 线程1 线程2 查询 线程3 线程2 redis包裹在数据库锁 线程3 redis包裹在数据库锁 update db c 阅读全文

posted @ 2025-08-02 22:18 silyvin 阅读(18) 评论(0) 推荐(0)