Microservices communication can take place in a synchronous or asynchronous manner. When synchronous communication takes place, the caller will wait for a response before it sends the next message, and it operates as a REST protocol on top of HTTP. But when asynchronous communication occurs, the messages are sent without waiting for a response. This is great for distributed systems and generally needs a message broker to manage the messages.