首页 > 其他分享 >Eureka介绍与使用

Eureka介绍与使用

时间:2024-07-11 11:27:16浏览次数:18  
标签:import springframework Eureka 介绍 使用 org eureka cloud

Eureka 是一个基于 REST 的服务,主要用于定位服务,以实现云端中间层服务发现和故障转移。它由 Netflix 开发并开源,是 Spring Cloud 生态系统中的重要组件之一。Eureka 主要用于微服务架构中,帮助服务客户端注册和发现服务,从而实现服务的自动管理。

Eureka 的核心概念

  1. 服务注册(Service Registration)

    • 服务提供者在启动时,会将自己的服务信息(如服务名、IP地址、端口等)注册到 Eureka 服务器。
  2. 服务发现(Service Discovery)

    • 服务消费者从 Eureka 服务器获取服务提供者的信息,并使用这些信息进行远程调用。
  3. 心跳机制(Heartbeat)

    • 服务提供者会定期向 Eureka 服务器发送心跳,以证明自己仍然存活。如果 Eureka 服务器在一定时间内没有收到某个服务提供者的心跳,它会将其从注册表中移除。
  4. 客户端缓存(Client-side Caching)

    • Eureka 客户端会缓存服务注册表的信息,这样即使 Eureka 服务器不可用,客户端仍然可以进行服务发现。

Eureka 的架构

Eureka 的架构主要包括两个组件:Eureka 服务器(Eureka Server)和 Eureka 客户端(Eureka Client)。

  1. Eureka 服务器

    • 提供服务注册和发现的功能。
    • 通常会有多个 Eureka 服务器实例组成一个集群,以提高可用性。
  2. Eureka 客户端

    • 服务提供者(Service Provider):将自己的服务信息注册到 Eureka 服务器。
    • 服务消费者(Service Consumer):从 Eureka 服务器获取服务提供者的信息,并进行远程调用。

Eureka 的使用

1. 搭建 Eureka 服务器

首先,需要在项目中引入 Eureka 服务器的依赖。如果是使用 Spring Boot 和 Spring Cloud,可以在 pom.xml 或 build.gradle 中添加以下依赖:

<!-- 对于 Maven 项目 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
// 对于 Gradle 项目
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'

然后,创建一个 Spring Boot 应用,并添加 @EnableEurekaServer 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

在 application.yml 或 application.properties 中配置 Eureka 服务器:

server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
2. 注册服务到 Eureka

在服务提供者的项目中引入 Eureka 客户端的依赖:

<!-- 对于 Maven 项目 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
// 对于 Gradle 项目
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

在服务提供者的 Spring Boot 应用中添加 @EnableEurekaClient 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceProviderApplication.class, args);
    }
}

在 application.yml 或 application.properties 中配置 Eureka 客户端:

server:
  port: 8081

spring:
  application:
    name: service-provider

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
3. 发现服务并进行调用

在服务消费者的项目中引入 Eureka 客户端的依赖,并配置 Eureka 客户端:

<!-- 对于 Maven 项目 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
// 对于 Gradle 项目
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

在服务消费者的 Spring Boot 应用中添加 @EnableDiscoveryClient 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceConsumerApplication.class, args);
    }
}

在 application.yml 或 application.properties 中配置 Eureka 客户端:

server:
  port: 8082

spring:
  application:
    name: service-consumer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

使用 RestTemplate 或 Feign 进行服务调用:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @GetMapping("/consume")
    public String consume() {
        return restTemplate.getForObject("http://service-provider/hello", String.class);
    }
}

总结

Eureka 是一个强大的服务注册和发现工具,适用于微服务架构。通过 Eureka,服务提供者可以注册自己的服务信息,服务消费者可以发现并调用这些服务。Eureka 提供了高可用性和容错性,确保了服务的稳定运行。通过 Spring Cloud 的支持,Eureka 的使用变得更加简单和便捷。

希望大家喜欢,喜欢麻烦点个赞,收藏一下。

标签:import,springframework,Eureka,介绍,使用,org,eureka,cloud
From: https://blog.csdn.net/2401_86162311/article/details/140247374

相关文章

  • 阿里云镜像仓库的使用详解
    一、镜像仓库介绍Registry是Docker公司的一项创新,它提供了存放镜像的仓库服务。在构建好镜像后,我们通常会将镜像上传到Registry服务器上进行保存。这样可以保证不会因本机故障而导致镜像丢失,同时,其他机器也能很方便地通过网络方式下载。DockerHub即为Docker官方的Registry服务......
  • Windows+Python配置和使用labelme打标工具(语义分割)
    Labelme是一个开源的图像标注工具麻省理工学院的计算机科学和人工智能实验室(CSAIL)开发。它主要用于创建计算机视觉和机器学习应用所需的标记数据集。LabelMe让用户可以在图片上标注对象和区域,为机器学习模型提供训练数据。它支持多种标注类型,如矩形框、多边形和线条等。它是用Py......
  • Windows11使用子系统Ubuntu20.04配置图形化界面和安装软件
    前言        在上一章节,我们在windows11下利用wsl2安装了Ubuntu-linux子系统,并下载了android10的源码进行编译(Ubuntu运行环境下Android10源码下载和编译_ubuntu18下载android10源码-CSDN博客)。如果想进行android源码以及framework的学习,一定需要代码编辑软件,我之前学......
  • 本地 AI RAG 系列之 使用 OpenLlama、Postgres、Node.js 和 Next.js 进行 100% 免费矢
    简介所以你想尝试向量搜索,但你不想付钱给OpenAI,或者使用Huggingface,也不想付钱给向量数据库公司。我来帮你。让我们在自己的机器上免费开始向量搜索吧。推荐文章《知识图谱大模型系列之01利用KeyBERT、HDBSCAN和Zephyr-7B-Beta构建知识图谱,LLM增强的自然语言处......
  • Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和
    场景存储过程存储过程是一组为了完成特定功能的SQL语句集合。使用存储过程的目的是将常用或复杂的工作预先用SQL语句写好并用一个指定名称存储起来,这个过程经编译和优化后存储在数据库服务器中,因此称为存储过程。当以后需要数据库提供与己定义好的存储过程的功能相同的服务时,......
  • 01.前后端分离中台框架后端 Admin.Core 学习-介绍与配置说明
    合集-Admin.Core(6) 1.01.前后端分离中台框架后端Admin.Core学习-介绍与配置说明2023-08-202.02.前后端分离中台框架前端admin.ui.plus学习-介绍与简单使用2023-08-213.03.前后端分离中台框架zhontai项目代码生成器的使用2023-08-224.04.使用githubactions+dock......
  • 使用 CSS 实现多列布局
    使用CSS实现多列布局在CSS中,可以通过多种方法实现多列布局,以下是一些常见的方法:1.使用FlexboxFlexbox是一个强大的布局工具,适合用于需要灵活布局的场景。以下是一个基本的示例:<divclass="container"><divclass="column">Column1</div><divclass="column">Col......
  • rancher搭建及使用
    介绍:Rancher是一个开源的多云容器管理平台,它提供了一个用户界面来管理Kubernetes集群和容器化应用程序。使用Rancher,用户可以简化容器和Kubernetes集群的管理,包括集群的部署、扩展、升级以及应用程序的生命周期管理。 rancher教程一、rancher的搭建1.1在ranc......
  • iframe 使用以及互相传值
    <divclass="aiWrite"><iframev-if="aiWriteShow"ref="iframeRef"style="width:100%;min-height:calc(100vh-216px)"name="iframePage":s......
  • 华为MLD的介绍配置实例以及配置案例分析-(值得收藏)
    一、华为MLD的介绍华为MLD(MulticastListenerDiscovery)指的是在华为网络设备上实现的IPv6组播侦听者发现协议。MLD是IPv6版本的IGMP(InternetGroupManagementProtocol),用于在IPv6网络中管理和控制组播流。它主要用于在IPv6主机和直接相连的路由器之间建立和维护组播组成......