SpringCloud组件之Eureka

简介: SpringCloud如何使用Eureka

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

本文讲解Eureka的工作原理、相关配置、如何搭建Eureka服务

一、Eureka工作原理

eureka

Eureka包含两个组件:Eureka Server和Eureka Client Eureka Server提供服务发现能力,各个微服务启动时会向Eureka Server注册自己的信息(服务名、IP、端口等),Eureka Server便存储了这个信息.Eureka Client 是一个Java客户端,用于简化与Eureka的交互。每个微服务启动后, 会每个一定时间(默认30s)向Eureka Server 发送心,让其知道自己扔健康存活。如果Eureka Server在一定时间内(默认90s)没有收到某个微服务实例的心跳,Eureka Server就会注销该实例。默认情况下,Eureka Server也是Eureka Client,多个Eureka Server之间通过复制方式,来实现服务注册表中的数据同步。Eureka Client会缓存服务注册表中的信息, 无须每次都请求Eureka Server查询,缓解了Eureka Server的压力;即使Eureka Server所有节点都宕机,服务消费者依然可以查询自己缓存中的信息找到去调用服务提供者

二、Eureka常用配置

1、eureka.server.enable-self-preservation

是否关闭注册中心的保护机制。如果未关闭Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者;如果关闭,服务注册中心会将不可用的实例正确剔除

2、eureka.instance.prefer-ip-address

不使用主机名来定义注册中心的地址,而使用IP地址的形式,如果设置了eureka.instance.ip-address 属性,则使用该属性配置的IP,否则自动获取除环路IP外的第一个IP地址

3、eureka.instance.ip-address

IP地址

4、eureka.instance.hostname

设置当前实例的主机名称

5、eureka.instance.appname

服务名,默认取 spring.application.name 配置值,如果没有则为 unknown

6、eureka.instance.lease-renewal-interval-in-seconds

定义服务续约任务(心跳)的调用间隔,单位:秒

7、eureka.instance.lease-expiration-duration-in-seconds

定义服务失效的时间,单位:秒

8、eureka.instance.status-page-url-path

状态页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置

9、eureka.instance.status-page-url

状态页面的URL,绝对路径

10、eureka.instance.health-check-url-path

健康检查页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置

11、eureka.instance.health-check-url

健康检查页面的URL,绝对路径

12、eureka.client.service-url.

指定服务注册中心地址,类型为 HashMap,并设置有一组默认值,默认的Key为 defaultZone;默认的Value为http://localhost:8761/eureka ,如果服务注册中心为高可用集群时,多个注册中心地址以逗号分隔。如果服务注册中心加入了安全验证,这里配置的地址格式为: http://:@localhost:8761/eureka 其中 为安全校验的用户名; 为该用户的密码

13、eureka.client.fetch-registery

是否从eureka获取注册信息

14、eureka.client.registery-fetch-interval-seconds

从Eureka服务器端获取注册信息的间隔时间,单位:秒

15、eureka.client.register-with-eureka

是否注册自己

16、eureka.client.eureka-server-connect-timeout-seconds

连接 Eureka Server 的超时时间,单位:秒

17、eureka.client.eureka-server-read-timeout-seconds

读取 Eureka Server 信息的超时时间,单位:秒

18、eureka.client.filter-only-up-instances

获取实例时是否过滤,只保留UP状态的实例

19、eureka.client.eureka-connection-idle-timeout-seconds

Eureka 服务端连接空闲关闭时间,单位:秒

20、eureka.client.eureka-server-total-connections

从Eureka 客户端到所有Eureka服务端的连接总数

21、eureka.client.eureka-server-total-connections-per-host

从Eureka客户端到每个Eureka服务主机的连接总数

三、创建Eureka项目

1、引入依赖

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

2、启动类使用注解

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {

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

}

3、yml文件配置

server:
  port: 8761
spring:
  application:
    name: eureka-server
eureka:
  client:
    # 关闭注册自己
    register-with-eureka: false
    # 是否从eureka获取注册信息
    fetch-registry: false
    # eureka访问地址
    service-url:
      defaultZone: http://localhost:8761/eureka/
  # 是否开启保护模式,开发模式不需要
  server:
    enable-self-preservation: false

4、启动

console

到这里,整篇文章就结束了,如果文章中存在有误的地方,欢迎各位指正哟,项目源代码地址:SpringCloud-demo

目录
相关文章
|
6月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1067 3
|
4月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
11月前
|
负载均衡 Java Nacos
Spring Cloud五大组件
Spring Cloud五大组件
|
监控 负载均衡 Java
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
本文图文详解 Spring Cloud 的五大核心组件,帮助深入理解和掌握微服务架构。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
5 大 SpringCloud 核心组件详解,8 张图彻底弄懂
|
10月前
|
负载均衡 前端开发 Java
SpringCloud调用组件Feign
本文深入探讨微服务Spring体系中的Feign组件。Feign是一个声明式Web服务客户端,支持注解、编码器/解码器,与Spring MVC注解兼容,并集成Eureka、负载均衡等功能。文章详细介绍了SpringCloud整合Feign的步骤,包括依赖引入、客户端启用、接口创建及调用示例。同时,还涵盖了Feign的核心配置,如超时设置、拦截器实现(Basic认证与自定义)和日志级别调整。最后,总结了`@FeignClient`常用属性,帮助开发者更好地理解和使用Feign进行微服务间通信。
834 1
|
11月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
负载均衡 算法 Java
除了 Ribbon,Spring Cloud 中还有哪些负载均衡组件?
这些负载均衡组件各有特点,在不同的场景和需求下,可以根据项目的具体情况选择合适的负载均衡组件来实现高效、稳定的服务调用。
1221 61
|
12月前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
2107 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
1311 4