Erlang确定远程节点的“类型”

时间:2012-04-06 10:00:26

标签: erlang nodes cluster-computing

我有两个类型的多个节点。

一种类型的节点,将在特定服务器上执行一项工作,另一种将执行其他操作。

我们称之为“type1”和“type2”。

我正在推出它们:

erl -pa ebin -name type1@sub1.mydomain.com -setcookie abc
erl -pa ebin -name type2@sub2.mydomain.com -setcookie abc
erl -pa ebin -name type1@sub3.mydomain.com -setcookie abc

sub1.mydomain.com,sub2.mydomain.com和sub3.mydomain.com是3个不同的互联网服务器。

显然,type2节点在这里将type1互连在一起。 Type2服务器是整个工作中唯一活跃的“确定”节点。

Type1服务器是动态的,所以每次运行新的type1服务器时,它都会ping type2服务器,以便连接到所有其他节点。

事情是,当至少有2个type1节点启动并运行时,我需要对工作进行聚类。

所以我想从nodes()返回确定哪个节点是type1 ...

我可以从atom_to_string获取字符串,然后使用返回的字符串检查type1,但这似乎是一种错误的方法...由于限制,也无法使用特定端口。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

在Erlang中,节点名称是 atoms ,而atom是常量文字,因此你将无法在原子的某些部分进行模式匹配(希腊语,“ a-tomos“意思是”不可分割的“)。

不幸的是,你必须做一些事情,比如将每个原子转换成一个字符串(一个字符列表),然后将你的正则表达式应用到它(似乎你已经这样做了)。

说,我建议你去看看:

http://learnyousomeerlang.com/distributed-otp-applications

OTP将帮助您完成使用分布式应用程序实现的许多功能。