W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
自定義 Dubbo 服務對外暴露的主機地址
在 Dubbo 中, Provider 啟動時主要做兩個事情,一是啟動 server,二是向注冊中心注冊服務。啟動 server 時需要綁定 socket,向注冊中心注冊服務時也需要發(fā)送 socket 唯一標識服務地址。
一般的 dubbo 協(xié)議配置如下:
... <dubbo:protocol name="dubbo" port="20890" /> ...
可以看到,只配置了端口號,沒有配置 host,此時設置的 host 又是什么呢?
查看代碼發(fā)現(xiàn),在 org.apache.dubbo.config.ServiceConfig#findConfigedHosts() 中,通過 InetAddress.getLocalHost().getHostAddress() 獲取默認 host。其返回值如下:
除此之外,可以通過 dubbo.protocol 或 dubbo.provider 的 host 屬性對 host 進行配置,支持IP地址和域名,如下:
... <dubbo:protocol name="dubbo" port="20890" host="www.example.com"/> ...
見 dubbo 通過環(huán)境變量設置 host
有些部署場景需要動態(tài)指定服務注冊的地址,如 docker bridge 網絡模式下要指定注冊宿主機 ip 以實現(xiàn)外網通信。dubbo 提供了兩對啟動階段的系統(tǒng)屬性,用于設置對外通信的ip、port地址。
以上四個配置項均為可選項,如不配置 dubbo 會自動獲取 ip 與端口,請根據具體的部署場景靈活選擇配置。 dubbo 支持多協(xié)議,如果一個應用同時暴露多個不同協(xié)議服務,且需要為每個服務單獨指定 ip 或 port,請分別在以上屬性前加協(xié)議前綴。 如:
PORT_TO_REGISTRY 或 IP_TO_REGISTRY 不會用作默認 PORT_TO_BIND 或 IP_TO_BIND,但是反過來是成立的 如設置 PORT_TO_REGISTRY=20881 IP_TO_REGISTRY=30.5.97.6,則 PORT_TO_BIND IP_TO_BIND 不受影響 如果設置 PORT_TO_BIND=20881 IP_TO_BIND=30.5.97.6,則默認 PORT_TO_REGISTRY=20881 IP_TO_REGISTRY=30.5.97.6
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: