eureka的几个配置

声明:本文不提供任何开发相关的指导方向,文章只是个人在学习时所做的记录信息,用来供个人备忘,同时由于技术更新迭代速度很快,本人并不保证信息在各个版本下的准确性,本文记录时所使用的SpringCloud版本为:2.2.1

1.单服务器模式

  • (1)服务器端
    pom文件添加如下依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server

设置服务器端口

# 设置服务器端口
server.port=8761

由于是服务器端,设置以下两个参数,否则启动服务器会报异常(异常不影响使用)。对于服务提供者与服务调用者,以下两个参数可以视情况进行设置,正常来说,服务提供者需要将服务注册到eureka,因此第一个参数保持默认(true),第二个参数可以设置为false;服务调用者需要从eureka拉取注册服务信息,因此第二个参数保持默认(true),第一个参数可以设置为false。但是在实际开发中,服务之间一般都是互相调用,很少有服务只做为服务提供者或者服务调用者,因此在实际开发中,以下两个参数在非服务器端基本都是保持默认(true)即可。

# 不注册到eureka
eureka.client.register-with-eureka=false
# 不从eureka拉取注册服务信息
eureka.client.fetch-registry=false

启动类添加如下注解

@EnableEurekaServer
  • (2)服务提供者
    pom文件添加如下依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

设置服务器端口

# 设置服务器端口
server.port=8100

设置服务名称

# 设置服务名称
spring.application.name=eureka-single-server

设置服务实例主机名称

# 设置服务实例主机名称
eureka.instance.hostname=localhost

设置服务注册地址

# 设置服务注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

启动类添加如下注解

@EnableEurekaClient
  • (3)服务调用者
    pom文件添加如下依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client


    org.springframework.cloud
    spring-cloud-starter-netflix-ribbon

设置服务器端口

# 设置服务器端口
server.port=9000

设置服务名称,做为服务调用者,可以不进行此设置

# 设置服务名称
spring.application.name=eureka-single-invoke

设置服务实例主机名称

# 设置服务实例主机名称
eureka.instance.hostname=localhost

设置服务注册地址,做为服务调用者,可以不进行此设置

# 设置服务注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

启动类添加如下注解

@EnableEurekaClient

同时使用Ribbon做负载均衡,使用RestTemplate做为服务调用方式,可以在启动类添加如下代码

@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
    return new RestTemplate();
}

调用服务时,注入RestTemplate

@Autowired
RestTemplate restTemplate;

使用RestTemplate调用服务即可

String url = "http://eureka-single-server/provider";
String result = restTemplate.getForObject(url, String.class);

2.集群模式

  • (1)服务器端
    pom文件添加如下依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server

配置文件如下

server:
  port: 8761
spring:
  application:
    name: eureka-server
eureka:
  instance:
    hostname: slave1
  client:
    service-url:
      defaultZone: http://slave2:8762/eureka/
server:
  port: 8762
spring:
  application:
    name: eureka-server
eureka:
  instance:
    hostname: slave2
  client:
    service-url:
      defaultZone: http://slave1:8761/eureka/

做为服务器端,需要保证以下2点:

  • (A)服务名称相同;
  • (B)注册地址为相互注册。

启动类添加如下注解

@EnableEurekaServer
  • (2)服务提供者
    pom文件添加如下依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

配置文件如下

server:
  port: 8100
spring:
  application:
    name: eureka-multi-server
eureka:
  instance:
    hostname: localhost
  client:
    service-url:
      defaultZone: http://slave1:8761/eureka/,http://slave2:8762/eureka/
server:
  port: 8200
spring:
  application:
    name: eureka-multi-server
eureka:
  instance:
    hostname: localhost
  client:
    service-url:
      defaultZone: http://slave1:8761/eureka/,http://slave2:8762/eureka/

做为服务提供者的集群,配置信息中只需要保证在不同的服务器启动即可(IP不同、端口不同),注册地址需要为服务器集群地址(多个服务器地址以“,”分隔)。

启动类添加如下注解

@EnableEurekaClient
  • (3)服务调用者
    pom文件添加如下依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client


    org.springframework.cloud
    spring-cloud-starter-netflix-ribbon

配置文件如下

server:
  port: 9000
spring:
  application:
    name: eureka-multi-invoke
eureka:
  instance:
    hostname: localhost
  client:
    service-url:
      defaultZone: http://slave1:8761/eureka/,http://slave2:8762/eureka/

启动类添加如下注解

@EnableEurekaClient

同时使用Ribbon做负载均衡,使用RestTemplate做为服务调用方式,可以在启动类添加如下代码

@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
    return new RestTemplate();
}

调用服务时,注入RestTemplate

@Autowired
RestTemplate restTemplate;

使用RestTemplate调用服务即可

String url = "http://eureka-multi-server/provider";
String result = restTemplate.getForObject(url, String.class);

3.健康自检

pom文件添加如下依赖


    org.springframework.boot
    spring-boot-starter-actuator

配置文件如下

# 设置自动检测点,默认只开放了info、health两个端点
management.endpoints.web.exposure.include=*
# eureka将服务实例状态信息更新到服务器的时间间隔,默认30s
eureka.client.instance-info-replication-interval-seconds=10
# 客户端实例向服务器发送心跳的时间间隔
eureka.instance.lease-renewal-interval-in-seconds=20
# 服务器检测客户端心跳的时间间隔
eureka.instance.lease-expiration-duration-in-seconds=90
# 客户端去服务器端抓取注册表的时间间隔
eureka.client.registry-fetch-interval-seconds=20

你可能感兴趣的:(eureka的几个配置)