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 服務提供者的搭建,並講解如果擴展為集群應用。
下一章,我們將講解服務發現。如何調用服務提供者提供的服務。以及服務調用的負載均衡。