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服务治理的基本搭建和测试。

相关文章
|
1月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
42 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
30天前
|
缓存 Devops jenkins
专家视角:构建可维护的测试架构与持续集成
【10月更文挑战第14天】在现代软件开发过程中,构建一个可维护且易于扩展的测试架构对于确保产品质量至关重要。本文将探讨如何设计这样的测试架构,并将单元测试无缝地融入持续集成(CI)流程之中。我们将讨论最佳实践、自动化测试部署、性能优化技巧以及如何管理和扩展日益增长的测试套件规模。
43 3
|
1月前
|
Cloud Native Java API
聊聊从单体到微服务架构服务演化过程
本文介绍了从单体应用到微服务再到云原生架构的演进过程。单体应用虽易于搭建和部署,但难以局部更新;面向服务架构(SOA)通过模块化和服务总线提升了组件复用性和分布式部署能力;微服务则进一步实现了服务的独立开发与部署,提高了灵活性;云原生架构则利用容器化、微服务和自动化工具,实现了应用在动态环境中的弹性扩展与高效管理。这一演进体现了软件架构向着更灵活、更高效的方向发展。
|
2月前
|
存储 Linux KVM
Proxmox VE (PVE) 主要架构和重要服务介绍
Proxmox VE (PVE) 是一款开源的虚拟化平台,它基于 KVM (Kernel-based Virtual Machine) 和 LXC (Linux Containers) 技术,支持虚拟机和容器的运行。PVE 还提供高可用集群管理、软件定义存储、备份和恢复以及网络管理等企业级功能。
1026 7
|
8天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
37 3
|
29天前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性?
微服务架构中,如何确保服务之间的数据一致性?
|
1月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
42 3
|
1月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
53 3
|
2月前
|
消息中间件 Kafka 数据库
微服务架构中,如何确保服务之间的数据一致性
微服务架构中,如何确保服务之间的数据一致性
|
1月前
|
负载均衡 算法 Nacos
SpringCloud 微服务nacos和eureka
SpringCloud 微服务nacos和eureka
61 0