首页 > 编程知识 正文

eureka入门,eureka的配置文件

时间:2023-05-06 00:13:56 阅读:196479 作者:4080

参考博客: 1、Eureka工作原理   2、五大核心组件 1、Eureka简介

  Eureka 是 Netflix 出品的用于实现服务注册和发现的工具,Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现.

  Eureka采用C-S的设计架构,包含Eureka Server 和Eureka Client两个组件。

  Eureka是SpringCloud的五大核心组件之一。是一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。负责微服务架构中的服务注册和发现

服务发现——Netflix Eureka

客服端负载均衡——Netflix Ribbon

断路器——Netflix Hystrix

服务网关——Netflix Zuul

分布式配置——Spring Cloud Config

2、基本原理 Applecation-server :服务提供者

服务启动后向Eureka Server注册,这样Server中的服务注册表中将会存储所有可用的服务节点的信息;Eureka Server 内部有二层缓存机制来维护整个注册表

Eureka Server会将注册信息向其他EurekaServer进行同步, Eureka Server之间通过复制的方式完成数据的同步;

Application-client:服务消费者

当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

注意:Eureka Client具有缓冲机制,如果Eureka Server全部宕机的情况,客户端依然可以利用缓存的信息消费其他服务API;

Renew: 服务续约 在默认配置中,Eureka Client 会每隔 30 秒发送一次心跳来续约。 通过续约来告知 Eureka Server 该 Eureka Client 运行正常,没有出现问题。默认情况下,如果 Eureka Server 在 90 秒内没有收到 Eureka Client 的续约,Eureka Server 端会将实例从其注册表中删除,注销该服务。注意:此时间可配置,一般情况不建议更改。 服务续约两个参数 服务续约任务的调用间隔时间,默认为30秒eureka.instance.lease-renewal-interval-in-seconds=30服务失效的时间,默认为90秒。eureka.instance.lease-expiration-duration-in-seconds=90 Eviction :服务剔除

  当 Eureka Client 和 Eureka Server 不再有心跳时,Eureka Server 会将该服务实例从服务注册列表中删除,即服务剔除。

Cancel: 服务下线

  Eureka Client 在程序关闭时向 Eureka Server 发送取消请求。 发送请求后,该客户端实例信息将从 Eureka Server 的实例注册表中删除。

  该下线请求不会自动完成,它需要调用以下内容:

DiscoveryManager.getInstance().shutdownComponent(); GetRegisty: 获取注册列表信息

  Eureka Client 从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与 Eureka Client 的缓存信息不同,Eureka Client 自动处理。

  如果由于某种原因导致注册列表信息不能及时匹配,Eureka Client 则会重新获取整个注册表信息。 Eureka Server 缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。Eureka Client 和 Eureka Server 可以使用 JSON/XML 格式进行通讯。在默认情况下 Eureka Client 使用压缩 JSON 格式来获取注册列表的信息。

获取服务是服务消费者的基础,所以必有两个重要参数需要注意: # 启用服务消费者从注册中心拉取服务列表的功能eureka.client.fetch-registry=true# 设置服务消费者从注册中心拉取服务列表的间隔eureka.client.registry-fetch-interval-seconds=30 Remote Call: 远程调用

  当 Eureka Client 从注册中心获取到服务提供者信息后,就可以通过 Http 请求调用对应的服务;服务提供者有多个时,Eureka Client 客户端会通过 Ribbon 自动进行负载均衡。

3、Eureka自我保护机制

当网络分区发生故障,导致该时间内没有心跳连接,但该服务本身还是健康运行的情况。Eureka通过“自我保护模式”来解决这个问题。

在自我保护模式中,Eureka Server会保护服务注册表中的信息,不再注销任何服务实例。

Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 即会进入自我保护机制。

Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。

通过在 Eureka Server 配置如下参数,开启或者关闭保护机制,生产环境建议打开: eureka.server.enable-self-preservation=true 4、Eureka与Zookeeper的区别

  CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。

Zookeeper保证CP

  Zookeeper 为主从结构,有leader节点和follow节点。当leader节点down掉之后,剩余节点会重新进行选举。选举过程中会导致服务不可用,丢掉了可用行。

Eureka保证AP

  Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。

当服务注册中心Server检测服务提供者宕机时,在服务中心将服务置为DOWN状态,并将该服务向其他订阅者发布,订阅者更新本地缓存信息;当Eureka Server节点在短时间内丢失过多的客户端时,这个节点会进入自我保护模式,不再注销任何服务; 5、上手 Eureka服务端依赖 <!--eureka-server服务端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> 服务端配置 server: port: 7001eureka: instance: hostname: eureka7001.com #eureka服务端的实例名称 client: register-with-eureka: false #false表示不向注册中心注册自己。 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 service-url: defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。 将微服务注册到Eureka中 <!-- 将微服务provider侧注册进eureka --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> spring-cloud-starter-config</artifactId> </dependency> 服务实例配置 eureka: client: #客户端注册进eureka服务列表内 service-url: defaultZone: http://localhost:7001/eureka 6、注意:

2018年11月底,Hystrix 宣布不再在开源版本上提供新功能。 2018年12月,Spring官方宣布Netflix的相关项目进入维护模式(Maintenance Mode)。

Spring官方对什么是Maintenance Mode给出了定义:

   一旦进入维护模式,Spring Cloud将不会对该组件添加新功能,但我们会继续修复相关的bug和一些安全性问题,同时考虑和review一些小的PR。

国内技术:Spring Cloud Alibaba

   2018年7月27日 在 Spring Cloud 孵化器仓库提交第一次代码,到 2019年8月1日 在 Alibaba 仓库发布第一个毕业版本。未来可期

建议在学习Spring Cloud Alibaba 前,先学习Spring Boot + Dubbo + Zookeeper

Dubbo很多功能都没有,为什么还有很多公司在使用Dubbo?

   因为Dubbo的性能比SpringCloud要高很多,dubbo使用rpc通信,SpringCloud使用http、restful通信,http连接3次握手、4次挥手,很花时间;并且Dubbo板块少,简单一些,开发速度快。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。