Eureka的注册和发现
基础架构
Eureka架构中的三个核心角色:
1.服务注册中心
Eureka的服务端应用,提供服务注册和发现功能
2.服务提供者
提供服务的应用
3.服务消费者
消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。
创建Eureka服务注册中心
1.创建SpringBoot项目,添加 Eureka Server 依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.在配置文件中添加Eureka的配置
#应用程序名称
spring:
application:
name: eureka-server
#端口号
server:
port: 2001
eureka:
server:
enable-self-preservation: false #选择是否开启自我保护机制
instance:
hostname: eureka1 #应用实例主机名,eureka 集群服务器之间,通过 hostname 来区分
client:
#是否向注册中心注册自己,单台Eureka使用false,多台使用true
register-with-eureka: false
#是否从Eureka获取注册信息,单台Eureka使用false,多台使用true
fetch-registry: false
# 服务续约(心跳)频率,单位:秒,缺省30
eureka.instance.lease-renewal-interval-in-seconds = 30
# 服务失效时间,失效的服务将被剔除。单位:秒,默认:90
eureka.instance.lease-expiration-duration-in-seconds = 90
eureka 的自我保护状态:心跳失败的比例,在15分钟内是否超过85%,如果出现了超过的情况,Eureka Server会将当前的实例注册信息保护起来,同时提示一个警告,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。也就是不会注销任何微服务
3.在启动类上加载@EnableEurekaServer注解
package cn.tedu.sp05;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class Sp05EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(Sp05EurekaApplication.class, args);
}
}
创建Eureka服务提供者
1.创建SpringBoot项目,添加Eureka Discovery Client依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
在配置文件中,添加配置
#Eureka服务注册中心的地址
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka
eureka.instance.lease-renewal-interval-in-seconds
#心跳间隔时间,默认 30 秒
eureka.client.registry-fetch-interval-seconds
拉取注册信息间隔时间,默认 30 秒
在启动类中添加 @EnableDiscoveryClient 注解,可以省略
package cn.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient //可省略
public class EurekaClient {
public static void main(String[] args) {
SpringApplication.run(Sp02ItemserviceApplication.class, args);
}
}