Now we building a realtime analytics system and it should be highly distributed. We plan to use distributed locks and counters to ensure data consistency, and we need a some kind of distributed map to know which client is connected to which server.
I have no prior experience in distributed systems before, but I think we have two options:

1. Java+Hazelcast
2. Golang+ETCD

But what is the pros/cons of each other in topic context?