ShawyerPeng 最近的时间轴更新
ShawyerPeng

ShawyerPeng

V2EX 第 304740 号会员,加入于 2018-03-30 14:05:12 +08:00
今日活跃度排名 2779
分布式锁是否能实现锁住一个 key 范围
  •  1   
    程序员  •  ShawyerPeng  •  2025 年 7 月 29 日  •  最后回复来自 liuhan907
    36
    如何有效投诉去哪儿网?
    全球工单系统  •  ShawyerPeng  •  2021 年 9 月 21 日  •  最后回复来自 ShawyerPeng
    3
    如何快速重写 equals 方法
    程序员  •  ShawyerPeng  •  2020 年 4 月 5 日  •  最后回复来自 tairan2006
    4
    佳能 M6II 和索尼 A6400 给点意见呗
    摄影  •  ShawyerPeng  •  2020 年 3 月 11 日  •  最后回复来自 zppass
    25
    有哪些途径消费掉 PayPal 账户的美金余额?
    PayPal  •  ShawyerPeng  •  2021 年 1 月 23 日  •  最后回复来自 woyaojizhu8
    73
    请教:从一句 sql 返回的 id 列表遍历查询另一 sql 语句
    数据库  •  ShawyerPeng  •  2020 年 1 月 14 日  •  最后回复来自 ccgoing10
    1
    ShawyerPeng 最近回复了
    c2hhd3llcnBlbmdAZ21haWwuY29t 已注册,感谢
    @leosj 大佬能不能分享一下你的提示词呀?我用 Antigravity 生成的代码竟然跑步起来,让他排查 bug 验证花了 15 分钟也没解决。我用 Codex 也不能很完美地复刻。
    你们这种抢注域名的 s 骗子 kling3.live 什么野鸡
    已支持
    2025 年 7 月 29 日
    回复了 ShawyerPeng 创建的主题 程序员 分布式锁是否能实现锁住一个 key 范围
    @z1829909 有道理,不过消息队列 by partition 串行化,可以不用这么重的有序消费功能实现吗?
    2025 年 7 月 29 日
    回复了 ShawyerPeng 创建的主题 程序员 分布式锁是否能实现锁住一个 key 范围
    @zdking08135 问题 1 ,我在楼上回复了~是业务方因为某些原因,举个例子把 1 点到 2 点之间的所有操作攒到一起最后都为完成状态时,才一起上报过来(还不是批量上报,而是拆分成明细行进行上报,消费方无法在一个请求中在内存中处理 N 个时间窗口的更新逻辑,当然了,MQ 可以攒一批消息进行批量消费)
    问题 2:业务的异常 case ,代码逻辑会做异常处理,本问题可以忽略不考虑
    问题 3 ,不同的作业类型不一样,可能 1 秒一个,也可能十几分钟才做完一个任务。
    2025 年 7 月 29 日
    回复了 ShawyerPeng 创建的主题 程序员 分布式锁是否能实现锁住一个 key 范围
    @fkdtz 有一种比较恶心的场景就是,业务的单据模型是有主单和明细维度,作业数据的上报时机是主单状态为已完成(即所有的明细都为已完成时,当然,每个明细可能有各自的操作人和完成时间),所以要等到最后再一起上报。
    业务方由于某些实现原因,无法一次请求批量上报,而是拆成每个明细进行上报。所以对本系统的消费者来说,有高并发更新的场景(一个主单可能有几百个明细)。
    我也想到了 Batch Consume 攒一批消息批量消费,确实一定程度上解决了这种情况下的并发问题。

    不过我在想有没有多种方式配合起来实现会更加完善。例如直接分布式锁/消息队列串行化。
    您说的串行,在 RocketMQ 里的实现,可以使用有序消息实现。
    对于 Producer 来说,自定义负载均衡策略,根据操作人 operator 字段做 partition key ,路由到固定的一个 Message Queue ;
    对于 Consumer 实例来说,通过 MessageListenerOrderly 顺序消费的实现(包括:拉取消息时消费实例对 MessageQueue 加锁、消费消息时线程池中的线程对 MessageQueue 也加锁、对 ProccessQueue 也加锁保证 rebalance 了也要等到提交 offset 才能让新的消费者消费)。
    但是有序消费消费失败会原地重试阻塞其他消息消费的特性,和我们的场景是有冲突了。
    我们的目标只是为了尽量避免并发冲突,而不需要如此严格的有序性。串行化消费有更好的办法吗?
    2025 年 7 月 28 日
    回复了 ShawyerPeng 创建的主题 程序员 分布式锁是否能实现锁住一个 key 范围
    @emmmbu select for update 在高并发场景下性能很差吧
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:41 · PVG 02:41 · LAX 10:41 · JFK 13:41
    ♥ Do have faith in what you're doing.