Event Driven Architecture (EDA) has become a popular choice for developing highly scalable distributed systems.
In EDA, different parts of the system communicate by sending and reacting to events, instead of making direct requests.
Key components include event producer/publisher, message broker, event consumer/subscriber, and the event itself.
Advantages of EDA include scalability, flexibility, real-time processing, resilience, and loose coupling, while disadvantages include eventual consistency, complex debugging, increased latency, event duplications, event ordering issues, and a learning curve.