关于幂等性的解决方案

所谓幂等性,简单得理解能够认为屡次相同参数的调用返回一样的结果redis

  1. 查询类

纯自然支持幂等性,屡次调用均返回一样的结果。缓存

  1. 更新类 幂等性的控制主要是在服务提供方进行控制,固然服务调用方也能够进行一些简单的控制,好比 failback(失败当即返回),页面防止重复调用等。

在服务调用方的完整解决方案能够这么来:索引

调用方每次调用均需传一个惟一的调用流水tradeid。服务提供方每次拿到该流水都去redis查询是否有该流水,如有该流水证实已调用过,直接返回缓存结果。若不存在则将该tradeid存入redis,并设置有效期。    调用方每次调用均需传一个惟一的调用流水tradeid。服务提供方每次拿到该流水都去redis查询是否有该流水,如有该流水证实已调用过,直接返回缓存结果。若不存在则将该tradeid存入redis,并设置有效期。查询

    其次,有些调用流水是须要长时间保持一致,这时候能够将该tradeid。做为惟一性索引入库,若存在了,那么确定插不进去。这是第二重保证。filter

关于结果缓存:能够分红多级缓存,JVM,REDIS,而后直接查库。di

幂等性的实现:能够考虑在中间层操做实现,好比Dubbo的filter。。先获取具体的调用流水,去查询。若存在则查询缓存或者直接查库返回结果时间

相关文章
相关标签/搜索