SpringCloud-Eureka

Eureka是啥?
它是一个 Netflix 公司开发的一款开源的服务注册与发现组件。
Eureka采用的是C/S的一个架构形式,含有一下两个主要模块
1-Eureka Server:服务注册中心,它是一个单独服务。它维护了一个可用服务列表,存储了所有注册到 Eureka Server 的可用服务的信息(说白了它就是个中心,所有的服务都要把自己在哪之类的信息告诉它),而这些信息默认在 http://localhost:8761/ 这个页面中可以看到
2-Eureka Client: 客户端,通常就是我们大系统中的各个微服务,在我们的微服务中引入这个客户端,它(Eureka Client)就能帮我们把我们这个微服务的相关信息注册到上面的Eureka Server中,并且按照一定频率的心跳通信,告诉Eureka Server自己还活着,别忘了我。默认周期是30
当然超过默认时间90秒,没发心跳包的话,Eureka Server就会把这个服务从自己的列表中删掉。

服务的注册和发现过程是什么样呢?上图↓
Eureka 原理图
其中包含三个角色
1-服务注册中心,就是Eureka Server。
2-服务的提供者,就是Eureka Client,将自己提供的服务注册到注册中心,供消费者调用。
3-服务的消费者,也还是Eureka Client,从注册中心获取服务列表,调用自己需要的服务。

服务注册中心(Eureka Serve)怎么实现呢,很简单
首先建立一个SpringBoot项目然后引入Eureka Server的依赖(留意SpringBoot版本与SpringCloud的版本,版本不兼容的话会有问题的)

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

然后在yml文件中进行相关配置

server:
  port: 8761  #该 Module 的端口号

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称,

  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版服务注册中心

最后在SpringBoot项目的启动类上加上 @EnableEurekaServer 注解。

客户端的如何实现?
首先我们的Module中引入Eureka Clicent的依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

然后在yml中进行配置

eureka:
  client: #将客户端注册到 eureka 服务列表内
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka  #这个地址是 8761注册中心在 application.yml 中暴露出来额注册地址 (单机版)

最后在当前Module的启动类上加上 @EnableEurekaClient 注解即可,别加错后缀是Client。

提一下,Eureka Server是可以集群部署的
修改如下几个参数就好

    register-with-eureka: true
    fetch-registry: true
    service-url: //在后面添加其他注册中心的最低值就行

Eureka Server的自我保护机制
再说说Eureka Server的自我保护机制大致就是上面所说的如果 Eureka Server 在一段时间内没有接收到 Eureka Client 的心跳,那么 Eureka Server 就会开启自我保护模式,将所有的 Eureka Client 的注册信息保护起来,而不是直接从服务注册表中移除。一旦网络恢复,这些 Eureka Client 提供的服务还可以继续被服务消费者消费,这个机制默认是开启的

eureka:
  server:
    enable-self-preservation: false # false 关闭 Eureka 的自我保护机制,默认是开启,一般不建议大家修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值