当前位置: 首页 > news >正文

在SpringBoot项目中如何集成eureka

Eureka 是 Netflix 开源的一个服务注册与发现的组件,通常用于 Spring Cloud 微服务架构中。集成 Eureka 和 Spring Boot 可以帮助我们创建一个高可用的服务注册中心,允许服务在集群中自动注册和发现。

下面是一个简单的 Spring Boot 项目集成 Eureka 的教程,分为两部分:Eureka Server 和 Eureka Client。

目录

1. 创建 Eureka Server

1.1 创建一个 Spring Boot 项目

1.2 配置 Eureka Server

1.3 启动 Eureka Server

2. 创建 Eureka Client

2.1 创建一个新的 Spring Boot 项目

2.2 配置 Eureka Client

2.3 启动 Eureka Client

2.4 测试 Eureka Client

3. 多个客户端测试

4. 负载均衡和服务调用

4.1 添加 Feign 依赖

4.2 配置 Feign 客户端

4.3 创建一个简单的控制器

5. 总结


1. 创建 Eureka Server

1.1 创建一个 Spring Boot 项目

使用 Spring Initializr 创建一个新的 Spring Boot 项目,添加以下依赖:

  • Spring Boot DevTools
  • Spring Web
  • Eureka Server
1.2 配置 Eureka Server

src/main/resources/application.properties 文件中,添加以下配置:

spring.application.name=eureka-server
server.port=8761eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

这段配置指定了应用名称为 eureka-server,端口为 8761,并且表示这个服务本身不会注册到 Eureka 中(因为它是服务器)。

1.3 启动 Eureka Server

在主类中启用 Eureka Server:

package com.example.eurekaserver;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);}
}

现在,启动应用程序,并在浏览器中访问 http://localhost:8761,你应该会看到 Eureka Server 的仪表盘页面。

2. 创建 Eureka Client

接下来,创建一个微服务,它将注册到 Eureka Server。

2.1 创建一个新的 Spring Boot 项目

再次使用 Spring Initializr 创建一个新的 Spring Boot 项目,添加以下依赖:

  • Spring Boot DevTools
  • Spring Web
  • Eureka Discovery Client
2.2 配置 Eureka Client

src/main/resources/application.properties 文件中,添加以下配置:

spring.application.name=eureka-client
server.port=8080eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

这里的配置指定了应用名称为 eureka-client,端口为 8080,并且定义了 Eureka Server 的地址。

2.3 启动 Eureka Client

在主类中启用 Eureka Client:

package com.example.eurekaclient;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientApplication.class, args);}
}
2.4 测试 Eureka Client

启动 EurekaClientApplication 应用程序,并回到 Eureka Server 的仪表盘 (http://localhost:8761)。你应该会在页面上看到名为 eureka-client 的服务已经注册到 Eureka 中。

3. 多个客户端测试

你可以创建更多的客户端应用程序,或者复制并修改现有的 eureka-client 项目,将其部署到不同的端口,以便测试多个服务的注册和发现。

4. 负载均衡和服务调用

Eureka 的一个常见用法是与 Ribbon 或 Feign 一起使用,用于负载均衡和服务调用。可以在 eureka-client 中添加 Ribbon 或 Feign 的依赖,并编写一个服务调用逻辑:

4.1 添加 Feign 依赖

pom.xml 中添加以下依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
4.2 配置 Feign 客户端

EurekaClientApplication 类上添加 @EnableFeignClients 注解:

@EnableFeignClients
@SpringBootApplication
public class EurekaClientApplication {...
}

创建一个 Feign 接口,用于调用其他服务:

package com.example.eurekaclient;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient("eureka-client")
public interface ClientService {@GetMapping("/hello")String getHello();
}
4.3 创建一个简单的控制器

EurekaClientApplication 中创建一个 REST 控制器来测试:

package com.example.eurekaclient;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Autowiredprivate ClientService clientService;@GetMapping("/hello")public String hello() {return "Hello from eureka-client!";}@GetMapping("/call")public String callService() {return clientService.getHello();}
}

启动多个 eureka-client 实例,然后通过 /call 端点调用其他实例的 /hello 端点,这样你可以测试负载均衡和服务调用功能。

5. 总结

以上步骤展示了如何在 Spring Boot 项目中集成 Eureka,并创建一个简单的 Eureka Server 和 Client。你可以使用 Eureka 来管理微服务集群中的服务注册和发现,简化服务之间的通信。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CPP中lamada表达式作用一览[more cpp-6]
  • Junit单元测试笔记
  • 继承的初始化顺序
  • 解析Java中1000个常用类:ServiceLoader类,你学会了吗?
  • SpringBoot工厂模式
  • 【重点】人工智能大语言模型技术发展研究报告2024|附下载
  • 旅游社交小程序的设计
  • 借题《黑神话悟空》,聊聊UE5 游戏开发中基本的 C++ 概念
  • 如何在分布式环境中实现高可靠性分布式锁
  • 我在某日重新下载了idea
  • Vue中字节流格式的 Base64编码转换为 Blob 对象保存成wav的音频文件
  • Jmeter性能关注指标详解
  • Day18_Netty
  • Spark MLlib 特征工程系列—特征转换SQLTransformer
  • 数学建模学习(127):基于Python的模糊最佳-最差法(Fuzzy BWM)在多准则决策中的应用
  • JavaScript-如何实现克隆(clone)函数
  • ES6系统学习----从Apollo Client看解构赋值
  • golang 发送GET和POST示例
  • Javascript弹出层-初探
  • Laravel 菜鸟晋级之路
  • 复习Javascript专题(四):js中的深浅拷贝
  • 基于 Babel 的 npm 包最小化设置
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 说说动画卡顿的解决方案
  • 温故知新之javascript面向对象
  • 项目管理碎碎念系列之一:干系人管理
  • 中文输入法与React文本输入框的问题与解决方案
  • 数据库巡检项
  • #1015 : KMP算法
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (论文阅读11/100)Fast R-CNN
  • (七)Activiti-modeler中文支持
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Google的Objective-C编码规范
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .bashrc在哪里,alias妙用
  • .describe() python_Python-Win32com-Excel
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 发展历程
  • .NET/C# 使用反射注册事件
  • .Net的DataSet直接与SQL2005交互
  • .NET开源、简单、实用的数据库文档生成工具
  • .net生成的类,跨工程调用显示注释
  • @EnableAsync和@Async开始异步任务支持
  • [2018-01-08] Python强化周的第一天
  • [8] CUDA之向量点乘和矩阵乘法
  • [C++] vector对比list deque的引出