Знайомство з 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