美文网首页
分布式弹力设计之幂等性

分布式弹力设计之幂等性

作者: Doit8 | 来源:发表于2018-04-03 17:18 被阅读0次

分布式服务之间不可避免要相互通信,通信的结果有三种:成功,失败,超时。而超时状态,有可能是接收方没有接受到数据,另一种情况是接受到数据处理完了,返回数据的过程超时。一般地我们都会进行业务补偿操作,常见的模式有两种

1 调用方查询,根据结果决定是否重传

2 调用方重传,而接受方查询是否已处理,若是没有处理则进行处理,否则返回结果。

第二种方式要求接口的幂等的。即一次调用产生的副作用与多次相同,如果用数学公式表示为f(x)=f(f(x))。

如何才能做到幂等呢?

1 首先需要一个唯一标识,如全局唯一id,如UUID,虽然可以保证全局唯一,但是生成的id占用空间太大,不利于索引,而且随机性太强无法看懂。比较推荐的是snowflake算法,全局id也可考虑加入业务字段。

2 处理的流程大致如下,调用方发送带id的数据,接受方先判断此数据是否已经处理,没有则处理有则返回之前的处理结果。

3 流程优化,上面的流程,每次都需要进行一次查询,出问题的概率其实并不大,所以呢,有点浪费资源,优化后流程:接受方接到请求后执行不存在则插入,存在则更新的动作,如insert into ...on duplicate on key update....

相关文章

  • 分布式弹力设计之幂等性

    分布式服务之间不可避免要相互通信,通信的结果有三种:成功,失败,超时。而超时状态,有可能是接收方没有接受到数据,另...

  • 弹力设计概述

    1. 概述 容错设计又叫弹力设计,分布式系统的各种容忍能力。容错能力(服务隔离,异步调用,请求幂等性)可伸缩性(有...

  • 弹力设计之幂等性设计

    所谓幂等性设计,就是说,一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是:f(x) = f(f...

  • 弹力设计总结

    容错设计又叫弹力设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务 隔离、异步调用、请求幂等性)、可...

  • 弹力设计简介

    弹力设计又叫容错设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务隔离、异步调用、请求幂等性)、可伸...

  • 接口的幂等性的N种考虑

    分布式服务接口的幂等性如何设计 什么是幂等性 一个分布式系统中的某个接口,要保证幂等性,该如何保证?这个事儿其实是...

  • JAVA开发知识点集合

    分布式 分布式系统学习资料(ing) 理解HTTP幂等性消费幂等 Dubbo Dubbo架构设计详解 跨域 关于跨...

  • 2020java面试题

    rabbitmq幂等性怎么解决,spring如果解决循环依赖,jvm优化,nginx负载设计,redis分布式锁(...

  • 幂等性

    理解 HTTP 幂等性(15')系统幂等以及常用实现方式(10')分布式系统互斥性与幂等性问题的分析与解决(30')

  • 接口设计的幂等性考虑

    分布式系统接口幂等性 1.幂等性定义 1.1 数学定义 在数学里,幂等有两种主要的定义:- 在某二元运算下,幂等元...

网友评论

      本文标题:分布式弹力设计之幂等性

      本文链接:https://www.haomeiwen.com/subject/swjchftx.html