Springcloud注册中心之Eureka

介绍

Springcloud注册中心目前有三种:Eureka、zookeeper、Consul。Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。

Eureka由两个部分组成:Eureka服务端和客户端,服务端就是注册中心,用来接收其他服务的注册,客户端则是一个Java客户端,用来注册,并可以实现负载均衡等功能。
在这里插入图片描述
从上图可以看出Eureka有三个角色:

  • Eureka Server:注册中心
  • Eureka Consumer:服务消费者
  • Eureka Provider:服务提供者

搭建Eureka Server

1.依赖
<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>
2.启动类添加@EnableEurekaServer注解
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
3.配置文件application.yml
spring:
  application:
    name: eureka-server

server:
  port: 1111
eureka:
  client:
    # 是否从eureka获取信息
    fetch-registry: false
    # 是否注册到服务中心
    register-with-eureka: false
    service-url:
      defaultZone: http://localhost:1111/eureka
  • eureka.client.register-with-eureka :表示是否将自己注册到Eureka Server,默认为true。
  • eureka.client.fetch-registry :表示是否从Eureka Server获取注册信息,默认为true。
  • eureka.client.serviceUrl.defaultZone=设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
4.启动并用http://localhost:1111/访问

在这里插入图片描述

Eureka集群

1.修改host文件
127.0.0.1 eurekaA eurekaB
2.分别创建application-a.yml,application-b.yml文件
spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eurekaB:1112/eureka
  instance:
    hostname: eurekaA
server:
  port: 1111

spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://eurekaA:1111/eureka
  instance:
    hostname: eurekaB
server:
  port: 1112

3.打包启动
  • 打包
    在这里插入图片描述
    如上图点击或者执行如下命令
mvn clear package
  • 启动
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=a
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=b

在这里插入图片描述

Eureka其他配置

服务续约

Eureka Client注册到Eureka Server上之后,事情还没有结束,刚刚开始而已。注册成功后,默认情况下,Eureka每隔30秒就要向Eureka Server发送一条心跳消息,来告诉Eureka Server我还在运行。如果Eureka Server连续90秒都没有收到Eureka Client的续约消息(连续三次没发送),它就会认为Eureka Client已经掉线了,会将掉线的Eureka从当前的服务列表中剔除。

服务续约的两个配置属性(一般不建议修改):

# 续约时间
eureka.instance.lease-renewal-interval-in-seconds= 30
# 服务失效时间
eureka.instance.lease-expiration-duration-in-seconds= 90
自我保护机制

自我保护机制默认是开启的,我们可以设置关闭

eureka.server.enable-self-preservation= false

项目地址

github

posted @ 2020-03-30 14:42  麦田的老哥  阅读(17)  评论(0)    收藏  举报