我正在评估一种使用 HyperLogLog [ HLL ] 实现域服务幂等性的方法。
这种方法的目的是提供确保幂等性而不存储大量无用信息的通用方法。唯一的要求是容忍偶尔的重复(发送 2 封电子邮件而不是 1 封)。
在我的场景中,每个服务请求都是一个带有 toHashCode 函数的消息对象。该算法如下所示:
- 收到请求后,域服务计算 HLL[ S1 ] 基数并将其存储为C1。
- 请求hash[ H ] 被添加到HLL[ S2 ] 的副本中,并且基数存储为C2。
- 如果C1 == C2则请求被复制并且S2应该被丢弃。
- 否则请求将被处理,hash[ H ] 将被添加到 HLL[ S1 ]。
有没有人遇到过类似的解决方案?(如布隆过滤器)
这种解决方案的缺点是什么?