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
紅框處 服務通路成功,傳回内容格式:服務協定://伺服器位址:服務端口/服務uri
1.7、打開浏覽器,通路 服務中心 前台頁面 http://localhost:9527,http://localhost:9528,http://localhost:9529
紅框處 服務成功注冊到了服務中心,服務名稱: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
參照2.2, spring boot 啟動配置 EurekaClientC2,修改 Active profiles 為 client2
參照2.2, spring boot 啟動配置 EurekaClientC3,修改 Active profiles 為 client3
2.3、按照啟動配置 EurekaClientC1、EurekaClientC2、EurekaClientC3 依次啟動服務提供者
2.4、打開浏覽器,通路 服務提供者 提供的Restful路徑 http://localhost:52601/info,http://localhost:52602/info,http://localhost:52603/info
如上,三個 Restful 服務均傳回了資訊。資訊内容不同之處就在于端口不一樣。輸出這樣的資訊目的,是為了後面給我們做叢集負載均衡測試做準備。
2.5、打開浏覽器,通路 服務中心 前台頁面 http://localhost:9527,http://localhost:9528,http://localhost:9529
紅框處 三個服務成功注冊到了服務中心,服務名稱均為:EUREKA-CLIENT。
至此,一個簡單的服務提供者叢集部署搭建完成。
3、本章小結
本章主要講解了 Eureka Client 服務提供者的搭建,并講解如果擴充為叢集應用。
下一章,我們将講解服務發現。如何調用服務提供者提供的服務。以及服務調用的負載均衡。