【微服务】Spring Cloud中如何使用Eureka

文章目录

      • 强烈推荐
      • 引言
      • 主要功能
      • Eureka 的架构
      • 使用示例
        • Eureka Server 配置
        • Eureka Client 配置
        • 示例服务
        • 服务发现调用示例
      • Spring Cloud如何实现服务的注册?
        • 1. 搭建 Eureka 服务注册中心
        • 2. 配置服务注册到 Eureka
        • 3. 验证服务注册
      • 总结
      • 应用场景
        • 1. 动态服务发现
        • 2. 负载均衡
        • 3. 服务治理
        • 4. 服务调用
        • 5. 灰度发布和蓝绿部署
        • 6. 多数据中心支持
      • 强烈推荐
      • 专栏集锦
      • 写在最后

579a429daf314744b995f37351b46548

强烈推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能

b004071ozy_05_amzn


引言

Eureka 是 Netflix 开源的一个服务发现组件,它在微服务架构中扮演着重要的角色。

Eureka 主要分为 Eureka Server 和 Eureka Client 两部分。

Eureka Server 作为服务注册中心,维护所有可用服务实例的信息。Eureka Client 作为服务提供者或消费者,负责向 Eureka Server 注册服务和获取其他服务的位置信息。


主要功能

  1. 服务注册

    服务提供者在启动时,会将自己的信息(如 IP 地址、端口、服务名称等)注册到 Eureka Server 上。

  2. 服务发现

    服务消费者从 Eureka Server 获取可用服务实例列表,并根据负载均衡策略调用具体的服务实例。

  3. 故障检测

    Eureka 定期发送心跳检测服务实例的健康状况。如果某个服务实例未能按时响应心跳,Eureka 会将其标记为不可用。

  4. 动态扩展

    Eureka 支持动态扩展和缩减服务实例。当服务实例上线或下线时,Eureka Server 会自动更新服务实例列表。


Eureka 的架构

  • Eureka Server

    服务注册中心,维护所有服务实例的信息。

  • Eureka Client

    服务提供者或消费者,负责注册服务和发现服务。


使用示例

Eureka Server 配置

首先,创建一个 Spring Boot 应用并添加以下依赖:

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

然后,在应用主类中添加 @EnableEurekaServer 注解:

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

最后,在 application.yml 中进行配置:

server:port: 8761eureka:client:register-with-eureka: falsefetch-registry: false
Eureka Client 配置

创建一个服务提供者或消费者应用,添加以下依赖:

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

在应用主类中添加 @EnableEurekaClient 注解:

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

application.yml 中进行配置:

server:port: 8080eureka:client:service-url:defaultZone: http://localhost:8761/eureka/
示例服务
@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "Hello from Eureka Client!";}
}
服务发现调用示例

使用 Feign 和 Ribbon 从 Eureka 注册中心获取服务实例并进行调用:

@FeignClient(name = "eureka-client")
public interface HelloClient {@GetMapping("/hello")String hello();
}@RestController
public class HelloController {@Autowiredprivate HelloClient helloClient;@GetMapping("/call")public String call() {return helloClient.hello();}
}

通过上述配置和代码示例,Eureka Server 维护所有服务实例的信息,Eureka Client 可以从 Eureka Server 获取服务实例列表,并通过 Feign 和 Ribbon 进行负载均衡和服务调用。

这种方式在微服务架构中极大地简化了服务注册与发现的过程,提高了系统的扩展性和容错能力。


Spring Cloud如何实现服务的注册?

Spring Cloud 通过服务注册中心(Service Registry)实现服务的注册和发现。Eureka 是 Spring Cloud Netflix 提供的一个常见的服务注册和发现组件。以下是使用 Spring Cloud 和 Eureka 实现服务注册的基本步骤:

1. 搭建 Eureka 服务注册中心

首先,需要创建一个 Eureka 服务注册中心。

步骤:

  1. 创建一个新的 Spring Boot 项目,并添加以下依赖项:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
  2. application.propertiesapplication.yml 中配置 Eureka 服务器:

    server:port: 8761eureka:client:register-with-eureka: falsefetch-registry: false
    
  3. 在主应用类中添加 @EnableEurekaServer 注解:

    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
    }
    
2. 配置服务注册到 Eureka

接下来,需要配置客户端服务将自己注册到 Eureka 服务注册中心。

步骤:

  1. 创建一个新的 Spring Boot 项目,并添加以下依赖项:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
  2. application.propertiesapplication.yml 中配置 Eureka 客户端:

    eureka:client:service-url:defaultZone: http://localhost:8761/eureka/
    spring:application:name: my-service
    
  3. 在主应用类中添加 @EnableEurekaClient 注解:

    @SpringBootApplication
    @EnableEurekaClient
    public class MyServiceApplication {public static void main(String[] args) {SpringApplication.run(MyServiceApplication.class, args);}
    }
    
3. 验证服务注册

启动 Eureka 服务注册中心和服务客户端,访问 http://localhost:8761 可以看到注册到 Eureka 服务注册中心的服务列表。

总结

通过以上步骤,我们使用 Spring Cloud 和 Eureka 实现了基本的服务注册和发现机制。

Eureka 服务注册中心负责管理和协调服务的注册与发现,而各个微服务通过 Eureka 客户端与注册中心进行交互,实现服务的动态注册和发现。


应用场景

Spring Cloud 和 Eureka 的服务注册和发现机制在微服务架构中有广泛的应用场景,以下是一些典型的应用场景:

image-20240710003016350
1. 动态服务发现

在微服务架构中,各个服务实例可能会动态地加入和退出。Eureka 允许服务自动注册和注销,使得客户端可以动态地发现和调用可用的服务实例。

应用场景:

  • 微服务自动扩展:在高峰期自动增加服务实例,在低谷期自动减少实例。

  • 服务自愈:当某个服务实例故障时,Eureka 可以自动从服务注册列表中移除该实例,并通过健康检查确保其他实例的正常运行。

2. 负载均衡

Eureka 可以与负载均衡器(如 Spring Cloud Ribbon)结合使用,客户端可以从注册中心获取可用服务实例列表,然后进行负载均衡调用。

应用场景:

  • 流量分配:将流量均匀分配到多个服务实例,避免单个实例过载。

  • 故障转移:当某个实例不可用时,自动切换到其他可用实例。

3. 服务治理

通过 Eureka,微服务架构中的各个服务可以进行统一的管理和监控,简化了服务的部署和维护。

应用场景:

  • 服务监控:实时监控服务的健康状态和可用性。

  • 配置管理:通过配置中心(如 Spring Cloud Config)进行集中化配置管理,动态更新服务配置。

4. 服务调用

Eureka 与客户端负载均衡器(如 Ribbon)和声明式 HTTP 客户端(如 Feign)结合,简化了服务之间的调用。

应用场景:

  • 简化调用:使用 Feign 客户端通过接口调用远程服务,无需手动编写 HTTP 请求。

  • 动态路由:根据 Eureka 的注册信息动态选择调用目标,避免硬编码服务地址。

5. 灰度发布和蓝绿部署

Eureka 可以帮助实现灰度发布和蓝绿部署,通过注册不同版本的服务实例,实现流量的分级和分段管理。

应用场景:

  • 灰度发布:逐步将新版本服务发布给一部分用户进行测试,确保稳定后再全量发布。

  • 蓝绿部署:在不影响现有服务的情况下,部署新版本服务进行切换,确保发布的平滑过渡。

6. 多数据中心支持

Eureka 支持多数据中心的服务注册和发现,可以跨数据中心进行服务调用,提升系统的容灾和高可用性。

应用场景:

  • 跨数据中心调用:实现不同数据中心之间的服务互通,提高系统的容灾能力。
  • 全局负载均衡:在全球范围内分配流量,提高系统的响应速度和稳定性。

通过上述应用场景,可以看出 Spring Cloud 和 Eureka 在微服务架构中发挥了重要作用,极大地提高了系统的灵活性、可扩展性和高可用性。


强烈推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能

b004071ozy_05_amzn


专栏集锦

大佬们可以收藏以备不时之需:

Spring Boot 专栏:http://t.csdnimg.cn/peKde

ChatGPT 专栏:http://t.csdnimg.cn/cU0na

Java 专栏:http://t.csdnimg.cn/YUz5e

Go 专栏:http://t.csdnimg.cn/Jfryo

Netty 专栏:http://t.csdnimg.cn/0Mp1H

Redis 专栏:http://t.csdnimg.cn/JuTue

Mysql 专栏:http://t.csdnimg.cn/p1zU9

架构之路 专栏:http://t.csdnimg.cn/bXAPS


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

如果有项目或者毕设合作,请V:fengyelin8866,备注毕设

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/44111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java中的SSM框架实现水稻朔源信息系统项目【项目源码】

基于Java中的SSM框架实现水稻朔源信息系统演示 SSM框架 SSM框架是基于Spring、SpringMVC以及Mybatis实现的针对JAVA WEB端应用的开发框架&#xff0c;通过SSM框架结构可以实现以上三种框架的优点集合&#xff0c;从而实现更加高效便捷的系统开发和呈现。该框架结构通过Spring框…

PolarisMesh源码系列——服务如何注册

前话 PolarisMesh&#xff08;北极星&#xff09;是腾讯开源的服务治理平台&#xff0c;致力于解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题&#xff0c;针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。 PolarisMesh 官网&am…

280个地级市金融集聚水平数据(2006-2022年)

2006年-2022年280个地级市金融集聚水平数据整理资源-CSDN文库 金融集聚水平&#xff1a;衡量地级市金融发展的新维度 金融集聚水平是衡量一个地区金融发展程度的重要指标&#xff0c;它反映了金融机构、金融资源、金融服务在特定时间和空间的集中程度。这一指标的评估可以从多…

视语坤川大模型智能体平台亮相2024世界人工智能大会

7月4日-7月7日&#xff0c;以“以共商促共享以善治促善智”为主题的2024世界人工智能大会&#xff08;WAIC 2024&#xff09;在上海举办&#xff0c;世界顶级专家学者、知名企业代表、政界人士、高校组织等齐聚上海&#xff0c;共商发展、共话未来。 作为大会的重磅环节——昇…

【笔记】Android V 应用SDK升级适配和问题

说明 随着Google释放的Android版本,系统升级SDK到35,应用也需要升级上去,不然会报错。 Android Studio Jellyfish | 2023.3.1 | Android Developers Android Studio 预览版中的新功能 | Android Developers 当前版本的Android Studio

Elasticsearch:深度学习与机器学习:了解差异

作者&#xff1a;来自 Elastic Elastic Platform Team 近年来&#xff0c;两项突破性技术一直站在创新的最前沿 —— 机器学习 (machine learning - ML) 和深度学习 (deep learning - DL)。人工智能 (AI) 的这些子集远不止是流行语。它们是推动医疗保健、金融等各行业进步的关键…

Java面试八股之MySQL索引B+树、全文索引、哈希索引

MySQL索引B树、全文索引、哈希索引 注意&#xff1a;B树中B不是代表二叉树&#xff08;binary&#xff09;&#xff0c;而是代表平衡&#xff08;balance&#xff09;&#xff0c;因为B树是从最早的平衡二叉树演化而来&#xff0c;但是B树不是一个二叉树。 B树的高度一般在2~…

es是如何处理索引数据的变动的?

1 概述 es是如何处理索引数据的变动的&#xff1f; 或者说索引数据变动时&#xff0c;es会执行哪些操作&#xff1f; refresh、fsync、merge 和 flush 操作有何作用&#xff1f; es是如何确保即使es发生宕机数据也不丢失的&#xff1f; 在回答上述问题前&#xff0c;可以先…

文件操作和IO流

前言&#x1f440;~ 上一章我们介绍了多线程进阶的相关内容&#xff0c;今天来介绍使用java代码对文件的一些操作 文件&#xff08;file&#xff09; 文件路径&#xff08;Path&#xff09; 文件类型 文件操作 文件系统操作&#xff08;File类&#xff09; 文件内容的读…

leetcode--恢复二叉搜索树

leetcode地址&#xff1a;恢复二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下&#xff0c;恢复这棵树 。 示例 1&#xff1a; 输入&#xff1a;root [1,3,null,null,2] 输出&#xff1a;[3,1,null…

AirPods Pro新功能前瞻:iOS 18的五大创新亮点

随着科技的不断进步&#xff0c;苹果公司一直在探索如何通过创新提升用户体验。iOS 18的推出&#xff0c;不仅仅是iPhone的一次系统更新&#xff0c;更是苹果生态链中重要一环——AirPods Pro的一次重大升级。 据悉&#xff0c;iOS 18将为AirPods Pro带来五项新功能&#xff0…

设计模式探索:观察者模式

1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系&#xff0c;当一个对象发生改变时将自动通知其他对象&#xff0c;其他对象会相应地作出反应。 在观察者模式中有如下角色&#xff1a; Subject&#xff08;抽象主题/被观察者&#xf…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Spring框架从入门到学精&#xff08;全&#xff09; 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

外卖商城平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;骑手管理&#xff0c;商品类型管理&#xff0c;商品信息管理&#xff0c;订单信息管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;商品信息&#…

模板初阶详解

目录 泛型编程函数模板函数模板概念函数模板格式函数模板的原理函数模板的实例化隐式实例化强制类型转换的疑惑 显式实例化 模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f41…

微信小程序接口wx.getLocation违规导致封禁解决办法

1、找到站内信的这个封禁的通知&#xff08;功能封禁的通知&#xff0c;而不是处理警告的通知&#xff09; 2、点击通知会有申诉链接&#xff0c;点开申诉链接 申诉原因可参考下面的内容&#xff1a; 1.小程序哪些板块已除去收集地理位置、2.哪些板块需要收集地理位置、3.详细…

WindowsMac共享文件夹设置

共享文件夹设置 共享文件夹设置Windows系统设置步骤一&#xff1a;设置共享文件夹步骤二: 访问共享文件夹 Mac系统中设置共享文件夹步骤一&#xff1a;设置共享文件夹步骤二&#xff1a;访问共享文件夹 小贴士结论 共享文件夹设置 有时需要在多台电脑之间共享文件夹&#xff0…

4.MkDocs样式

学习 Admonitions(警告) - Material for MkDocs (wdk-docs.github.io) 提示 - Material for MkDocs 中文文档 (llango.com) Buttons(按钮) - Material for MkDocs (wdk-docs.github.io) 建议去看这些网站&#xff0c;更为详细。 常用功能 便利贴 ​​ 开启 markdown_ex…

Gemma2——Google 新开源大型语言模型完整应用指南

0.引言 Gemma 2以前代产品为基础&#xff0c;提供增强的性能和效率&#xff0c;以及一系列创新功能&#xff0c;使其在研究和实际应用中都具有特别的吸引力。Gemma 2 的与众不同之处在于&#xff0c;它能够提供与更大的专有模型相当的性能&#xff0c;但其软件包专为更广泛的可…

hdfs大规模数据存储底层原理详解(第31天)

系列文章目录 一、HDFS设计原理 二、HDFS系统架构 三、HDFS关键技术 四、HDFS应用实例 五、解决HDFS不能处理小文件详解问题 文章目录 系列文章目录前言一、设计原理二、系统架构三、关键技术四、应用实例五、解决HDFS不能处理小文件详解问题1. 合并小文件2. 优化Hive配置3. 使…