A short guide to the structure and internals of the Erlang distributed messaging facility. Erlang分佈式啓動流程源碼閱讀指南:html
epmd
互相發現彼此。net_kernel
啓動tcp創建穩定的長鏈接流程,handshake,setnode,set_cookie。How to opens an ssh tunnel to connect to a remote Erlang VM via Observer.node
觀察節點想啓動observer觀測其它節點,觀察節點只有ssh的網絡權限,其它端口不通,<br />能夠使用把epmd的端口映射ssh代理隧道上,來實現節點通訊。<br />更進一步,能夠研究一下SSHEX如何經過Erlang自帶的ssh庫來實現功能的。git
How to evaluate a string of code in Erlang at runtime.github
Erlang做爲動態語言的絕佳優點就是能夠運行時才parse/eval輸入的字符串,<br />這也是Erlang Shell運行的基本原理。大部分人都幻想過在瀏覽器裏面運行來 Erlang Shell,實現控制管理後臺。<br />好比這個:TryErlang。能夠嘗試,但必定要注意如何限制權限。防止被人hack後直接init:stop/0
。瀏覽器
Ten Years of Erlang.cookie
Learn You Some Erlang_做者Fred總結了加入Erlang社區10年的變化。附譯文。網絡
原子是不會垃圾回收的,當原子個數達到最大時(默認爲1048576),節點會直接crash。<br />因爲舊版的OTP不能直接獲得atom數量,因此文中須要間接經過erlang:system_info(info)
來作。<br /> 在新版OTP中能夠直接使用erlang:system_info(atom_limit)和erlang:system_info(atom_count)<br />獲得最大值和當前值。tcp
$ erl Erlang/OTP 20 [erts-9.0] [source] [64-bit] ... 1> [list_to_atom(integer_to_list(I)) || I <- lists:seq(1, erlang:system_info(atom_limit))]. no more index entries in atom_tab (max=1048576) Crash dump is being written to: erl_crash.dump...done
Hexadecimal字符轉二進制分佈式
1> Hexs = ["FF","AC","01"]. 2> << <<(list_to_integer(C,16)):8>> || C <- Hexs >>. <<255,172,1>>