Знайомство з Erlang [21]

erlang distributed - викликаємо функції на інших нодах

допустимо у нас є дві ерланг ноди на одному сервері -
node1 та node2

памятаємо про одинакові куки в файлах налаштувань vm.args обох ерланг нод

-name node1@127.0.0.1
-setcookie GHtrh59u8t9r8furojf984u
...
-name node2@127.0.0.1
-setcookie GHtrh59u8t9r8furojf984u
...

нагадування -
ерланг куки - параметр безпеки,
їх варто зробити складними, довгими та тримати в таємниці

після перезапуску обох ерланг нод
(з "вбиванням" процесу epmd)

sudo killall ${name}

ми можемо підєднатись до node1 ,
викликати функцію test_function/2 з модуля node2_test_module на ноді node2 ,
та отримати результат, вичислений на іншій ерланг ноді

rpc:call('node2@127.0.0.1', node2_test_module, test_function, [ test_atom, [{<<"some_key1">>, <<"some_value1">>}, {<<"some_key2">>, <<"some_value2">>}] ])

параметрами, переданими в функцію, будуть атом та список-proplist з двома парами key-value

нагадування -
ерланг ноди можуть бути на різних серверах,
і також будуть спокійно обмінюватись даними :)

Продовження

Посилання

https://erlang.org/doc/man/rpc.html#call-4
https://learnyousomeerlang.com/distribunomicon
https://qna.habr.com/q/73386