github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/website/pages/docs/internals/gossip.mdx (about)

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