Asynchronous communication in microservices
Inside a microservices architecture, every service does one job and does it well. To achieve any meaningful response for a business application, these services need to communicate with each other. All of this communication happens over the network.
Here, a service makes a request to another service and then waits for the response to come back. But there is a catch. What if the other service takes a long time to process the request, or the service is down? What happens then?
Most of the time, the request will time out. But if this service was a critical service, then the number of requests that might be arriving at it may be huge and can keep on getting queued up. If the service is slow, this will make the response times even worse, and will result in more and more requests experiencing timeouts.
But what if the requesting client could just make a request and then register a callback when a response is ready? This would greatly simplify the whole process...