(三)java版spring cloud+spring boot+redis多租戶社交電子商務平臺-Spring Cloud實戰隨機端口

我們經常會需要啓動多個實例的情況來測試註冊中心、配置中心等基礎設施的高可用,也會用來測試客戶端負載均衡的調用等。但是,我們一個應用只能有一個端口號,這就使得在本機測試的時候,不得不爲同一個服務設置不同的端口來進行啓動。

在本地用不同端口啓動同一服務實例的方法有很多。最傳統的我們可以粗暴地修改配置文件中的server.port屬性來分別啓動多個實例,這種方法雖然可以實現,但是非常的不方便。比較好的一種方法是在啓動的時候通過命令的方式爲server.port屬性來設置不同的值,這樣我們的配置文件就不用反覆的進行修改了。

在本文中,我們將介紹另外一種方法:採用隨機端口的方式來設置各個服務實例,這樣我們不用去編輯任何命令就可以在本地輕鬆地啓動多個實例了。

使用隨機端口

爲Spring Cloud的應用實用隨機端口非常簡單,主要有兩種方法:

設置server.port=0,當應用啓動的時候會自動的分配一個隨機端口,但是該方式在註冊到Eureka的時候會一個問題:所有實例都使用了同樣的實例名, 這導致只出現了一個實例。所以,我們還需要修改實例ID的定義,讓每個實例的ID不同,比如使用隨機數來配置實例ID:

server.port=0

eureka.instance.instance-id=spring.application.name: {spring.application.name}:spring.application.name:{random.int}

除了上面的方法,實際上我們還可以直接使用random函數來配置server.port。這樣就可以指定端口的取值範圍,比如:

server.port=${random.int[10000,19999]}

由於默認的實例ID會由server.port拼接,而此時server.port設置的隨機值會重新取一次隨機數,所以使用這種方法的時候不需要重新定義實例ID的規則就能產生不同的實例ID了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章