SpringCloud實戰小貼士:隨機端口

https://mp.weixin.qq.com/s/1q***WqrjB5xRvibqDtNUwspring

過久沒有更新,一時不知道該從哪兒繼續,索性就從一個小技巧開始吧。

在以前的《Spring Cloud構建微服務架構》系列博文中,咱們常常會須要啓動多個實例的狀況來測試註冊中心、配置中心等基礎設施的高可用,也會用來測試客戶端負載均衡的調用等。可是,咱們一個應用只能有一個端口號,這就使得在本機測試的時候,不得不爲同一個服務設置不一樣的端口來進行啓動。微信

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

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

使用隨機端口

爲Spring Cloud的應用實用隨機端口很是簡單,主要有兩種方法:負載均衡

  • 設置server.port=0,當應用啓動的時候會自動的分配一個隨機端口,可是該方式在註冊到Eureka的時候會一個問題:全部實例都使用了一樣的實例名(如:Lenovo-zhaiyc:hello-service:0),這致使只出現了一個實例。因此,咱們還須要修改實例ID的定義,讓每一個實例的ID不一樣,好比使用隨機數來配置實例ID:
server.port=0
eureka.instance.instance-id=${spring.application.name}:${random.int}
  • 除了上面的方法,實際上咱們還能夠直接使用random函數來配置server.port。這樣就能夠指定端口的取值範圍,好比:
server.port=${random.int[10000,19999]}

因爲默認的實例ID會由server.port拼接,而此時server.port設置的隨機值會從新取一次隨機數,因此使用這種方法的時候不須要從新定義實例ID的規則就能產生不一樣的實例ID了。dom

版權聲明ide

本文采用 CC BY 3.0 CN協議 進行許可。 可自由轉載、引用,但需署名做者且註明文章出處。如轉載至微信公衆號,請在文末添加做者公衆號二維碼。
長按指紋
一鍵關注
SpringCloud實戰小貼士:隨機端口
SpringCloud實戰小貼士:隨機端口函數

相關文章
相關標籤/搜索