【SpringCloud】详解Eureka注册中心

简介: 【SpringCloud】详解Eureka注册中心

什么是Eureka

Eureka是微服务框架中负责完成服务治理的组件,我感觉跟之前学的zookeeper差不多,就是一个服务注册中心(zk+dubbo),简单点说就是一个管理服务的中心,它包含服务注册中心,服务注册和发现机制。

  • 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态


架构

Eureka采用了C-S的设计架构,一共有两个端,服务端Eureka Server和客户端Eureka Client

Eureka Server:提供服务注册服务,即作为服务注册功能的服务器,是服务注册的中心,而系统中的其他微服务使用Eureka的客户端来连接到服务端并维持心跳连接,这样开发维护人员都可以从服务端监控微服务是否正常运行,而SpringCloud的其他组件在配置Eureka之后,也就可以在Eureka发现其他服务。

Eureka Client:是一个java客户端,它使与服务的交互变得更加容易。客户端还有一个内置的负载均衡器,可以进行基本的循环负载均衡,在应用启动后,将会向Eureka Server发送心跳(默认周期30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

什么是服务治理

无数个服务提供者和服务调用者,我们就需要使用服务治理,管理服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册

Eureka高可用

微服务RPC远程服务调用最核心的是搭建集群,避免单点故障

集群图解

部署实例图解

上图的异地部署服务注册中心Eureka就实现了高可用和异地容灾。

重点就是修改配置文件,其他的基本一致

7001和7002互相注册

7001的配置文件如下

7002配置修改端口、实例名称和注册中心即可

将客户端注册中心切换为红色字体的集群版配置

Eureka自我保护机制

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式Eureka将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销服务

如果看到如下提示,就表示Eureka进入了保护模式

简单点说就是某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对微服务的信息进行保存

为什么会产生Eureka自我保护机制

为了防止Eureka Client可以正常运行,但是与EurekaServer网络不通的情况下,EurekaServer不会立刻注销服务

什么是保护模式

默认情况下,如果Eureka在一定时间内没有收到某个微服务的心跳,EurekaServer将会注销服务,保护模式是当网络分区发生(延时、卡顿、拥挤)时,微服务和EurekaServer无法通信,以上行为可以说服务本身其实是健康的,不应该注册该服务,短时间内丢失过多客户端(可能发生了网络分区故障),那么这个节点就会进入自我保护模式,Eureka Server 在运行期间会去统计心跳失败比例在 15分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期


保护模式就是为了解决健康的服务因网络延时等问题无法联系EurekaServer导致被剔除的问题。

具体搭建

服务端

新建Moudle

下一步

选择初始依赖

.yml

server:
  port: 10086
spring:
  application:
    name: jczb-eureka #微服务名称
eureka:
  client:
    service-url:
      defaultZone: http://localhost:${server.port}/eureka

启动类

@SpringBootApplication
@EnableEurekaServer
public class JczbEurekaApplication {

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

}

启动成功

Eureka常用配置文件说明

服务端

server:
  port: 10086 #服务启动端口
spring:
  application:
    name: leyou-registry #服务名称
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka #服务访问地址
    register-with-eureka: false #关闭自己的服务,服务提供方启动时,会检测该参数是否为True,true注册给eureka,一般eureka不自己发现自己,所以改为false
    fetch-registry: false #fetch-registry: false  #要不要去注册中心获取其他服务的地址
  server:
    enable-self-preservation: false #关闭自我保护模式
    eviction-interval-timer-in-ms: 10000 #定期清理无效衔接

客户端

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
    registry-fetch-interval-seconds: 5 # 拉取服务时间
  instance:
    lease-renewal-interval-in-seconds: 5 # 每隔5秒发送一次心跳
    lease-expiration-duration-in-seconds: 10 # 10秒不发送就过期

小结

生产者与消费者注册过程

  1. 首先启动Eureka注册中心
  2. 启用生产者服务
  3. 生产者服务启动后会将自身信息比如服务地址以别名的方式注册进Eureka
  4. 消费者需要调用接口时,使用别名去注册中心获取实际的RPC远程调用地址
  5. 消费者获得调用地址后,底层实际使用HttpClient技术实现远程调用
  6. 消费者获取地址会缓存在本地JVM内存中,默认每30秒更新一次服务调用地址


目录
相关文章
|
1月前
|
缓存 负载均衡 监控
SpringCloud&Eureka理论与入门
SpringCloud&Eureka理论与入门
30 0
|
30天前
|
存储 Nacos 数据安全/隐私保护
【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
48 1
|
5天前
|
消息中间件 负载均衡 Java
SpringCloud系列--(二)服务的注册于发现
SpringCloud系列--(二)服务的注册于发现
13 1
SpringCloud系列--(二)服务的注册于发现
|
18天前
|
安全 Java 开发者
Java一分钟之-Spring Cloud Netflix Eureka:服务注册与发现
【6月更文挑战第8天】Spring Cloud Eureka是微服务架构的关键,提供服务注册与发现功能。本文讲解Eureka工作原理、配置、常见问题及解决方案。Eureka包含Server(管理服务状态)和Client(注册服务实例并发现服务)。快速入门包括启动Eureka Server和创建Eureka Client。常见问题涉及服务注册不上、服务下线和客户端注册信息不准确,可通过检查网络、理解自我保护机制和配置元数据解决。此外,文中还提及健康检查、安全配置和集群部署等高级实践,以增强系统健壮性和扩展性。
60 8
|
1天前
|
Nacos 数据安全/隐私保护
springCloud之nacos服务注册与发现、配置中心
springCloud之nacos服务注册与发现、配置中心
5 0
|
1天前
|
微服务
springCloud之服务注册与发现Eureka
springCloud之服务注册与发现Eureka
5 0
|
1天前
springCloud服务注册中心eureka-client搭建
springCloud服务注册中心eureka-client搭建
6 0
|
1天前
springCloud服务注册中心eureka-server搭建
springCloud服务注册中心eureka-server搭建
7 0
|
30天前
|
负载均衡 算法 Java
【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
32 3
|
23天前
|
人工智能 Java Spring
使用 Spring Cloud Alibaba AI 构建 RAG 应用
本文介绍了RAG(Retrieval Augmented Generation)技术,它结合了检索和生成模型以提供更准确的AI响应。示例中,数据集(包含啤酒信息)被加载到Redis矢量数据库,Spring Cloud Alibaba AI Starter用于构建一个Spring项目,演示如何在接收到用户查询时检索相关文档并生成回答。代码示例展示了数据加载到Redis以及RAG应用的工作流程,用户可以通过Web API接口进行交互。
52330 61