Spring Cloud實戰(zhàn)技巧之使用隨機端口
前言
在Spring Cloud構(gòu)建微服務(wù)架構(gòu)中,我們經(jīng)常會需要啟動多個實例的情況來測試注冊中心、配置中心等基礎(chǔ)設(shè)施的高可用,也會用來測試客戶端負載均衡的調(diào)用等。但是,我們一個應(yīng)用只能有一個端口號,這就使得在本機測試的時候,不得不為同一個服務(wù)設(shè)置不同的端口來進行啟動。
在本地用不同端口啟動同一服務(wù)實例的方法有很多。最傳統(tǒng)的我們可以粗暴地修改配置文件中的server.port
屬性來分別啟動多個實例,這種方法雖然可以實現(xiàn),但是非常的不方便。比較好的一種方法是在啟動的時候通過命令的方式為server.port
屬性來設(shè)置不同的值,這樣我們的配置文件就不用反復(fù)的進行修改了。
在本文中,我們將介紹另外一種方法:
采用隨機端口的方式來設(shè)置各個服務(wù)實例,這樣我們不用去編輯任何命令就可以在本地輕松地啟動多個實例了。
使用隨機端口
為Spring Cloud的應(yīng)用實用隨機端口非常簡單,主要有兩種方法:
1、設(shè)置server.port=0,當(dāng)應(yīng)用啟動的時候會自動的分配一個隨機端口,但是該方式在注冊到Eureka的時候會一個問題:所有實例都使用了同樣的實例名(如:Lenovo-zhaiyc:hello-service:0),這導(dǎo)致只出現(xiàn)了一個實例。所以,我們還需要修改實例ID的定義,讓每個實例的ID不同,比如使用隨機數(shù)來配置實例ID:
server.port=0 eureka.instance.instance-id=${spring.application.name}:${random.int}
2、除了上面的方法,實際上我們還可以直接使用random
函數(shù)來配置server.port
。這樣就可以指定端口的取值范圍,比如:
server.port=${random.int[10000,19999]}
由于默認的實例ID會由server.port
拼接,而此時server.port
設(shè)置的隨機值會重新取一次隨機數(shù),所以使用這種方法的時候不需要重新定義實例ID的規(guī)則就能產(chǎn)生不同的實例ID了。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
elasticsearch節(jié)點的transport請求發(fā)送處理分析
這篇文章主要為大家介紹了elasticsearch節(jié)點的transport請求發(fā)送處理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04spring cloud config和bus組件實現(xiàn)自動刷新功能
今天通過本文給大家介紹spring cloud config和bus組件實現(xiàn)自動刷新功能,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-10-10詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)
這篇文章主要介紹了詳解Java中l(wèi)ist,set,map的遍歷與增強for循環(huán)的相關(guān)資料,需要的朋友可以參考下2017-02-02Spring Cloud OAuth2 實現(xiàn)用戶認證及單點登錄的示例代碼
這篇文章主要介紹了Spring Cloud OAuth2 實現(xiàn)用戶認證及單點登錄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Spring Security獲取用戶認證信息的實現(xiàn)流程
Spring Security是一個能夠為基于Spring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問控制功能2022-12-12