erlang消息传递操作符!的位置透明性

来源:互联网 发布:mac电脑删除软件 编辑:程序博客网 时间:2024/05/16 10:18

不同于操作系统对pid的定义是一个数字, erlang的pid是一个结构化的对象, 包含node id, process id, serial 三个元素(1),  

实现分布式位置透明的根本就在于pid的设计保证其可以是集群唯一的,这样一个pid ! message可以不变的应用在集群中任何一个进程上,

node id位置存放的是dist_entry的索引(2) (自己没看过源码),有了node id就可以通过epmd找到对应的node端口(3), 

然后连接->握手->认证->发送 (5)


这里还讨论了erlang:send带nosuspend的问题,似乎是上周遇到了tcp:send timeout的问题的答案(4)


(1) Something maybe you don’t know about Erlang PIDs 

https://pdincau.wordpress.com/2010/08/30/something-maybe-you-dont-know-about-erlang-pids-2/ 

http://stackoverflow.com/questions/243363/can-someone-explain-the-structure-of-a-pid-in-erlang/262179#262179

(2) 浅析Erlang分布的核心技术 

http://developer.51cto.com/art/200812/100298.htm

(3) epmd manal

http://www.erlang.org/doc/man/epmd.html

(4) erlang send剖析及参数意义

http://blog.csdn.net/mycwq/article/details/42845385

(5) erl_dist_protocol

http://erlang.org/doc/apps/erts/erl_dist_protocol.html#connected_nodes

(6) otp源码(留着以后看)

http://quitbuddy.org/otp_src_R15B01/erts/emulator/beam/erl_node_tables.h

0 0
原创粉丝点击