Suppose I have an application that accepts an arbitrary stream of objects. Some of those objects appear multiple times in this stream. The job of my application is to filter out those duplicate objects from the stream and pass a duplicate-free version of the stream to the next application. This is usually trivial, but for the sake of redundancy I want to create multiple instances of this duplicate-checker on multiple machines so that it can continue running when one machine dies for whatever reason. How would I make such a duplicate check if it is run in parallel? How can you synchronize this without constantly blocking all instances except for one? Is this even possible?
Note: I'm not looking for a particular implementation or a solution in some language, this is more a conceptual question.