SpringCloud基于Eureka的服务治理架构搭建与测试:从服务提供者到消费者的完整流程

简介: Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。

Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。

一. Eureka基础知识

(1)服务治理

服务治理是微服务架构中最为核心和基础的模块,主要负责实现各个微服务实例的自动化注册与发现。服务治理能够管理服务之间的依赖关系,实现服务调用、负载均衡、容错等功能。Eureka作为Spring Cloud的一部分,基于Netflix Eureka进行了二次封装,用于完成微服务架构中的服务治理功能。

(2)服务注册

服务注册是服务治理的一个重要环节。在服务治理框架中,通常会构建一个注册中心(如Eureka Server),每个服务单元向注册中心登记自己提供的服务,包括主机与端口号、版本号、通信协议等附加信息。注册中心会按照服务名分类组织服务清单,并通过心跳机制监控清单中的服务是否可用,若不可用则从服务清单中剔除,达到排除故障服务的效果。

(3)Eureka Server

Eureka Server是Eureka的服务注册中心,负责维护集群中的服务实例信息和状态,以及给Eureka Client返回服务列表。Eureka Server支持高可用配置,可以通过多实例部署来保证服务的稳定性和可用性。Eureka Server内部有二层缓存机制来维护整个注册表,并提供了RESTful API供Eureka Client调用。

(4)Eureka Client

Eureka Client是Eureka的客户端,嵌入在业务服务的代码中,负责与Eureka Server交互,包括发送注册请求、维持心跳、拉取服务列表等。Eureka Client通过注册、心跳机制和Eureka Server同步当前客户端的状态。当Eureka Server无法访问时,Eureka Client仍然可以使用缓存中的信息找到服务提供者,但服务有更改时可能会出现信息不一致的情况。

二. 搭建Eureka服务端

(1)创建maven工程

首先,需要创建一个Maven工程,用于搭建Eureka服务端。

(2)导入依赖

在Maven工程的pom.xml文件中,需要导入Eureka Server的依赖。例如:

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

(3)配置application.yml

在application.yml文件中,需要配置Eureka Server的相关信息,如服务端口、服务名、是否向注册中心注册自己等。例如:

server:  
  port: 7001  
eureka:  
  instance:  
    hostname: localhost  
  client:  
    register-with-eureka: false  # 不向注册中心注册自己  
    fetch-registry: false        # 不从注册中心抓取服务  
    service-url:  
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka

(4)创建主启动类

在主启动类上添加@EnableEurekaServer注解,以启动Eureka Server。例如:

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

(5)启动Eureka注册中心

运行主启动类,启动Eureka注册中心。然后,可以通过浏览器访问http://localhost:7001/来查看Eureka注册中心的界面。

三. 搭建服务提供者

(1)创建maven工程

创建一个新的Maven工程,用于搭建服务提供者。

(2)导入依赖

在pom.xml文件中,导入Eureka Client的依赖和Spring Boot的启动依赖等。例如:

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

(3)配置application.yml

在application.yml文件中,配置服务提供者的相关信息,如服务名、Eureka Server的地址等。例如:

server:  
  port: 8001  
spring:  
  application:  
    name: service-provider  
eureka:  
  client:  
    service-url:  
      defaultZone: http://localhost:7001/eureka

(4)创建启动类

在主启动类上添加@EnableEurekaClient注解,以启用Eureka Client。例如:

@EnableEurekaClient  
@SpringBootApplication  
public class

5)创建Controller  

在服务提供者中创建一个Controller,用于对外提供服务。例如:

@RestController  
public class HelloController {  
  
    @GetMapping("/hello")  
    public String hello() {  
        return "Hello from Service Provider!";  
    }  
}

(6)测试该服务

启动服务提供者,并验证其是否正确注册到Eureka Server。然后,可以使用Postman或浏览器访问http://localhost:8001/hello来测试服务。

4. 搭建服务消费者

(1)创建maven工程

创建一个新的Maven工程,用于搭建服务消费者。

(2)导入依赖

与服务提供者类似,在pom.xml文件中导入Eureka Client的依赖和Spring Boot的启动依赖等。

(3)配置application.yml

配置服务消费者的相关信息,包括服务名、Eureka Server的地址等。

server:  
  port: 9001  
spring:  
  application:  
    name: service-consumer  
eureka:  
  client:  
    service-url:  
      defaultZone: http://localhost:7001/eureka

(4)创建主启动类

在主启动类上添加@EnableEurekaClient注解,以启用Eureka Client。

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

(5)创建配置类配置远程调用

使用Spring Cloud的Feign或Ribbon等客户端负载均衡工具来配置远程调用。这里以Feign为例:

@FeignClient(name = "service-provider")  
public interface HelloClient {  
    @GetMapping("/hello")  
    String hello();  
}

同时,在启动类或配置类上添加@EnableFeignClients注解来启用Feign。

(6)创建Controller

在服务消费者中创建一个Controller,用于调用服务提供者的服务。

@RestController  
public class ConsumerController {  
  
    @Autowired  
    private HelloClient helloClient;  
  
    @GetMapping("/call-hello")  
    public String callHello() {  
        return helloClient.hello();  
    }  
}

5. 整体测试

启动Eureka Server、服务提供者和服务消费者。然后,使用Postman或浏览器访问http://localhost:9001/call-hello,查看是否能够成功调用服务提供者并返回预期结果。如果一切配置正确,你将看到服务消费者调用服务提供者并返回了"Hello from Service Provider!"的响应。

这样,就完成了Eureka服务治理的基本搭建和测试。

相关文章
|
9天前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
45 2
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
2天前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性?
微服务架构中,如何确保服务之间的数据一致性?
|
8天前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
66 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
28 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
20 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
47 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
169 0
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
65 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
2天前
|
负载均衡 算法 应用服务中间件
深入探索微服务架构中的服务治理
【10月更文挑战第15天】深入探索微服务架构中的服务治理
4 0
|
7天前
|
监控 安全 Java
深入探索微服务架构中的服务治理
【10月更文挑战第10天】深入探索微服务架构中的服务治理
11 0