gootik / this-week-in-erlang

Weekly review of things that happen in the Erlang world
https://gootik.github.io/this-week-in-erlang/
MIT License
42 stars 2 forks source link

Erlang and Distributed design #50

Closed gootik closed 6 years ago

gootik commented 6 years ago

DATE (yyyy/mm/dd)

2018/04/20

CATEGORY (article/library update/announcement/OTP/employment/event)

article

DESCRIPTION

This article talks about how Erlang teaches you to think about distributed systems. It also, briefly, compares Kubernetes (as a distributed system) vs. Erlang VM.

LINK

https://blog.kenforthewin.com/what-erlang-taught-me-about-distributed-systems/

AUTHOR NAME

Kenny Bergquist

AUTHOR TWITTER

kenforthewin92

fenollp commented 6 years ago

Curious: how is Kubernetes handling net splits? And how can we apply that to distributed Erlang?

jadeallenx commented 6 years ago

It uses etcd which uses an implementation of Raft to ensure correctness when a partition occurs. I doubt upstream would merge an implementation of some consensus algorithm to use in global. There's a lot of latency penalties for using consensus, and sometimes you don't need to pay them.

For that matter, using global itself you pay a lot of latency penalties, so honestly the whole node-to-node communication pathway (imo) ought to be augmented to use straight up TCP (no epmd or other intermediaries)

fenollp commented 6 years ago

Interesting, thanks! Maybe there already are some lib that brings etcd into the BEAM as a 'global' module.

At 2600Hz we had a similar thing in the form of gen_listener so that nodes could talk through AMQP and may be federated.