檢視原始碼 如何為 Erlang 分散式系統實作替代節點探索機制

本節說明如何為 Erlang 分散式系統實作替代節點探索機制。節點探索通常使用 DNS 和 Erlang Port Mapper Daemon (EPMD) 來進行埠註冊和查詢。

注意

Erlang/OTP 21 新增了對替代節點探索機制的支援。

簡介

要實作您自己的節點探索模組,您必須編寫自己的 EPMD 模組。 EPMD 模組 負責提供另一個節點的位置。分散式模組(inet_tcp_dist/inet_tls_dist)會呼叫 EPMD 模組以取得另一個節點的 IP 位址和埠。Erlang/OTP 內建的 EPMD 模組會使用 DNS 解析主機名稱,並使用 EPMD Unix 程序來取得另一個節點的埠。EPMD Unix 程序會連線到另一個節點的已知埠 (埠 4369) 來完成此操作。

探索模組

探索模組需要實作與正規 EPMD 模組 相同的 API。但是,您可以連線到任何服務,而不是與 EPMD 通訊,以找出其他節點的連線詳細資訊。透過在啟動 erlang 時設定 -epmd_module 來啟用探索模組。探索模組必須實作下列回呼函數:

  • start_link/0 - 啟動探索模組所需的任何程序。

  • names/1 - 傳回註冊器針對指定主機所持有的節點名稱。

  • register_node/2 - 向註冊器註冊指定的節點名稱。

  • port_please/3 - 傳回指定節點所使用的分散式埠。

探索模組可以實作下列回呼函數: