zoukankan      html  css  js  c++  java
  • java架构师学习路线-分布式架构为什么需要保证幂等性

    图灵学院  java架构师学习路线-分布式架构为什么需要保证幂等性

    编程中的“幂等性”是指任意执行次数的效果,与一次执行的效果相同。具有幂等设计的接口可确保无论该接口被调用一次还是多次,都可以获得相同的结果。在某些情况下(例如用户下订单的情况),接口的幂等设计是必需的。

    java架构师学习路线

        我们知道,服务之间的调用存在三种状态:成功、失败、超时。超时是一种未知的状态:被调服务是否执行成功,这个状态是未知的。上游服务调用下游服务超时时可能会进行重试。对于用户下单的场景的超时重试我们考虑以下问题:

        是否会导致最终创建了两条一样的订单?

        是否会扣除两遍库存?

        是否会重复扣除用户的钱?

        如果每个订单都带有唯一的序列号,则订单放置界面可以使用该序列号来记录订单操作的状态。当订单状态成功时,将阻止重复执行以避免上述问题。这样,下游方被转移以确保幂等。

        另外,订单服务还可以提供用于查询订单状态的界面。上游在下订单之前执行查询,并确认尚未成功支付订单,然后重复执行订单操作。

        一般而言,服务本身需要自己保证幂等性,幂等性不应移交给上游呼叫者。

     如果你想了解更多关于java架构师的专业知识,可以一起交流:11604这里面都是同行05674,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

  • 相关阅读:
    ftell
    diff
    继承
    类的组合
    拷贝构造函数
    内存管理
    Hibernate学习-Hibernate查询语言HQL
    JAVA解析JSON数据
    Android异步加载
    Android数据存储-文件操作
  • 原文地址:https://www.cnblogs.com/tulingxueyuan/p/14094444.html
Copyright © 2011-2022 走看看