Eureka注册中心、服务提供者和服务消费者

Eureka

Eureka 基础架构:

1、服务注册中心:Eureka 提供的服务端,提供服务注册与发现的功能。

2、失效剔除:对于那些非正常下线的服务实例(内存溢出、网络故障导致的),服务注册中心不能收到“服务下线”的请求,为了将这些无法提供服务的实例从服务列表中剔除,Eureka Server 在启动的时候会创建一个定时任务,默认每隔一段时间(默认 60s)将当前清单中超时(默认 90s)没有续约的服务剔除出去。

3、自我保护:Eureka Server 在运行期间,会统计心跳失败的比例在 15 分钟之内是否低于 85%,如果出现低于的情况(生产环境由于网络不稳定会导致),Eureka Server 会降当前的实例注册信息保护起来,让这些实例不过期,尽可能保护这些注册信息,但是在这保护期间内实例出现问题,那么客户端就很容易拿到实际上已经不存在的服务实例,会出现调用失败的情况,所以客户端必须有容错机制,比如可以使用请求重试、断路器等机制。在本地进行开发时可以使用 eureka.server.enable-self-preseervation=false 参数来关闭保护机制,以确保注册中心可以将不可用的实例剔除。

4、服务提供者:提供服务的应用,可以是 SpringBoot 应用也可以是其他的技术平台且遵循 Eureka 通信机制的应用。他将自己提供的服务注册到 Eureka,以供其他应用发现,(如:service 层)。

5、服务注册:服务提供者在启动的时候会通过发送 Rest 请求的方式将自己注册到 Eureka Server(服务注册中心)中,同时带上自身服务的一些元数据,Eureka Server 接收到这个Rest 请求后,将元数据存储在一个双层结构 Map 中,第一层的 key 是服务名,第二层 key是具体服务的实例名。

6、服务同步:若有两个或两个以上的 Eureka Server(服务注册中心)时,他们之间是互相注册的,当服务提供者发送注册请求到一个服务注册中心时,它会将该请求转发到集群中相连的其他注册中心,从而实现注册中心间的服务同步,这样服务提供者的服务信息可以通过任意一台服务中心获取到。

7、服务续约:在注册完服务之后,服务提供者会维护一个心跳来持续告诉 Eureka Server:“我还活着”,以防止 Eureka Server 的“剔除任务”将该服务实例从服务列表中排除出去。配置:eureka.instance.lease-renewal-in-seconds=30(续约任务的调用间隔时间,默认 30秒,也就是每隔 30 秒向服务端发送一次心跳,证明自己依然存活),eureka.instance.lease expiration-duration-in-seconds=90(服务失效时间,默认 90 秒,也就是告诉服务端,如
果 90 秒之内没有给你发送心跳就证明我“死”了,将我剔除)。

8、服务消费者:消费者应用从服务注册中心获取服务列表,从而使消费者可以知道去何处调用其所需要的服务,如:Ribbon 实现消费方式、Feign 实现消费方式。

9、获取服务:当启动服务消费者的时候,它会发送一个 Rest 请求给注册中心,获取上面注册的服务清单,Eureka Server 会维护一份只读的服务清单来返回给客户端,并且每三十秒更新一次。

10、服务调用:在服务消费者获取到服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元信息,采用 Ribbon 实现负载均衡。

11、服务下线:当服务实例进行正常的关闭操作时,它会触发一个服务下线的 Rest 请求给Eureka Server,告诉服务注册中心“我要下线了”。服务端接收到请求之后,将该服务状态设置为下线,并把下线时间传播出去。

服务注册中心搭建

  • 新建maven工程,在pom.xml添加jar包依赖
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>
  • 配置application.properties/application.yml
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
#      defaultZone: http://localhost:7001/eureka
      defaultZone: h
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值