Spring Cloud Eureka(二):Eureka 註冊中心體驗
阿新 • • 發佈:2018-12-12
1、Eureka 簡述
本文主要從應用角度體驗一下注冊中心的搭建和使用,後文會由淺入深學習Spring Cloud Eureka 的各種原理和機制。
Spring Cloud Eureka 是 Spring Cloud Netflix 元件的一部分,而 Spring Cloud Netflix 又是基於 netflix 的 eureka 封裝,所以最終的原始碼實現在於 eureka 中。廢話不多說,先上手體驗一下,後文在一步步深入瞭解。
2、Eureka Server 服務端搭建
1、建立專案,新增 maven 依賴
<modelVersion>4.0.0</modelVersion> <artifactId>lkf-cloud-eureka</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>lkf-cloud-eureka</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
2、建立啟動類,啟用註冊中心服務 @EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args);
}
}
3、新增配置檔案 appication
server.port=8888 eureka.instance.hostname=localhost #由於該應用為註冊中心,所以設定為false,代表不向註冊中心註冊自己 eureka.client.register-with-eureka=false #由於註冊中心的職責就是維護服務例項,它並不需要去檢索服務,所以也設定為false eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ eureka.server.wait-time-in-ms-when-sync-empty=0 #eureka.instance.prefer-ip-address=true #eureka.instance.ip-address=127.0.0.1 spring.application.name=lkf-cloud-eureka spring.cloud.config.uri=${CONFIG_SERVER_URL:http://localhost:8888}
4、啟動 Eureka Server 服務
啟動應用,訪問http://localhost:8888/,可以看到 Eureka Server 自帶的 UI 管理介面。
3、Eureka Client 客戶端搭建
1、建立專案 lkf-eureka-client,新增maven 依賴
<modelVersion>4.0.0</modelVersion> <artifactId>lkf-eureka-client</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>lkf-eureka-client</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
這裡如果沒有引用 spring-boot-starter-web 會報以下錯誤:
Destroy method on bean with name 'scopedTarget.eurekaClient' threw an exception: org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaInstanceConfigBean': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
2、建立啟動類,啟用 @EnableDiscoveryClient 或 @EnableEurekaClient
/**
* @author kaifeng
*/
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
3、新增配置檔案
server.port=8001
spring.application.name=lkf-eureka-client
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/
4、啟動服務,訪問註冊中心