开发者社区 问答 正文

在短信发送服务的频率控制示例中,为什么线上集群多节点环境下会出现发送频率控制不正确的问题?

在短信发送服务的频率控制示例中,为什么线上集群多节点环境下会出现发送频率控制不正确的问题?

展开
收起
萝卜丝丸子 2024-08-07 18:53:44 63 分享 版权
1 条回答
写回答
取消 提交回答
  • 在短信发送服务的频率控制示例中,由于rateLimitService.getMsgTimestamp(userId)和rateLimitService.putMsgTimestamp(userId, now)操作不是原子性的,当线上集群存在多个节点时,不同节点间无法共享内存中的时间戳状态。因此,即使一个节点刚为某个用户设置了发送时间戳,另一个节点也可能因为未感知到这个更新而允许该用户立即再次发送短信,导致发送频率控制不正确。

    2024-08-07 19:55:15
    赞同 3 展开评论
问答地址: