Eureka基础知识

news/2024/9/22 21:13:37/

Eureka是Netflix开源的一个服务发现框架,主要用于构建基于微服务架构的应用程序。它允许服务实例自动注册和发现,从而实现了服务之间的协调和通信。Eureka的设计目标是简单、可靠和高可用的服务注册和发现。

在微服务架构中,Eureka扮演了两个重要的角色:服务注册和服务发现。服务提供者启动时向Eureka注册自己的信息,Eureka保存这些信息,包括服务的IP地址、端口号、状态等。服务消费者则通过Eureka Server发现服务,并消费。Eureka Server会根据服务名称来查询保存的信息,拉取服务。

Eureka具有一些重要的特性。例如,当注册中心出现故障时,客户端之间仍然可以通过原有的注册表进行调用;注册中心重启后,客户端会继续注册进来。此外,Eureka还具有自我保护模式,当在一定时间内(默认是60秒)超过一定比例的客户端节点没有正常的心跳时,Eureka会认为客户端与注册中心出现了网络故障,然后自动进入自我保护模式。

Eureka的应用场景主要集中在需要动态服务发现和负载均衡的场景中。例如,在一个由多个微服务组成的复杂系统中,每个微服务可能都需要动态地找到其他服务的实例,以便进行通信和协作。Eureka可以作为这些微服务的服务注册中心,提供服务的注册、发现和健康检查功能。

Eureka是一个基于REST的服务,其核心作用是服务注册与发现,用于定位运行在AWS域中的中间层服务,以实现负载均衡和中间层服务故障转移。下面我将从技术角度详细阐述Eureka的运作机制和一些核心概念。

Eureka Server
Eureka Server是Eureka的服务注册中心,它负责管理所有服务的注册信息。当服务提供者启动时,它会向Eureka Server发送注册请求,包含服务的主机名、IP地址、端口号等元数据。Eureka Server接收这些注册信息,并维护一个服务注册表,供服务消费者查询。同时,Eureka Server还负责处理服务续约,即服务提供者定期向Eureka Server发送心跳信息,以表明其仍然可用。

Eureka Client
Eureka Client是一个Java客户端,用于简化与服务注册中心的交互。服务提供者和服务消费者都使用Eureka Client进行注册和发现服务。Eureka Client会与服务注册中心保持通信,定期发送心跳信息,并在需要时从注册中心获取服务列表。此外,Eureka Client还具备内置的负载均衡功能,可以在多个服务实例之间进行负载均衡,以确保请求的均匀分布。

元数据
Eureka支持两种类型的元数据:标准元数据和自定义元数据。标准元数据包括主机名、IP地址、端口号等,这些信息在注册时会被发布到服务注册表中,用于服务之间的调用。自定义元数据则允许用户根据具体需求定义自己的键值对,这些信息可以在远程客户端中访问,用于更灵活的服务配置和管理。

心跳机制
Eureka通过心跳机制来确保服务的可用性。Eureka Client会定期向Eureka Server发送心跳信息,如果Eureka Server在一定时间内没有收到某个服务的心跳,它会将该服务从注册表中移除,以防止将请求发送到已不可用的服务上。

自我保护模式
Eureka还具备自我保护模式。当Eureka Server在一段时间内没有收到足够数量的心跳信息时(例如,网络分区或大量服务实例突然下线),Eureka会进入自我保护模式,保护注册中心内的服务实例信息不被删除。这样做是为了避免在网络不稳定的情况下,由于误判导致的服务不可用。当网络恢复稳定后,Eureka会自动退出自我保护模式。

总的来说,Eureka通过简洁的设计和强大的功能,为微服务架构提供了可靠的服务注册与发现机制。它使得服务之间的通信和协作变得更加简单和高效,是构建微服务应用的重要工具之一。


http://www.ppmy.cn/news/1444368.html

相关文章

(十三)Servlet教程——Servlet中Cookie的使用

1.什么是Cookie Cookie意为甜饼,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器都支持Cookie。 由于HTTP是一种无状态的协议,服务器仅从网络连接上无法知道客户身份。于是就客户端颁发一个通行证,无…

SpringCloud之Feign集成Ribbon

Feign定义【可跳过】 Spring Cloud Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。其英文表意为“假装,伪装,变形”,是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求&#x…

[Collection与数据结构] PriorityQueue与堆

1. 优先级队列 1.1 概念 前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然…

设计模式学习笔记 - 项目实战三:设计实现一个支持自定义规则的灰度发布组件(设计)

概述 上篇文章,我们介绍了灰度组件的一个需求场景,将公共服务平台的 RPC 接口,灰度替换为新的 RESTful 接口,通过灰度逐步放量,支持快速回滚等手段,来规避代码质量问题带来的不确定性风险。 跟前面两个框…

彻底理解Python相关的排序方法

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取python编程资料 在Python中,列表排序是一项基础而重要的任务,它允许你对一系列元素进行有…

浏览器——Microsoft Edge

Microsoft Edge 浏览器具有诸多功能特点和使用技巧 核心知识点和实用心得摘要: 性能优化: 睡眠标签:Edge 浏览器引入了睡眠标签功能,旨在降低内存占用和CPU使用率。当标签页长时间未活动时,系统会自动将其置于睡眠状态…

图片懒加载vue

这里只能实现图片的懒加载,不能实现其他的懒加载。 加载插件: npm install vue-lazyload --save在main.js中写入插件 // 图片懒加载 import VueLazyload from "vue-lazyload"; const app createApp(App) app.use(VueLazyload,{preLoad: 1.…

Windows电脑的显存容量查看

要查看Windows电脑的显存容量,可以按照以下步骤进行: 1、通过系统信息查看: 在Windows操作系统中,您可以使用系统信息来查看显存容量。 按下Win键 R打开“运行”对话框,然后输入“msinfo32”并按回车键。 在打开的系…