本文我们将看看Erlang里的分布式系统是如何运作的。
Erlang是一种函数式语言,其最被大家所熟知的是分布式和并发计算。
一般Erlang程序运行在节点上(节点名默认是nonode@nohost)。
在一个分布式系统里,节点间彼此交互。本文我们将用两个节点:sakib@localhost 和 cloud@remote-host 。
节点sakib@localhost运行在我本地系统,节点cloud@remote-host运行在远程服务器上。remote-host是我的远程服务器的主机名。
连接到远程节点,节点名的后缀(节点名@符号后的部分)和主机名相同是很重要。
现在如下所示打开本地系统的Erlang的shell:
|
|
并且如下所示打开远程服务器的Erlang的shell:
|
|
两个节点的cookie必须一样,或者稍后你可以设置节点的cookie。如果远程节点的cookie没有设置,那么本地节点的cookie将被用来连接远程节点。
|
|
如果响应是true,则连接建立;如果响应是false,则连接失败。
|
|
现在我们可以用RPC来运行远程节点的模块。
|
|
rpc:call()函数有4个入参。
第一个是节点名,第二个是模块名,第三个是函数名,第四个是函数的入参。
上述例子是我们运行os模块里的cmd()函数,入参是whoami。它将返回远程系统的当前用户名。os是Erlang的内建模块。
|
|
用同样的方式我们可以将不同的任务分布到不同的节点来处理,然后在主节点上获取结果。这就是在Erlang里一个分布式系统的运作方式。
原文链接: https://medium.com/@sakibsami/distributed-computing-using-erlang-1-cdd051a77c85#.maaswacq4