java B2B2C 仿淘寶電子商城系統-Spring Cloud實戰隨機埠
我們經常會需要啟動多個例項的情況來測試註冊中心、配置中心等基礎設施的高可用,也會用來測試客戶端負載均衡的呼叫等。但是,我們一個應用只能有一個埠號,這就使得在本機測試的時候,不得不為同一個服務設定不同的埠來進行啟動。
需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼:壹零叄八柒柒肆六二六
在本地用不同埠啟動同一服務例項的方法有很多。最傳統的我們可以粗暴地修改配置檔案中的server.port屬性來分別啟動多個例項,這種方法雖然可以實現,但是非常的不方便。比較好的一種方法是在啟動的時候通過命令的方式為server.port屬性來設定不同的值,這樣我們的配置檔案就不用反覆的進行修改了。
在本文中,我們將介紹另外一種方法:採用隨機埠的方式來設定各個服務例項,這樣我們不用去編輯任何命令就可以在本地輕鬆地啟動多個例項了。
使用隨機埠
為Spring Cloud的應用實用隨機埠非常簡單,主要有兩種方法:
設定server.port=0,當應用啟動的時候會自動的分配一個隨機埠,但是該方式在註冊到Eureka的時候會一個問題:所有例項都使用了同樣的例項名(如:Lenovo-zhaiyc:hello-service:0),這導致只出現了一個例項。所以,我們還需要修改例項ID的定義,讓每個例項的ID不同,比如使用隨機數來配置例項ID:
server.port=0
eureka.instance.instance-id=
{random.int}
除了上面的方法,實際上我們還可以直接使用random函式來配置server.port。這樣就可以指定埠的取值範圍,比如:
server.port=${random.int[10000,19999]}
由於預設的例項ID會由server.port拼接,而此時server.port設定的隨機值會重新取一次隨機數,所以使用這種方法的時候不需要重新定義例項ID的規則就能產生不同的例項ID了。
程式碼結構圖:
java B2B2C springmvc mybatis仿淘寶電子商城系統