单机版Eureka 搭建
第一步新增依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>eureka_service</artifactId>
<version>1.0-SNAPSHOT</version>
<name>eureka_service</name> <!-- FIXME change it to the project's website -->
<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.SR2</spring-cloud.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-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>
</project>
第二步配置文件yml
spring:
application:
name: eureka-service
server:
port: 8701 # 端口自己决定
# 指定当前eureka客户端的注册地址,也就是eureka服务的提供方,当前配置的服务的注册服务方
eureka:
instance:
prefer-ip-address: true
hostname: eureka-center
instance-id: eureka-service
instance-info-replication-interval-seconds: 5
client:
registerWithEureka: false# 单点的时候设置为 false 禁止注册自身
fetchRegistry: false
serviceUrl:
defaultZone: http://localhost:${server.port}/eureka
# eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上
# 默认30s
server:
response-cache-update-interval-ms: 3000
# 启用主动失效,并且每次主动失效检测时间间隔为3s
eviction-interval-timer-in-ms: 3000
# 关闭自我保护机制
enable-self-preservation: false
第三步注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
开始运行
服务搭建
我们下面创建一个服务client1
引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>client1_service</artifactId>
<version>1.0-SNAPSHOT</version>
<name>client1_service</name> <!-- FIXME change it to the project's website -->
<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.SR2</spring-cloud.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--ribbon服务类负载均衡组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!--hystrix服务类熔断组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- 添加Fegin服务调用依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-eureka</artifactId>
<version>2.2.5</version>
</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>
</project>
添加注解
package org.example;
import org.example.config.MyRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient
public class Client1ServerApplication {
public static void main(String[] args) {
SpringApplication.run(Client1ServerApplication.class, args);
}
}
配置文件
server:
port: 8702 # 端口自己决定
# 指定当前eureka客户端的注册地址,也就是eureka服务的提供方,当前配置的服务的注册服务方
eureka:
instance:
# preferIpAddress: true
# 客户端在注册时使用自己的IP而不是主机名,缺省:false
prefer-ip-address: true
instance-id: ${spring.cloud.client.ip-address}:${server.port} #注册中心右边的位置的显示
client:
serviceUrl:
# 注册中心地址
defaultZone: http://localhost:8701/eureka
# 是否从Eureka获取注册信息,缺省:true
# 一般情况下,Eureka服务端是不需要的
fetch-registry: true
spring:
application:
name: client1-service
启动服务
单服务多实例搭建
我们通常情况下单个服务都会启动多个实例 直接复制client1,新增clinet2和client3服务
将两个实例指向同一个注册中心地址
client:
serviceUrl:
# 注册中心地址
defaultZone: http://localhost:8701/eureka
集群版注册中心搭建
eureka8701配置
spring:
application:
name: eureka-service
server:
port: 8701 # 端口自己决定
# 指定当前eureka客户端的注册地址,也就是eureka服务的提供方,当前配置的服务的注册服务方
eureka:
instance:
prefer-ip-address: true
hostname: eureka8701
instance-info-replication-interval-seconds: 5
client:
registerWithEureka: true # 单点的时候设置为 false 禁止注册自身
fetchRegistry: false
serviceUrl:
defaultZone: http://eureka8701.com:${server.port}/eureka,http://eureka8700.com:8700/eureka
# eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上
# 默认30s
server:
response-cache-update-interval-ms: 3000
# 启用主动失效,并且每次主动失效检测时间间隔为3s
eviction-interval-timer-in-ms: 3000
# 关闭自我保护机制
enable-self-preservation: false
eureka8700配置
spring:
application:
name: eureka-service
server:
port: 8700 # 端口自己决定
# 指定当前eureka客户端的注册地址,也就是eureka服务的提供方,当前配置的服务的注册服务方
eureka:
instance:
prefer-ip-address: true
hostname: eureka8700
instance-info-replication-interval-seconds: 5
client:
registerWithEureka: true # 单点的时候设置为 false 禁止注册自身
fetchRegistry: false
serviceUrl:
defaultZone: http://eureka8700.com:${server.port}/eureka,http://eureka8701.com:8701/eureka
# eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上
# 默认30s
server:
response-cache-update-interval-ms: 3000
# 启用主动失效,并且每次主动失效检测时间间隔为3s
eviction-interval-timer-in-ms: 3000
# 关闭自我保护机制
enable-self-preservation: false