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月前
|
负载均衡 算法 Java
【SpringCloud(4)】OpenFeign客户端:OpenFeign服务绑定;调用服务接口;Feign和OpenFeign
Feign是一个WebService客户端。使用Feign能让编写WebService客户端更加简单。 它的使用方法是定义一个服务接口然后再上面添加注解。Feign也支持可拔插式的编码器和解码器。SpringCloud对Feign进行了封装,十七支持了SpringMVC标准注解和HttpMessageConverters。 Feign可用于Eureka和Ribbon组合使用以支持负载均衡
977 139
|
9月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
存储 人工智能 测试技术
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
713 2
|
12月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
385 0
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
1352 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
消息中间件 缓存 监控
性能测试怎么做?方法、流程与核心要点解析
本文系统阐述了性能测试的核心方法论、实施流程、问题定位优化及报告编写规范。涵盖五大测试类型(负载验证、极限压力、基准比对、持续稳定性、弹性扩展)与七项关键指标,详解各阶段任务如需求分析、场景设计和环境搭建,并提供常见瓶颈识别与优化实战案例。最后规范测试报告内容框架与数据可视化建议,为企业级实践提出建立基线库、自动化回归和全链路压测体系等建议,助力高效开展性能测试工作。
|
人工智能 安全 测试技术
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
1048 0
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
665 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
841 3
|
监控 测试技术 数据安全/隐私保护
新产品测试流程如何?
新产品测试流程如何?【10月更文挑战第10天】
986 0