Similar Items: Distributed systems:principles and paradigms