GitHunt
NS

nspcc-dev/gossip-model

Simulation push gossip model for data propagation

Demo

asciicast

Push-Gossip model

Simulated model for efficiency evaluation of push-gossip protocol.

Description

This model simulates synchronous push-gossip process in distributed
system with mesh topology. Model has variety of parameters:
network size, fan-out size, number of experiments. Application executes
several experiments and calculates time in hops when all network nodes
got the propagated data.

Usage

You can build application or use it inside docker container.
To build use command go build, with git and gcc pre-installed.

We recommend to run model inside docker container. For interactive mode
use make repl which builds environment and starts gossipmodel with
-i parameter

$ make repl
Sending build context to Docker daemon  375.3kB
Step 1/8 : FROM golang:alpine as builder
 ---> f56365ec0638
Step 2/8 : RUN apk add --no-cache git gcc musl-dev
. . .
Successfully built 0fabd6489c97
Successfully tagged gossip-model-image:latest
Interactive push-gossip model runner
Print 'run' and fill model parameters
>>> run
Network size: 100
Fan-out size: 10
Number of experiments: 20
-----------
Size: 100 Fan-out: 10
3:17 (85.00%)  4:2 (10.00%)  inf:1 (5.00%)
Reused avg: 600
31.962821ms
>>>  

Another way is to run application in silent mode

$ make up
Sending build context to Docker daemon  375.8kB           
Step 1/8 : FROM golang:alpine as builder   
 ---> f56365ec0638                       
. . . 
/ #  gossipmodel -s 100 -f 9 -c 1000
Size: 100 Fan-out: 9
3:743 (74.30%)  4:256 (25.60%)  inf:1 (0.10%)
Reused avg: 544
412.675255ms

Application outputs model params and simulation results.
3:743(74.3%) in example above means that 743 out of 1000
experiments (74.3%) were finished in 3 propagation hops.

License

This project is licensed under the GPL v3.0 License - see the
LICENSE.md file for details

Languages

Go95.4%Dockerfile3.1%Makefile1.4%

Contributors

GNU General Public License v3.0
Created December 29, 2018
Updated July 16, 2024
nspcc-dev/gossip-model | GitHunt