# Overview Gossip Protocol is... #flashcard - A general type of approach used to track the state of nodes in a system using peer-to-peer communication. In other words, rather than using some sort of additional centralized component to track the state of the nodes, each node communicates with their peers to know their current state. This approach allows for high [[Scalability]] and improved resilience since there is no single point of failure. - In general, gossip protocol is implemented by having each node periodically send out a message to a subset of other *random* nodes. Despite being a random subset of node, based on how networks tend to interact, this approach has a high probability of a message reaching all nodes. It is similar to how an epidemic can spread, which explains why gossip protocol is sometimes referred to as [[epidemic protocol]]. <!--ID: 1751507777151--> # Key Considerations ## Types of Gossip Protocols | Type | Description | Pros | Cons | Use Cases | | ------------------------------------- | ----------- | ---- | ---- | --------- | | [[Anti-Entropy Gossip Protocol]] | | | | | | [[Rumor-mongering Gossip Protocol]] | | | | | | [[Aggregation Model Gossip Protocol]] | | | | | ## Key Parameters - Cycle - Fanout # Pros - Highly scalable - Resilient # Cons - Eventually consistent # Use Cases - A gossip protocol is to track system state in [[Cassandra]] to know which data lives on which nodes # Related Topics - [Gossip Simulator](https://flopezluis.github.io/gossip-simulator/?ref=highscalability.com) - [Convergence Simulator - Serf by HashiCorp](https://www.serf.io/docs/internals/simulator.html?ref=highscalability.com)