所谓幂等性,简单得理解能够认为屡次相同参数的调用返回一样的结果redis
纯自然支持幂等性,屡次调用均返回一样的结果。缓存
在服务调用方的完整解决方案能够这么来:索引
调用方每次调用均需传一个惟一的调用流水tradeid。服务提供方每次拿到该流水都去redis查询是否有该流水,如有该流水证实已调用过,直接返回缓存结果。若不存在则将该tradeid存入redis,并设置有效期。 调用方每次调用均需传一个惟一的调用流水tradeid。服务提供方每次拿到该流水都去redis查询是否有该流水,如有该流水证实已调用过,直接返回缓存结果。若不存在则将该tradeid存入redis,并设置有效期。查询
其次,有些调用流水是须要长时间保持一致,这时候能够将该tradeid。做为惟一性索引入库,若存在了,那么确定插不进去。这是第二重保证。filter
关于结果缓存:能够分红多级缓存,JVM,REDIS,而后直接查库。di
幂等性的实现:能够考虑在中间层操做实现,好比Dubbo的filter。。先获取具体的调用流水,去查询。若存在则查询缓存或者直接查库返回结果时间