升級微服務架構1:搭建Eureka Server服務中心


   Spring Cloud中使用Eureka來做服務注冊和發現,來統一管理微服務實例。

  1.使用IDEA創建一個空的Maven項目做父模塊

    (也可以不用父項目,所有模塊都用平行結構)

  

  刪除父模塊src文件夾

  

  可使用Spring Initializr來創建模塊或者創建Maven項目手動添加依賴

  2.使用Spring Initializr創建Eureka Server

  選擇SDK 1.8

  

  Artifact填寫對應模塊的名稱

  

  依次選擇Cloud Discovery->Eureka Server,Spring Boot默認選擇的是2.0.4

  

  可以參考Spring Cloud官方對應的Spring Cloud版本對應組件的版本,可以看到Finchley.SR1對應的是Spring Boot 2.0.4.RELEASE版

  https://projects.spring.io/spring-cloud/

  

  創建好后會還原Maven項目的依賴,需要一段時間。

  2.1配置Eureka Server注解
  還原成功后會生成一個模塊名稱+Application的啟動類,在類名上加上@EnableEurekaServer注解用來申明這是個Eureka服務器

  

  2.2配置Eureka Server配置文件

  配置文件可參考號官方文檔,找到對應的Spring Cloud版本,點擊Reference。

   

  http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#spring-cloud-eureka-server

  搜索找到Standalone Mode單機模式

  

  

  將項目中的application.properties后綴名改為yml,把application.yml的配置文件內容復制到項目中。

  port為服務的端口,可以自定義,我這里把端口改為了8881
  idea使用Debug啟動成功后,在瀏覽器輸入:http://localhost:8881/ 有一下內容則說明該服務啟動成功。

   

  

   3.使用Maven項目創建Eureka Server

  創建一個空的Maven項目,在父模塊創建的會自動選中父模塊

  

  將項目中的pom文件parent節點全部刪除,到Spring Cloud官網復制Maven項目的依賴相關內容到pom文件的project節點下

  

  官網的依賴文件是Eureka客戶的依賴,把dependencies節點下的依賴都刪除

  添加Eureka Server的依賴:  

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

  再添加Spring Cloud版本屬性

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <spring-cloud.version>Finchley.SR1</spring-cloud.version>
</properties>

  在resources文件夾中添加application.yml文件,並設置為資源根目錄,配置文件內容和第一一樣,改下端口為:8882

  

  新建啟動類(項目名+Application.java),寫一個main方法啟動Spring Boot程序,並加上Eureka Server的注解

  

  配置Spring Boot啟動配置項

  

  選擇對應的啟動類

  

  啟動該模塊,成功后再瀏覽器輸入:http://localhost:8882/,使用Maven創建的Eureka Server項目也成功啟動了

   

  4.創建Eureka Server集群

   集群的作用是一個服務復制多份實例,當某一個實例掛掉后不至於影響整個系統,Eureka Server集群中的每個實例都是相互復制來保障所注冊的服務一致。

實際生產環境中只要有一個Eureka Server通過不同的實例對應配置不同的端口來實現,為方便演示,我這里創建集群就采用剛剛創建的兩個不同的Eureka Server來做。

  在官方文檔中搜索:Peer Awareness
  http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#spring-cloud-eureka-server-peer-awareness
  找到對應的集群配置

  

 

   修改Host文件,添加 127.0.0.1 peer1 peer2,並將服務名設置一樣

  服務1配置:

  

server:
  port: 8881

eureka:
  instance:
    hostname: peer1
  client:
    registerWithEureka: true #把自身當做客戶端注冊到其他Eureka服務器
    fetchRegistry: true #在本地緩存所有實例注冊信息
    serviceUrl:
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      #設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。
      ##指向另一個注冊中心
      defaultZone: http://peer2:8882/eureka/

spring:
  #profiles: peer1  #沒做環境配置,注釋掉
  application:
    name: tmsapi-discovery-server

  服務2配置:

server:
  port: 8882

eureka:
  instance:
    hostname: peer2
  client:
    registerWithEureka: true #把自身當做客戶端注冊到其他Eureka服務器
    fetchRegistry: true #在本地緩存所有實例注冊信息
    serviceUrl:
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
      #設置與Eureka Server交互的地址,查詢服務和注冊服務都需要依賴這個地址。
      ##指向另一個注冊中心
      defaultZone: http://peer1:8881/eureka/

spring:
  #profiles: peer2  #沒做環境配置,注釋掉
  application:
    name: tmsapi-discovery-server

  啟動兩個服務,成功瀏覽器輸入:http://peer1:8881/ 和http://peer2:8882/,同一個Application中就有兩個實例了
  peer1:

  

  peer2:

  

  至此Eureka Server集群就搭建成功了。

 

  Eureka相關資料:

  https://blog.csdn.net/neosmith/article/details/53131023


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM