簡單方式創建一個eureka server 和 eureka client項目,最終實現負載均衡

概念就不贅述了。
工具: IDEA 2020


以下是第一部分,創建eureka server

  1. 打開IDEA,新建項目--spring initializr

你可能會遇到找不到“spring initializr”的情況,經查閱和測試,在IDEA安裝spring boot插件並啓用即可。

在這裏插入圖片描述

在這裏插入圖片描述
3. 中間一步略,就是指定package名,項目名之類的,直到下圖:
在這裏插入圖片描述
4. 顯然地,如上圖,勾選Eureka Server。(除此之外我什麼都沒勾選)。
5. 然後點擊確定,靜等各種包下載完成,啓動項目。
6. 尤其注意,要在啓動項的上方加上@EnableEurekaServer註解。如下圖:
在這裏插入圖片描述
7. 啓動報錯,是因爲要添加必要的啓動配置。如下:

server:
  port: 8081 #服務註冊中心端口號
eureka:
  instance:
    hostname: 127.0.0.1 #服務註冊中心IP地址
  client:
    registerWithEureka: false #是否向服務註冊中心註冊自己
    fetchRegistry: false #是否檢索服務
    serviceUrl: #服務註冊中心的配置內容,指定服務註冊中心的位置
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  1. 然後親測,啓動成功。
    在這裏插入圖片描述

以下是另一部分,eureka client

  1. 跟創建eureka server的步驟差不多,就是要選eureka client,如下圖:
    在這裏插入圖片描述
  2. 然後都一樣,一路到底,靜等包下載完成。
  3. 然後添加@EnableEurekaClient註解,如下圖:
    在這裏插入圖片描述
  4. 老規矩,添加配置文件,如下:
eureka:
  client:
    serviceUrl: #註冊中心的註冊地址
      defaultZone: http://127.0.0.1:8081/eureka/
server:
  port: 8082  #服務端口號
spring:
  application:
    name: service-provider #服務名稱--調用的時候根據名稱來調用該服務的方法
  1. 然後啓動,……………………然後啓動失敗。報錯內容控制檯沒有什麼有用的信息,基本只有一個disconected form the JVM ...Completed shut down of DiscoveryClient 這樣的寥寥數語。
  2. 輸入上述內容經查,添加如下dependency即可。spirng eureka client啓動時報錯:Completed shut down of DiscoveryClient
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
  1. 然後啓動正常。如下圖:
    在這裏插入圖片描述
    在這裏插入圖片描述
    知此,最簡的eureka server 和eureka client都啓動成功。
    下面該嘗試怎樣使用了。

服務之間怎樣互相調用

示例要做的就是這麼一件簡單的事,如下圖:
在這裏插入圖片描述

  1. 剛剛已經有了server和一個client,我們就把這個client稱爲client1吧。(那麼client1中就應該有一點可以被調用的東西,如一個RestFul的控制器,裏面有些方法可以被調用的)
    給client1添加一兩個接口後,如圖:
    在這裏插入圖片描述
    使用postman可直接調用到。

  2. 然後建立一個同樣的,註冊到server的eureka client,稱爲 consumer吧。
    其中consumer要調用client1,那麼需要用到RestTemplate
    如下圖:
    在這裏插入圖片描述
    注意上圖中紅框處必須有,否則調用時會提示eureka java.net.UnknownHostException,看似能搜到很多答案,卻根本無法解決,氣死人。

在這裏插入圖片描述
注意上圖中綠框處可能因client1的server.servlet.context-path: /eurekaClient 不同而不同,不設置就不需要綠框中這部分。
在這裏插入圖片描述
然後經測試,server和兩個client都啓動後,client中的互相調用就可用了。
用postman直接調用consumer裏的接口,然後consumer的代碼裏調用了client1的內容,並且得到了符合預期的內容。
即成功。

下面我會把所有代碼都放上來。


怎樣負載均衡

到了這一步,才發現這裏原來纔是最簡單的。
把client1複製一份,以下就稱爲client2吧。
小改一下配置文件,啓動。
如下圖,只改這一處即可。
在這裏插入圖片描述
順便想一下爲什麼service-provider不改。

然後把server、client1,client2,consumer都啓動。
我們想要做的是讓 consumer調用 (1,2)共同組成的服務,其中1和2實現負載均衡。
其中client1小改:
在這裏插入圖片描述
client2小改:
在這裏插入圖片描述
最後如下圖:
在這裏插入圖片描述

然後postman就一直調用就完了。
在這裏插入圖片描述
在這裏插入圖片描述

成功。


最後,上代碼。

eureka-demo.zip


最最後

本文認真觀摩了某大佬的文章,受益頗深。
高仿操作了一遍,全部成功。

原文地址如下:
Spring Boot + Eureka 實現微服務負載均衡

以此表示感謝。

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