数据库唯一索引
状态判断
布隆过滤器
Redis
字层层削流。从目标上来说,就是确保到达数据
高并发幂等
首先,一个请求过来的时候,我们会利用布隆过滤器来判断它有没有被处理过。如果布隆过滤器说没有处理过,那么就确实没有被处理过,可以直接处理。如果布隆过滤器说处理过(可能是假阳性),那么就要执行下一步。 第二步就是利用 Redis 存储近期处理过的 key。如果 Redis 里面有这个 key,说明它的确被处理过了,直接返回,否则进入第三步。这一步的关键就是 key 的过期时间应该是多长。 第三步则是利用唯一索引,如果唯一索引冲突了,那么就代表已经处理过了。这个唯一索引一般就是业务的唯一索引,并不需要额外创建一个索引。
业务成功先修改mysql,来兜底,其他的随意
Rediskey的过期时间需要业务语意时间保证
redis简化情况也可以去掉,布隆过滤器也可以用redisson实现——分布式(布隆过滤器还是存储运行后的结果,存储到本地guava有实现)

其他的本地就要一致性哈希负载均衡了 本地过滤器
