Eureka服务注册与发现

简介: 本文介绍如何搭建Eureka注册中心,实现user-service与order-service的注册,并通过多实例部署模拟负载均衡场景。涵盖工程创建、配置文件编写、服务启动及常见问题解决方案,帮助掌握Spring Cloud服务注册与发现核心机制。

1.Eureka工程搭建启动

  • 新建module,名称:eureka-server
  • 引入pom依赖,如maven未刷新需手动刷新拉取

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>
  • 新建启动类:EurekaApplication
package cn.itcast.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* Eureka启动类
*
* @author 
* @date 2022-12-22 16:20
*/
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
        System.out.println("Eureka服务启动成功");
    }
}
  • 新建配置文件:application.yml
server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    serviceUrl:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
    register-with-eureka: false
    fetch-registry: false

至此,eureka已完成创建、部署、访问。至此工程目录结构如下

打开Idea-Service控制台

稍后章节我们需工程多开部署(为后续Ribbon测试打好基础),需读者提前打开一下控制台窗口

2.user-service接入并启动

2.1 引入pom依赖

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

2.2 更新配置文件

以下配置文件注意缩进,其中application为spring下二级路径,主要为了区分多个注册在eureka上的服务。

application:
    name: userservice
eureka:
  client:
    service-url: #eureka服务路径
      defaultZone: http://127.0.0.1:10086/eureka/

2.3 启动并查看Eureka信息

2.3 复制模拟多实例部署

右键UserApplication,选择:Copy Configuration

设置应用信息,打开VM参数设置

VM参数设置如下:-Dserver.port=8082

启动应用并查看Eureka信息,此时变成两个活跃实例

3.order-service接入并启动

重复user-service操作,pom文件依赖操作完全一致,但配置文件中应用名称不同,在此单独贴出

application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/

启动后访问页面如下


至此我们的工程部署运行情况如下:

此时工程目录结构如下

4.常见问题及解决方案

  1. Eureka启动报错但页面访问正常

确保Eureka信息配置中增加:register-with-eureka: false、fetch-registry: false,以避免因Eureka自身注册自身带来的启动异常

  1. 应用启动正常,访问Eureka发现注册失败
  1. 确保应用引入依赖:spring-cloud-starter-netflix-eureka-server
  2. 确保优先启动Eureka,而后启动user-service、order-service
  1. 如遇其他未知问题,为避免浪费时间可直接使用此工程导入

📎cloud.zip

5.总结

本节读者带领大家完成SpringCloud集成组件Eureka的开发、部署,并完成业务应用在Eureka的注册、访问。基于此细心的读者朋友们可以发现:上一章节还写死的访问地址,已经变成动态从注册中心获取了,避免了接口提供方注册信息变更、导致消费方接口服务调用异常的场景。随着Eureka的剔除,Nacos又将如何优雅替换Eureka呢?待我们后续继续实操逐步发掘吧。


思考问题

  • Eureka是什么?解决了什么问题?
  • Eureka如何实现服务注册与服务发现?
  • 还有哪些技术可以实现服务注册与服务发现?
相关文章
|
2月前
|
SQL 关系型数据库 数据库
分布式事务
本文介绍了分布式事务的概念、典型场景及解决方案。在微服务架构下,一次业务操作需跨多个数据库和远程调用协作完成,传统本地事务无法保证整体一致性。通过Seata框架可实现分布式事务控制,其AT模式无侵入、高性能,基于两阶段提交与undo log实现最终一致;XA模式则提供强一致性但性能较低。文章还结合下单、支付等场景演示了Seata的集成与应用。
|
2月前
|
人工智能 监控 Java
请求限流
本文介绍如何使用Sentinel实现接口限流与降级,通过配置QPS阈值保护商品查询接口,并结合JMeter进行压测验证。同时讲解了线程隔离机制,包括信号量隔离的应用,确保系统在高并发下的稳定性。
请求限流
|
2月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本文介绍Spring Boot中配置管理的常用方法:通过`@Value`读取单个配置,使用`@ConfigurationProperties`封装多个配置项,并实现开发与生产环境配置文件(如application-dev.yml和application-pro.yml)的灵活切换,提升项目可维护性。
|
2月前
|
人工智能 Java 应用服务中间件
微服务保护
本节介绍微服务雪崩问题及保护方案。当某服务故障或负载过高,可能引发级联失败,导致整个系统不可用。为避免此问题,需采取熔断、降级、超时、线程隔离和限流等措施。常用工具包括Hystrix、Resilience4j和Sentinel,课程重点讲解Sentinel的使用。
|
2月前
|
存储 安全 小程序
认识OAuth2.0
OAuth2.0是一种开放授权标准,允许第三方应用在用户授权下安全访问资源,无需获取用户账号密码。它通过令牌(token)机制实现权限控制,广泛用于第三方登录、服务间资源共享等场景,支持授权码、简化、密码和客户端四种模式,兼顾安全性与灵活性。
认识OAuth2.0
|
2月前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、服务注册与发现、权重控制、集群隔离及临时/持久实例等核心功能,涵盖从环境搭建到高级配置的完整实践,助力微服务架构高效管理。
 Nacos注册中心
Direct交换机
Direct交换机根据RoutingKey将消息路由到指定队列,实现精准消息分发。与Fanout广播模式不同,Direct支持多队列绑定相同Key,兼具灵活性与定向投递优势。
Direct交换机
|
2月前
|
uml C语言
系统时序图
时序图是UML中描述对象间消息传递时间顺序的交互图,横轴为对象,纵轴为时间。用于展示交互流程、强调时序关系,直观表达并发过程。主要元素包括角色、对象、生命线、控制焦点和消息等,广泛应用于系统设计与分析。
系统时序图
|
2月前
|
项目管理 开发者
业务架构图
本文系统阐述了业务架构图的核心概念与绘制方法,涵盖业务定义、架构分层(组织层、应用层、能力层、基础层)、模块划分及功能分解,并结合医院场景示例,说明如何通过分层、分模块、分功能构建清晰的业务视图,提升客户理解与开发效率。
|
2月前
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本文详解Spring Boot拦截器的原理与使用,涵盖定义、配置、静态资源处理及登录校验、注解控制等实战场景,助你掌握AOP思想在请求拦截中的应用。