Kafka

 As we develop applications, there are scenarios where data from one application or system needs to be shared with another. There are multiple ways to achieve this data sharing and enable communication between systems.

One common approach is to expose the data as a service by opening an interface. Imagine a shop with a window; if someone or another system wants something available in that shop, they can obtain it through that window.


If there are only two systems involved, it's a simple two-way interaction. However, when there are three or more systems that need to communicate with each other, the complexity increases. The number of connections grows, and the scalability and latency of the entire system become more challenging (see Image 1). This is an example of tightly coupled systems.


So, what's the solution? The answer is to introduce a broker that can listen to different systems and then distribute that information to other systems (Image 2). This "decouples" the various systems or services and ensures that the data is "persistent," meaning any system can access the data at any time based on their requirements.


popular broker used for this purpose is Apache Kafka. See this interesting visualisation on Kafka in a story format:http://www.gentlydownthe.stream









Comments

Popular posts from this blog

Logical and Physical Architecture

Data Models

Deep Learning