Quase todos os aplicativos de negócios bem-sucedidos, mais cedo ou mais tarde, entram em uma fase quando a escala horizontal é necessária. Em muitos casos, você pode simplesmente iniciar uma nova instância e reduzir a carga média. Mas há casos menos triviais em que devemos garantir que nós diferentes se conheçam e distribuam com precisão a carga de trabalho.

Aconteceu que erlang , que escolhemos por sua boa sintaxe e hype, tem suporte de primeira classe para sistemas distribuĂdos . Em teoria, isso soa geralmente trivial:
Mensagens entre processos em diferentes nĂłs, bem como entre links e monitores, sĂŁo transparentes [...]
Na prática, as coisas sĂŁo um pouco mais complicadas. O erlang distribuĂdo foi desenvolvido quando "contĂŞiner" significava uma caixa de ferro tĂŁo grande para transporte, e "docker" era simplesmente sinĂ´nimo de carregador de porta. No IP4, havia muitos endereços desocupados, nas lacunas da rede - os ratos que eram roĂdos eram geralmente os culpados, e o tempo de atividade mĂ©dio de um sistema de produção foi medido por dĂ©cadas.
, , erlang , IP- , . , erlang, , .
: libcluster
. , , — , . — . , , . .
, , :
- , erlang;
- ( , , , );
- ,
:nonode@nohost
; - , .
, , :nonode@nohost
, - test_cluster_task
, docker-compose up --scale my_app=3
, - . , , mnesia
— , - .
Cloister , : . , , , CS . , . , .
Cloister , (assembly and maintainance) , Cloister.Manager
.
, config
, :
config :cloister,
otp_app: :my_app,
sentry: :"cloister.local",
consensus: 3,
listener: MyApp.Listener
: Cloister OTP :my_app
, erlang service discovery , , MyApp.Listener
( @behaviour Cloister.Listener
) . .
, Cloister , ( , .) , , . ( , ), MyApp.Listener.on_state_change/2
. , %Cloister.Monitor{status: :up}
, : «, ».
consensus: 3
, , , status: :rehashing
→ status: :up
.
, consensus: 1
Cloister , :nonode@nohost
, :node@host
, :node@host.domain
— , (:none | :shortnames | :longnames
).
, mnesia
. on_state_change/2
. , , , mnesia
Cloister.
Cloister , . , , , IP- , , , /. , :nonode@nohost
. .
, MyApp.Listener
, , . , libcluster
, , . , , , -.
Nota: neste momento, no original, estava a frase “Happy clustering!”, E o Yandex, que eu traduzi (para nĂŁo subir nos dicionários), me ofereceu a opção “Happy cluster!” Talvez a melhor tradução, especialmente Ă luz da atual situação geopolĂtica, seja impossĂvel de imaginar.