github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/website/content/docs/concepts/gossip.mdx (about)

     1  ---
     2  layout: docs
     3  page_title: Gossip Protocol
     4  description: |-
     5    Nomad uses a gossip protocol to manage membership. All of this is provided
     6    through the use of the Serf library.
     7  ---
     8  
     9  # Gossip Protocol
    10  
    11  Nomad uses a [gossip protocol](https://en.wikipedia.org/wiki/Gossip_protocol)
    12  to manage membership. This is provided through the use of the [Serf library](https://www.serf.io/).
    13  The gossip protocol used by Serf is based on
    14  ["SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol"](https://www.cs.cornell.edu/projects/Quicksilver/public_pdfs/SWIM.pdf),
    15  with a few minor adaptations. There are more details about [Serf's protocol here](https://www.serf.io/docs/concepts/gossip.html).
    16  
    17  ~> **Advanced Topic!** This page covers technical details of
    18  the internals of Nomad. You do not need to know these details to effectively
    19  operate and use Nomad. These details are documented here for those who wish
    20  to learn about them without having to go spelunking through the source code.
    21  
    22  ## Gossip in Nomad
    23  
    24  Nomad makes use of a single global WAN gossip pool that all servers participate in.
    25  Membership information provided by the gossip pool allows servers to perform cross region
    26  requests. The integrated failure detection allows Nomad to gracefully handle an entire region
    27  losing connectivity, or just a single server in a remote region. The gossip protocol
    28  is also used to detect servers in the same region to perform automatic clustering
    29  via the [consensus protocol](/docs/concepts/consensus).
    30  
    31  All of these features are provided by leveraging [Serf](https://www.serf.io/). It
    32  is used as an embedded library to provide these features. From a user perspective,
    33  this is not important, since the abstraction should be masked by Nomad. It can be useful
    34  however as a developer to understand how this library is leveraged.