Erlang分布式编程

本文是《Erlang程序设计》中分布式编程一章中的实践,其中示例代码被称为“名称服务器”,不太理解这种叫法,我觉得应该叫做Key/Value结构的存取服务器比较合适。

以下是示例代码:

这里写图片描述

下面以3种模式运行这段代码

一,在Erlang单节点运行

$ erl

1> kvs:start().
true
2> kvs:store(weather,cold).
true
3> kvs:lookup(weather).
{ok,cold}
4> kvs:lookup(anything).
undefined

二,同主机不同的Erlang节点

打开2个终端(终端A,终端B)

在终端A上启动一个Erlang节点node1
$ erl -sname node1
启动进程
(node1@vm1)1> kvs:start().

在终端B上启动一个Erlang节点node2
$ erl -sname node2

在node2调用node1的函数
(node2@vm1)3> rpc:call(‘node1@vm1’,kvs,store,[weather,fine]).
true
(node2@vm1)4> rpc:call(‘node1@vm1’,kvs,lookup,[weather]).
{ok,fine}

注: sname 是 short name 的简写形式,意为短名称,通常用于同一主机的不同节点

三,不同主机的Erlang节点

在两台机器(本文测试环境为Win7和Linux虚拟机)上分别启动Erlang节点(node-host1,node-host2)

1,node-host1
$ erl -name node-host1@192.168.1.100 -setcookie hellocookie

(node-host1@192.168.1.100)1> kvs:start().
true

2,node-host2
$ erl -name node-host2@192.168.99.100 -setcookie hellocookie

(node-host2@192.168.99.100)1> rpc:call(‘node-host1@192.168.1.100’,kvs,store,[weather,bad]).
true
(node-host2@192.168.99.100)2> rpc:call(‘node-host1@192.168.1.100’,kvs,lookup,[weather]).
{ok,bad}

注:不同主机上的节点相互调用需要有相同的cookie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值