API Gateway solves client side fragility issues like security, monitoring, data caching, load balancing and versioning. 

Service discovery is the key component in microservice's distributed system picture.  It becomes especially critical as more services deployed, and service location change quite frequently due to scaling in a live system, as well as hosts failing and being replaced.

Message queue reduces the coupling when one microservice needs to interconnect another microservice directly, makes one microservice have less degree of direct knowledge that one possible.

Read more:
http://jasonwilder.com/blog/2014/02/04/service-discovery-in-the-cloud/
http://ryanjbaxter.com/2015/07/22/using-microservices-to-build-cloud-native-applications-part-2/