01 Eureka 的简单使用

本文详细介绍了Eureka作为服务治理组件的工作原理,包括服务注册表、服务注册与发现、自我保护机制和用户认证。通过配置和代码示例展示了如何在Spring Boot应用中集成Eureka,实现微服务的注册和元数据管理。此外,还探讨了REST接口、排除Jersey依赖以及服务注册慢的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文不是初学开始的,在有点基础上的是查漏补缺。

起言:服务治理概念

Spring Cloud 提供了多种组件发现的支持,例如 Eureka、Consul、Zookeeper等。

一个服务治理组件应该具有以下三个功能:

服务注册表

服务治理组件的核心,它用来记录各个微服务的信息,比如说微服务的名称、IP、端口等。服务注册组件提供查询 API 和管理 API,查询 API 用来查询可用的微服务实例,管理 API用于服务的注册和注销。

服务注册与发现

  • 服务注册是指微服务在启动时,将自己的信息注册到服务治理组件上的过程。
  • 服务发现是指查询可用微服务列表及其网络地址的机制。

服务检查

服务治理组件使用一定机制定时检测已注册的服务,是否在线,或者是否无法连接等,若发现无法访问,就会从服务注册表中移除该实例,进行下线操作。

一、What’s Eureka

EurekaNetflix 开源的服务发现组件,本身是一个基于 REST 的服务。它包含 Server 和 Client 两部分。Spring Cloud 将它继承自了子项目 Spring Cloud Netflix 中。以下六点内容取自周立的《Spring Cloud 与 Docker 微服务架构与实战》第二版,对 Eureka的一些特性描述得还不错,先来看看:

  • Eureka Server提供了服务发现的能力,微服务启动时,会向 Eureka 发送自己的信息(ip、port、微服务名称等),Eureka Server 会将这些信息存储起来;
  • Eureka Client 是一个 Java 客户端,用于简化与 Eureka的交互。只需要几行配置文件、注解就可以实现注册到 Eureka上;
  • 微服务启动后,会周期性(默认30 s)向 Eureka Server 发送心跳以续约自己的“租期”;
  • 如果 Eureka Server 在一定的时间内没有收到某个微服务实例的心跳, Eureka Server 将注销该实例(默认为90 s);
  • 默认情况下,Eureka Server 同时也是 Eureka Client。多个 Eureka Server实例相互之间通过复制的方式来实现服务注册表中数据的同步;
  • Eureka Client 会缓存服务注册表中的信息。这种方式有一定的优势——首先,不需要每次都请求查询Eureka Server,从而降低了Eureka Server的压力;其次,即使 Eureka Server 所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用。

综上所述:Eureka 通过心跳检测机制、客户端缓存机制,提高了系统的灵活性,可伸缩性和可用性。

二、How to use Eureka

2.1 Maven 依赖

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

注意:E 版本 之前(包括E版本)是引入spring-cloud-starter-eureka-server

2.2 关于配置文件(重要)

我在本地新建了一个Spring Boot 工程,在 appication.yml里面配置如下:

# server参数
server:
  port: 8761
  tomcat:
    uri-encoding: utf-8

# spring 参数
spring:
  application:
    name: pro-eureka

# Eureka 参数
eureka:
  instance:
    # 实例的主机名称
    hostname: localhost
  client:
    # 不要向注册中心 Eureka 注册它自己
    register-with-eureka: false
    # 是否从 Eureka Server 获取注册信息,默认为 true,当前是单点的 Eureka Server,不需要同步其他节点的数据,所以false
    fetch-registry: false
    service-url:
      # 指定服务注册中心地址,这里指向了本服务,假如多个地址,直接使用逗号分隔
      defaultZone: http://${
   eureka.instance.hostname}:${
   server.port}/eureka/

2.3 主类配置

然后在主类上添加@EnableEurekaServer注解。这样子就可以简单启动一个 Eureka 了。

需要注意的是,最后的defaultZone参数不写时,默认就是http://localhost:8761/eureka

三、微服务注册

3.1 Maven 依赖

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

3.2 配置文件(重要)

server:
  port: 9001
  tomcat:
    uri-encoding: UTF-8

spring:
  application:
    name: pro-product

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
  instance:
    # 启用ip配置,如果不配置该属性或将该属性配置成 false,则表示注册微服务所在操作系统的 hostname 到 Eureka Server
    p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值