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