1. 程式人生 > >SpringCloud 進階之SpringCloud

SpringCloud 進階之SpringCloud

tools 修改 modules mic rest mod snap filter 註冊中心

技術分享圖片

1. Eureka 服務註冊與發現

  • Eureka 是一個基於REST的服務,用於服務的的註冊與發現;
  • Eureka采用C-S的設計架構,Eureka Server作為服務註冊功能的服務器,它是服務註冊中心;
  • Eureka包含兩個組件:Eureka Server 和 Eureka Client
    • Eureka Server提供服務註冊和發現;
    • Eureka Client是一個java客戶端;

技術分享圖片

1.1 三大角色

  • Eureka Server提供服務註冊和發現;
  • Service Provider服務提供方將自身服務註冊到Eureka,從而使服務消費方能夠找到;
  • Service Consumer服務消費方從Eureka獲取註冊服務列表,從而能夠消費服務;

1.2 Eureka 服務註冊中心Module(microservicecloud-eureka-7001)

// pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.noodles.springcloud</groupId>
    <artifactId>microservicecloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <artifactId>microservicecloud-eureka-7001</artifactId>
  <dependencies>
      <!-- eureka-server 服務端 -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
      </dependency>
      <!-- 修改後立即生效,熱部署 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
  </dependencies>
</project>


// application.yml
server:
  port: 7001

eureka:
  instance:
    hostname: localhost  #eureka服務端的實例名稱
  client:
    register-with-eureka: false # false 表示不向註冊中心註冊自己
    fetch-registry: false   # false 表示自己就是註冊中心,職責是維護服務實例,並不需要檢索服務
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
       #設置與Eureka Server交互的地址,查詢和註冊服務都需要依賴這個地址


// com.noodles.springcloud
// EurekaServer7001_App
@SpringBootApplication
@EnableEurekaServer  // EurekaServer 服務器端啟動類,接收其他微服務註冊進來
public class EurekaServer7001_App {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServer7001_App.class, args);
    }
}


// 測試
// 訪問: http://localhost:7001

1.3 將已有的部門微服務註冊進eureka服務中心(microservicecloud-provider-dept-8001)

// 修改microservicecloud-provider-dept-8001
// pom.xml 增加
<!-- 將微服務provider 註冊進 eureka -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>


// application.yml 增加
eureka:
  client: # 客戶端註冊進eureka服務列表內
    service-url:
      defaultZone: http://localhost:7001/eureka


// DeptProvider8001_App 主啟動類
@SpringBootApplication
@EnableEurekaClient // 本服務啟動後,自動註冊進eureka服務中
public class DeptProvider8001_App {

    public static void main(String[] args) {
        SpringApplication.run(DeptProvider8001_App.class, args);
    }
}


// 測試
// 先要啟動 EurekaServer,然後啟動 DeptProvicer8001_App
// 訪問:http://localhost:7001/

技術分享圖片

1.3.1 actuator 與註冊微服務信息完善

  • 主機映射名稱修改
  • 訪問信息有IP信息提示
  • 微服務info內容詳細信息

修改之前

技術分享圖片

修改之後

技術分享圖片

// 主機映射名稱修改
// 修改microservicecloud-provider-dept-8001
// application.xml
eureka:
  client: # 客戶端註冊進eureka服務列表內
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: microservicecloud-dept8001     # 主機映射名稱


// 訪問信息有IP信息提示
// 修改microservicecloud-provider-dept-8001
// application.xml
eureka:
  client: # 客戶端註冊進eureka服務列表內
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: microservicecloud-dept8001     # 主機映射名稱
    prefer-ip-address: true                     # 訪問路徑可以顯示IP地址


// 微服務info內容詳細信息
// 修改microservicecloud-provider-dept-8001
// pom.xml
<!-- actutator 監控信息完善 -->

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

// 修改父工程 microservicecloud
// pom.xml
<!-- dependencyManagement  -->
<build>
    <finalName>microservicecloud</finalName>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <delimiters>
                    <delimit>$</delimit>
                </delimiters>
            </configuration>
        </plugin>
    </plugins>
  </build>

<!-- modules -->

// 修改microservicecloud-provider-dept-8001
// application.yml
info:
  app.name: noodles-microservicecloud
  company.name: www.google.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$

1.3.2 Eureka 自我保護機制

技術分享圖片

// 修改 microservicecloud-eureka-7001
// 將自我保護機制關閉(不推薦)
// application.yml
eureka:
  server:
    enable-self-preservation: false

參考資料:

  • SpringCloud 進階

SpringCloud 進階之SpringCloud