<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>
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); } }
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; } }
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/
紅框處 服務訪問成功,返回內容格式:服務協議://服務器地址:服務端口/服務urijava
紅框處 服務成功註冊到了服務中心,服務名稱:EUREKA-CLIENT。web
至此,一個簡單的單點服務提供者搭建完成。spring
服務提供者提供一個Restful服務,服務的 uri 是 info,返回內容格式:服務協議://服務器地址:服務端口/服務uri瀏覽器
爲了保證服務的高可用,咱們須要把單點應用擴展爲集羣部署。bash
接下來,咱們對 Eureka Client 工程作些配置修改,來完成集羣部署。服務器
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 爲 52602restful
參照2.1,建立工程配置文件 application-client3.yml,並修改 server.port 爲 52603網絡
參照2.2, spring boot 啓動配置 EurekaClientC2,修改 Active profiles 爲 client2app
參照2.2, spring boot 啓動配置 EurekaClientC3,修改 Active profiles 爲 client3負載均衡
如上,三個 Restful 服務均返回了信息。信息內容不一樣之處就在於端口不同。輸出這樣的信息目的,是爲了後面給咱們作集羣負載均衡測試作準備。
紅框處 三個服務成功註冊到了服務中心,服務名稱均爲:EUREKA-CLIENT。
至此,一個簡單的服務提供者集羣部署搭建完成。
本章主要講解了 Eureka Client 服務提供者的搭建,並講解若是擴展爲集羣應用。
下一章,咱們將講解服務發現。如何調用服務提供者提供的服務。以及服務調用的負載均衡。