我有两个类型的多个节点。
一种类型的节点,将在特定服务器上执行一项工作,另一种将执行其他操作。
我们称之为“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,但这似乎是一种错误的方法...由于限制,也无法使用特定端口。
任何建议都将不胜感激。
答案 0 :(得分:1)
在Erlang中,节点名称是 atoms ,而atom是常量文字,因此你将无法在原子的某些部分进行模式匹配(希腊语,“ a-tomos“意思是”不可分割的“)。
不幸的是,你必须做一些事情,比如将每个原子转换成一个字符串(一个字符列表),然后将你的正则表达式应用到它(似乎你已经这样做了)。
说,我建议你去看看:
http://learnyousomeerlang.com/distributed-otp-applications
OTP将帮助您完成使用分布式应用程序实现的许多功能。