Вероятностная доменная служба идемпотентности с HyperLogLog
Я оцениваю подход к идемпотентности доменного сервиса, используя HyperLogLog [HLL].
Целью этого подхода будет обеспечение общего способа обеспечения идемпотентности без хранения большого количества бесполезной информации. Единственное требование - допуск для случайного дублирования (отправьте 2 электронных письма вместо одного).
В моем сценарии каждый запрос на обслуживание является объектом сообщения с функцией toHashCode. Алгоритм выглядит так:
- По получении запроса доменная служба вычисляет кардинальность HLL [S1] и сохраняет его как C1.
- Хэшзапроса [H] добавляется к копии HLL [S2], и количество элементов сохраняется как C2.
- Если C1 == C2, то запрос дублируется, и S2 следует отбросить.
- В противном случае запрос будет обработан и хеш [H] будет добавлен в HLL [S1].
Кто-нибудь сталкивался с подобным решением? (например, фильтр Блума)
Каковы будут недостатки этого вида решения?