clustering in distributed systems