image

编辑人: 青衫烟雨

2024-10-23

0

640

分布式系统中的幂等性设计?

分析&回答

通过全局唯一ID

根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行。如果不存在则把全局ID存储到redis中,继续执行业务。如果存在则表示该方法已经执行,直接返回。适合单一逻辑处理。

状态机控制

有状态机流转的情况下,比如就会订单的创建和付款,订单的付款肯定是在之前,这时我们可以通过在设计状态字段时,使用int类型,并且通过值类型的大小来做幂等,比如订单的创建为0,付款成功为1。付款失败为-1。比如加一个订单操作中6,进入6之后其他非支付流程不能被唤起。

版本控制

同理状态机控制,在数据库中有个 Version 的,在version < x才能继续操作。

反思&扩展

相同思考:分布式系统中的接口调用如何保证顺序性?


喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

创作类型:
原创

本文链接:分布式系统中的幂等性设计?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章