SpringCloud(1)Eureka---服务注册与发现

SpringCloud(1)Eureka—服务注册与发现

Eureka是客户端发现。

1 创建服务注册中心

在这里,我们需要用的的组件上Spring Cloud Netflix的Eureka ,Eureka 是一个服务注册和发现模块。

1.1 创建maven工程

在这里插入图片描述

在这里插入图片描述

这样工程就创建完成了。

1.2 启动服务注册中心

在启动程序出加上@EnableEurekaServer注解即可

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }

}

这时候启动程序会报错

在这里插入图片描述

这是因为eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server既是一个server也是一个eureka client ,对于一个client来说必须要指定一个 server。

配置application.yml文件,把自己注册到自己上就可以(应用刚启动可能注册不上,注册的过程是一个发送心跳的过程,隔一段时间就会进行注册,这时候就会注册成功)

再启动还是有错误的,因为在默认设置下,Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为。使用

register-with-eureka: false

fetch-registry: false禁止掉即可

在这里插入图片描述

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    register-with-eureka: false
    fetch-registry: false
spring:
  application:
    name: eureka
server:
  port: 8761

1.3 创建服务提供者–eureka client

创建工程的过程与上面类似,选择Cloud Discovery—>Eureka Discovery即可

加@EnableDiscoveryClient注解声明这是一个client

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaclientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaclientApplication.class, args);
    }

}

application.yml中的配置

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  #这是你的server的地址
spring:
  application:
    name: client

启动服务(确保你上面的配置的server是启动中的,要不然找不到注册服务的服务中心),发现服务启动完成立即终止,也不会去向服务端注册

在这里插入图片描述
需要添加如下的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

再启动服务,发现在server端已经注册完成了

在这里插入图片描述

当你频繁启动的时候,会发现包如下的提示:

在这里插入图片描述

这是因为client与server端使用的是心跳机制,server端会不断的去检测client是否存活,会统计一个上线率,当低于某个值时就会出现上面的提示。开发环境下可以把他关掉,但是生产环境下务必保持开启。

在server端的yml添加如下配置:

  server:
    enable-self-preservation: false

1.4 Eureka的高可用

其实上面的配置是单体的,就是一个client向一个server注册,当这个server崩溃时服务补救挂掉了吗。怎么解决?可以多建立几台服务器,部署多个Eureka,然后向多个Eureka server之间互相注册。

配置两个服务,然后设置不同的端口。

在这里插入图片描述

然后启动的时候把server-port注释掉,启动EurekaApplication1,EurekaApplication1的配置如下:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka/  #这里就是把Eureka1注册到Eureka2上
    register-with-eureka: false
    fetch-registry: false
  server:
    enable-self-preservation: false
spring:
  application:
    name: eureka

启动EurekaApplication2,EurekaApplication2的配置如下:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  #这里就是把Eureka2注册到Eureka1上
    register-with-eureka: false
    fetch-registry: false
  server:
    enable-self-preservation: false
spring:
  application:
    name: eureka

启动客户端,客户端的注册地址只有 http://localhost:8761/eureka/,但是分别打开 http://localhost:8761和 http://localhost:8762我们发现client在两个server端都注册了,这是因为两个Eureka的server互相注册,当client注册到Eureka-server1时会同时同步到Eureka-server2上。这个时候Eureka-server1挂掉也是没关系的。

但是Eureka-server1挂掉之后,在重新注册client是注册不上的,因为一开始的时候注册地址只有Eureka-server1,所以要想Eureka-server1挂掉之后,重新注册client,只要注册地址多加一个Eureka-server2的地址即可。

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
spring:
  application:
    name: client

要是有更多个server时,server之间两两注册即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值