Eureka(服务/提供/消费)
基本知识
EUreka类似zookeeper。
Eureka分为两个端,一个是服务端就像zookeeper的注册中心一样,一个是客户端用于项目的服务提供者把项目注册到注册中心。
配置eureka
服务端
1.创建一个springboot项目,并导入eureka服务端依赖
<!--同意管理版本呢-->
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.0-M5</spring-cloud.version>
</properties>
<dependencies>
<!--eureka依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springtest依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!--springcloud依赖-->
<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>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
2.编译配置文件
server:
port: 6998
eureka:
instance:
hostname: eureka6998.com #Eureka服务端的实例名称
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
3.开启eureka
在主启动类上开启eureka
@EnableEurekaServer//开启eureka
@SpringBootApplication
public class SpringcloudEks6998Application {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEks6998Application.class, args);
}
}
4.测试
地址为配置文件中的Eureka服务端的实例名称
eureka:
instance:
hostname: eureka6998.com #Eureka服务端的实例名称
客户端(服务提供者)
1.导入依赖(导入是eureka的客户端依赖,不是服务端的)
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.0-M5</spring-cloud.version>
</properties>
<dependencies>
<!--eureka-client依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--actuator完善监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.0</version>
</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>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
2.配置文件
server:
port: 7002
spring:
application:
name: springcloud-ekc-7002 #应用名称
eureka:
client:
service-url:
defaultZone: http://eureka6999.com:6998/eureka/ #注册那个注册eureka服务端
instance:
instance-id: this is ek client,port is 7002 #说明
info: #用于描述这个服务提供者的作用,了解即可
app.name: 我是ek客户端,端口号为7002
auth: 作者是姜兴
3.开启eureka客户端
在主启动类上添加@EnableEurekaClient
@SpringBootApplication
@EnableEurekaClient
public class SpringcloudEkc7002Application {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEkc7002Application.class, args);
}
}
4.测试
在eureka服务中心可以看到我们的服务提供者注册到里面去了。application为我们配置的名称 UP
instance-instance-id.点击这个连接可以进入另外一个页面,用户展示info配置的信息。不过记得导入依赖,否则跳转到错误页面。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
集群eureka
Eureka的集群还是比较简单的。我们只需要把配置文件的service-url-defaultZone添加我们的 Eureka服务端即可。
1.创建3个eurekaf服务端,端口分别为6998、6999、7000.依赖和单机版一样。和一个eureka客户端。
2.eureka服务端配置文件:
server:
port: 6998
eureka:
instance:
hostname: eureka6998.com #Eureka服务端的实例名称
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
service-url: # 表示集群的地址
defaultZone: http://eureka6999.com:6999/eureka/,http://eureka7000.com:7000/eureka/
server:
port: 6999
eureka:
instance:
hostname: eureka6999.com #Eureka服务端的实例名称
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
service-url:
defaultZone: http://eureka6998.com:6998/eureka/, http://eureka7000.com:7000/eureka/
server:
port: 7000
eureka:
instance:
hostname: eureka7000.com #Eureka服务端的实例名称
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
service-url:
defaultZone: http://eureka6999.com:6999/eureka/, http://eureka6998.com:6998/eureka/
我们是在一个主机上实现的,为了看出集群效果,我们配置一下host文件。
这个操作是一个映射操作,目的是为了使我们在单机的配置像在很多服务器上一样,其实没什么用。简单来说就是
service-url-defaultZone: http://eureka6999.com:6999/eureka/, http://eureka6998.com:6998/eureka/的配置不用localhost代替,在访问是用我们设置好的名称访问。
eureka集群配置和单机一样,只不过是配置文件中的defaultZone有多个路径。也就是互相监视。
3.Eureka客户端注册
服务提供者注册到集群的eureka注册中心,在配置中设置defaultZone的值为eureka的地址
server:
port: 7002
spring:
application:
name: springcloud-ekc-7002
eureka:
client:
service-url:
defaultZone: http://eureka6999.com:6998/eureka/,http://eureka6999.com:6999/eureka/,http://eureka7000.com:7000/eureka/
instance:
instance-id: this is ek client,port is 7002
info:
app.name: 我是ek客户端,端口号为7002
auth: 作者是姜兴
测试:
6998端口的Eureka
6999端口的Eureka
7000端口的Eureka