Asynchronous events
Getting data via service endpoints synchronously may become overwhelming for services that maintain a widely used database, like the users database. Therefore, it is recommended for services to maintain a read-only cache for such databases and keep it up to date asynchronously using events, as shown in the following diagram:
For example, instead of looking up the address or order count using service endpoints synchronously, services such as User Service and Orders Service can publish the events of interest on a message queue in order of occurrence. The User Service can then receive the orders event from the Orders Service via the Message Broker and update its database with the orders count or cache it. Similarly, the Orders Service can receive any address update event from the User Service, keep the address up to date for the user within its cache, and refer to it as and when required to generate orders for users.