• Stars
    star
    129
  • Rank 269,812 (Top 6 %)
  • Language
    Elixir
  • Created about 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Distributed Systems Training with Elixir

Distributed Systems Training in Elixir

This training is divided into 4 parts. Each part is designed to teach you concepts about distributed systems, the ways that they fail, and how to utilize some of the tools available in erlang and elixir to help mitigate those failures.

Requirements

You'll need these things installed or available in order to go through this training.

  • Elixir >= 1.9
  • Erlang >= 22
  • Redis

Initial Setup

Run through these steps before starting on the examples. These should help ensure that your system is set up correctly.

Check VPNs or Firewall rules

In other trainings we've seen issues with corporate vpns or firewalls. These issues typically cause connections to be very slow or not connect at all. You may need to temporarily disable these or add rules to allow epmd and erlang to open ports on your local machine.

If you're on macos then the first time you start a node with distribution turned on then you may see a prompt to allow epmd open network connections. You want to allow this.

Ensure you can connect nodes

You'll find it useful to run multiple nodes simultaneously for debugging and testing. There are many ways to do this such as tmux, emacs buffers, split terminal windows, or whatever other method works for you. We want to ensure that you can connect nodes together before we move on.

If you have an error during any of these steps please ask Chris or Ben for help.

Part 1 - Ping Pong

Part 1 provides a rough overview of connecting erlang nodes. We will see how to start processes on specific nodes, some of the failure scenarios when BEAMs disconnect, sending RPCs and other fundamental concepts.

Parts 2, 3, and 4 - Link Shortener

For the remainder of the training we'll be building a link shortener. We will use distributed erlang to support very low latency reads, fannout using consistent hashing, CRDTs, and robust replication strategies.

Why does this use Distributed Erlang?

This training uses standard, distributed erlang. While there are many limitations and issues with dist-erl the goal of this training is not to promote a specific tool but instead to teach the underlying concepts that are universal to all distributed systems. Dist-erl provides the lowest barrier for doing that. We make no attempt to hide the issues with dist-erl. If you need a more robust solution you should look at Partisan.

More Repositories

1

pointfree.io

A web site for converting haskell code into pointfree haskell code
HTML
155
star
2

twirp-elixir

Elixir implementation of the twirp RPC framework
Elixir
120
star
3

webpack-react-skeleton

Quickly build a React app with Webpack
JavaScript
52
star
4

oath

Design by contract in elixir
Elixir
43
star
5

fawkes

Chatbot framework
Elixir
42
star
6

breaking_mnesia

Elixir
17
star
7

ecto_isolation

Elixir
15
star
8

dotfiles

I โค๏ธ dotfiles
Shell
14
star
9

phoenix_webpack

A webpack generator for phoenix
Elixir
13
star
10

drax

CRDTs for elixir.
Elixir
12
star
11

jenga

Example elixir application for building systems that handle failure.
Elixir
11
star
12

norm2

Elixir
10
star
13

url-shortener

Elixir
9
star
14

orwell

Kafka lag monitoring and alerting
Elixir
9
star
15

chatops_rpc

Elixir implementation of chatops-rpc protocol
Elixir
8
star
16

weirding

Random Text Generator
Elixir
7
star
17

conflicted

Elixir
6
star
18

soft_delete

Elixir
5
star
19

aoc2020

Elixir
5
star
20

nyan-cat

NyanCat all of the things
Ruby
4
star
21

sync_dispatch

Elixir
4
star
22

aoc_2018

Elixir
3
star
23

butler_cage

A butler plugin for Nick Cage photos
Elixir
3
star
24

dist_sys_training

Elixir, Distributed Systems Training
3
star
25

6.824

Homework and Labs for MIT 6.824
Go
2
star
26

butler_tableflip

Flipping tables with butler
Elixir
2
star
27

chattdevs

the chattanooga directory listing
Ruby
2
star
28

aoc2021

Nim
2
star
29

sprawl

Testing out phoenix
Elixir
1
star
30

telling-stories-with-d3

A talk I gave that demonstrates how to tell stories using data visuals and d3
JavaScript
1
star
31

pool_test

Elixir
1
star
32

component_design

A talk on designing webapps
HTML
1
star
33

conference-talks

JavaScript
1
star
34

sahara

Elixir
1
star
35

lunch-stats

Stats on lunch meetups
JavaScript
1
star
36

codestock_speakers

Codestock speakers by year
1
star
37

advent_of_code_2019

Elixir
1
star
38

cis194

Homework for cis194
Haskell
1
star
39

form_test

potential phx-live-view bug
Elixir
1
star
40

2014-chadev-info

d3 visualization for chadev lunches
JavaScript
1
star
41

eproxy

A proxy server written in elixir
Elixir
1
star
42

songocracy

A way to democratize music in the workplace
Ruby
1
star