-
Notifications
You must be signed in to change notification settings - Fork 343
/
doc.go
33 lines (27 loc) · 1.35 KB
/
doc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
Package swarm implements the exchange of information between
Skipper instances using a gossip protocol called SWIM. This
aims at a solution that can work in a context of multiple readers
and writers, with the guarantee of low latency, weakly consistent
data, from which derives the decision to use such protocol. As an
example the implementation of the filter clusterRatelimit uses
the swarm data exchange to have a global state of current requests.
A swarm instance needs to find some of it's peers before joining the
cluster. Current implementations to find peers are swarmKubernetes to
find skipper instances running in a Kubernetes cluster and swarmFake
for testing.
Background information:
The current skipper implementation uses
hashicorp's memberlist, https://github.com/hashicorp/memberlist,
which is an implementation of the swim protocol. You can find a
detailed paper at
http://www.cs.cornell.edu/~asdas/research/dsn02-SWIM.pdf.
Quote from a nice overview https://prakhar.me/articles/swim/
The SWIM or the Scalable Weakly-consistent Infection-style process
group Membership protocol is a protocol used for maintaining
membership amongst processes in a distributed system.
While starting, Skipper will find its swarm peers through the
Kubernetes API server. It will do that using a label selector query
to find Pods of the swarm.
*/
package swarm