轉自:https://blog.csdn.net/weixin_42033269/article/details/82840950
我們一直在使用Eureka
進行注冊服務,然而你有可能很少關心服務
在注冊到Eureka Server
時是采用的主機名
的方式?還是IP地址
的方式?
構建項目
我們把之前章節SpringCloud組件:將微服務提供者注冊到Eureka服務中心的源碼復制一份修改項目名稱為hengboy-spring-cloud-eureka-register-away
,並簡單的對application.yml
配置文件進行修改,如下所示:
# 服務名稱
spring:
application:
name: hengboy-spring-cloud-eureka-register-away
# 服務提供者端口號
server:
port: 20001
# 配置Eureka Server 信息
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
# 自定義實例編號
instance:
instance-id: ${spring.application.name}:${server.port}:@project.version@
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
在上面配置中,並沒有對注冊方式進行任何修改,如果現在啟動當然就是采用的默認方式進行注冊,接下來我們來看看默認的方式是采用的哪種?
查看默認方式
我們仍然使用SpringCloud組件:搭建Eureka服務注冊中心源碼作為服務注冊中心
(Eureka Server)來完成本章的測試工作。
測試步驟:
- 啟動服務注冊中心
- 啟動本章項目
- 訪問
http://localhost:10000
打開服務注冊中心
管理界面- 點擊服務列表服務,查看地址欄地址
當我們點擊hengboy-spring-cloud-eureka-register-away:20001:v1.0
服務名稱后會跳轉到服務的監控信息
界面,不過我們並沒有添加監控
相關的依賴或者配置,所以這里跳轉后是404
訪問不到頁面,即使是這樣我們還是可以看到跳轉的網址是http://192.168.1.75:20001/actuator/info
,這也證實了一點Eureka Client
向Eureka Server
進行注冊的時候默認采用的是IP Address
方式。
那么如果你想采用主機名的方式進行注冊服務
,該怎么配置呢?請繼續閱讀。
配置使用主機名
我們如果采用主機名的方式進行注冊服務
,只需要修改application.yml
配置文件內的eureka.instance.hostname
配置信息即可,如下所示:
# 配置Eureka Server 信息
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
# 自定義實例編號
instance:
instance-id: ${spring.application.name}:${server.port}:@project.version@
# 配置使用主機名注冊服務
hostname: node1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
node1
是我本機配置的其中一個主機名
OS X
/Linux
系統下修改主機名
我是采用的MAC OS X
系統作為運行環境,所以修改/etc/hosts
文件對應的添加主機名
、IP
地址的映射即可,如下所示:
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 node1
127.0.0.1 node2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
Windows
系統下修改主機名
如果你是采用的Windows
系統作為運行環境,你可以修改C:\Windows\System32\drivers\etc\hosts
文件內容並添加映射關系。
修改完成主機名后,一定不要忘記是需要讓主機名生效的,修改完成后最有效的辦法是
重啟你的計算機
可以生效主機名
。
接下來我們需要按照下面的步驟進行測試主機名方式注冊
是否已經生效?
- 重啟本章項目
- 刷新
Eureka Server
管理平台界面- 點擊服務名稱查看跳轉地址
我們可以發現跳轉的路徑由原本默認的http://192.168.1.75:20001/actuator/info
方式修改成了http://node1:20001/actuator/info
,可以看到已經是使用了主機名
的方式進行的注冊服務
!!!
配置優先使用IP
如果你在部署的時候某種原因導致的無法使用主機名
方式進行部署,當然你可以選擇不配置eureka.instance.hostname
參數,如果你配置后仍然想使用IP Address
方式進行服務注冊
,這時我們可以通過eureka.instance.prefer-ip-address
參數來進行設置,如果該參數設置為true
,則優先使用IP Address
進行服務注冊
。
配置如下所示:
# 配置Eureka Server 信息
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
# 自定義實例編號
instance:
instance-id: ${spring.application.name}:${server.port}:@project.version@
# 配置使用主機名注冊服務
hostname: node1
# 優先使用IP地址方式進行注冊服務
prefer-ip-address: true
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
具體的測試過程與上述配置使用主機名
一致,可以進行嘗試運行測試。
既然我們可以優先使用IP
進行注冊服務
,我們想根據指定的IP地址
進行注冊該怎么配置呢?
配置使用指定IP
配置使用指定IP
也比較簡單,我們可以進行設置eureka.instance.ip-address
參數的值來進行修改注冊的IP 地址
。
我們基於上面步驟的配置文件進行修改內容如下所示:
# 配置Eureka Server 信息
eureka:
client:
service-url:
defaultZone: http://localhost:10000/eureka/
# 自定義實例編號
instance:
instance-id: ${spring.application.name}:${server.port}:@project.version@
# 配置使用主機名注冊服務
hostname: node1
# 優先使用IP地址方式進行注冊服務
prefer-ip-address: true
# 配置使用指定IP
ip-address: 127.0.0.1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
配置文件修改完成后,進行如下步驟進行測試是否失效:
- 重啟本章項目
- 刷新
Eureka Server
管理平台界面- 點擊服務名稱,查看跳轉地址信息
我們發現跳轉地址欄的地址已經使用了我們配置的ip-address
參數,地址為:http://127.0.0.1:20001/actuator/info
。
注意:如果配置
ip-address
參數后並沒有開啟prefer-ip-address: true
,那么仍然使用主機名
或者默認
的注冊方式。
總結
我們通過幾種不同的服務注冊方式
來全面講解了Eureka Client
在注冊到服務注冊中心
時使用的主機信息,這幾種注冊方式也是存在一定的優先級順序
的,這一知識點我們在下一章結合Eureka
源碼進行分別全面剖析這幾種注冊方式
以及優先級順序
。
源碼位置
本章源碼已經上傳到恆宇少年的碼雲
,請結合源碼進行學習,感謝閱讀。
- SpringBoot配套源碼地址:訪問碼雲查看源碼、訪問GitHub查看源碼
- SpringCloud配套源碼地址(
本章源碼在這
):訪問碼雲查看源碼
與恆宇少年面對面
如果你喜歡
恆宇少年
的相關文章,那么就去微信公眾號(恆宇少年
)關注我吧!!!
當然你也可以去 SpringCloud碼雲源碼 項目底部掃描微信公眾號二維碼關注我,感謝閱讀!!!
學習目錄推薦
- SpringCloud相關系列文章訪問:目錄:SpringCloud核心技術學習目錄
- SpringBoot相關系列文章請訪問:目錄:SpringBoot學習目錄
- QueryDSL相關系列文章請訪問:QueryDSL通用查詢框架學習目錄
- SpringDataJPA相關系列文章請訪問:目錄:SpringDataJPA學習目錄
開源信息
這段時間一直在編寫開源的相關框架,致力於公司使用的框架升級以及開源計划,將公司使用到的工具
以及插件
進行升級重構並且開源。
- 代碼生成器(Code-Builder)
code-builder
代碼生成器根據你提供的模板文件(目前支持freemarker
)自動生成實體類,可以很大很有效的提高開發效率。Gitee地址
:https://gitee.com/hengboy/code-builderGithub地址
:https://github.com/hengyuboy/code-builder - 持久化框架(MyBatis-Enhance)
mybatis-enhance
是一個對mybatis
框架的增強封裝,提供一系列的內部方法來完成單表數據的操作,多表數據提供DSL
方式進行操作。Gitee地址
:https://gitee.com/hengboy/mybatis-enhanceGithub地址
:https://github.com/hengyuboy/mybatis-enhance - 自動分頁插件
MyBatis-Pageable
是一款自動化分頁的插件,基於MyBatis
內部的插件Interceptor
攔截器編寫完成,攔截Executor.query
的兩個重載方法計算出分頁的信息以及根據配置的數據庫Dialect
自動執行不同的查詢語句完成總數量的統計。Gitee地址
:https://gitee.com/hengboy/mybatis-pageable