天天看點

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

1、建立【服務提供者】,即 Eureka Client

1.1、建立 Spring Boot 工程,工程名稱:springcloud-eureka-client

1.2、工程 pom.xml 檔案添加如下依賴:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>      

1.3、在工程啟動類中,添加注解 @EnableEurekaClient

package com.miniooc.client;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * EurekaClientApplication
 *
 * @author 宋陸
 * @version 1.0.0
 */
@EnableEurekaClient  // 啟用 eureka client 相關預設配置,在 Edgware 以後的版本該注解可以省略
@SpringBootApplication
public class EurekaClientApplication {

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

}
      

1.4、建立 Eureka Client 控制器類 EurekaClientController,提供一個 Restful 服務

package com.miniooc.client.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * EurekaClientController
 * 
 * 控制器
 *
 * @author 宋陸
 * @version 1.0.0
 */
@RestController
public class EurekaClientController {
    
    @Value("${server.port}")
    private String port;

    /**
     * 提供的一個restful服務,傳回内容格式:服務協定://伺服器位址:服務端口/服務uri
     *
     * @param request
     * @return
     */
    @RequestMapping("/info")
    public String info(HttpServletRequest request) {
        String message = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getServletPath();
        return message;
    }
}
      

1.5、建立工程配置檔案 application.yml ,配置内容:

server:
  port: 52601

spring:
  application:
    name: eureka-client

eureka:
  instance:
    hostname: localhost
    # 表示eureka client間隔多久去拉取服務注冊資訊,預設為30秒,如果要迅速擷取服務注冊狀态,可以縮小該值
    lease-renewal-interval-in-seconds: 5
    # 表示eureka server至上一次收到client的心跳之後,等待下一次心跳的逾時時間,在這個時間内若沒收到下一次心跳,則将移除該instance。
    # 預設為90秒
    # 如果該值太大,則很可能将流量轉發過去的時候,該instance已經不存活了。
    # 如果該值設定太小了,則instance則很可能因為臨時的網絡抖動而被摘除掉。
    # 該值至少應該大于 leaseRenewalIntervalInSeconds
    lease-expiration-duration-in-seconds: 10
  client:
    serviceUrl:
      defaultZone: http://localhost:9527/eureka/,http://localhost:9528/eureka/,http://localhost:9529/eureka/
      

1.6、啟動 Eureka Client 工程,打開浏覽器,通路 Eureka Client 提供的 Restful 路徑 http://localhost:52601/info

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

紅框處 服務通路成功,傳回内容格式:服務協定://伺服器位址:服務端口/服務uri

1.7、打開浏覽器,通路 服務中心 前台頁面 http://localhost:9527,http://localhost:9528,http://localhost:9529

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

紅框處 服務成功注冊到了服務中心,服務名稱:EUREKA-CLIENT。

至此,一個簡單的單點服務提供者搭建完成。

服務提供者提供一個Restful服務,服務的 uri 是 info,傳回内容格式:服務協定://伺服器位址:服務端口/服務uri

為了保證服務的高可用,我們需要把單點應用擴充為叢集部署。

接下來,我們對 Eureka Client 工程做些配置修改,來完成叢集部署。

2、搭建【服務提供者】叢集

2.1、建立工程配置檔案 application-client1.yml ,配置内容:

server:
  port: 52601

spring:
  application:
    name: eureka-client

eureka:
  instance:
    hostname: localhost
    # 表示eureka client間隔多久去拉取服務注冊資訊,預設為30秒,如果要迅速擷取服務注冊狀态,可以縮小該值
    lease-renewal-interval-in-seconds: 5
    # 表示eureka server至上一次收到client的心跳之後,等待下一次心跳的逾時時間,在這個時間内若沒收到下一次心跳,則将移除該instance。
    # 預設為90秒
    # 如果該值太大,則很可能将流量轉發過去的時候,該instance已經不存活了。
    # 如果該值設定太小了,則instance則很可能因為臨時的網絡抖動而被摘除掉。
    # 該值至少應該大于 leaseRenewalIntervalInSeconds
    lease-expiration-duration-in-seconds: 10
  client:
    serviceUrl:
      defaultZone: http://localhost:9527/eureka/,http://localhost:9528/eureka/,http://localhost:9529/eureka/
      

參照2.1,建立工程配置檔案 application-client2.yml,并修改 server.port 為 52602

參照2.1,建立工程配置檔案 application-client3.yml,并修改 server.port 為 52603

2.2、在 IntelliJ IDEA 內建開發環境中,添加 spring boot 啟動配置 EurekaClientC1,修改 Active profiles 為 client1

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)
SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)
SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

參照2.2, spring boot 啟動配置 EurekaClientC2,修改 Active profiles 為 client2

參照2.2, spring boot 啟動配置 EurekaClientC3,修改 Active profiles 為 client3

2.3、按照啟動配置 EurekaClientC1、EurekaClientC2、EurekaClientC3 依次啟動服務提供者

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

2.4、打開浏覽器,通路 服務提供者 提供的Restful路徑 http://localhost:52601/info,http://localhost:52602/info,http://localhost:52603/info

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)
SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)
SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

如上,三個 Restful 服務均傳回了資訊。資訊内容不同之處就在于端口不一樣。輸出這樣的資訊目的,是為了後面給我們做叢集負載均衡測試做準備。

2.5、打開浏覽器,通路 服務中心 前台頁面 http://localhost:9527,http://localhost:9528,http://localhost:9529

SpringCloud2.0 Eureka Client 服務注冊 基礎教程(三)

紅框處 三個服務成功注冊到了服務中心,服務名稱均為:EUREKA-CLIENT。

至此,一個簡單的服務提供者叢集部署搭建完成。

3、本章小結

本章主要講解了 Eureka Client 服務提供者的搭建,并講解如果擴充為叢集應用。

下一章,我們将講解服務發現。如何調用服務提供者提供的服務。以及服務調用的負載均衡。

《SpringCloud2.0 基礎教程》目錄

SpringCloud2.0 概述 基礎教程(一)

SpringCloud2.0 Eureka Server 服務中心 基礎教程(二)

SpringCloud2.0 Ribbon 服務發現 基礎教程(四)

SpringCloud2.0 Feign 服務發現 基礎教程(五)

SpringCloud2.0 Hystrix Ribbon 基于Ribbon實作斷路器 基礎教程(六)

SpringCloud2.0 Hystrix Feign 基于Feign實作斷路器 基礎教程(七)

SpringCloud2.0 Hystrix Dashboard 斷路器名額看闆 基礎教程(八)

SpringCloud2.0 Turbine 斷路器叢集監控 基礎教程(九)

SpringCloud2.0 Zuul 網關路由 基礎教程(十)

SpringCloud2.0 Config 分布式配置中心 基礎教程(十一)

分享更多程式設計知識和技巧

繼續閱讀