中间件 - 使用Eureka进行微服务注册与发现

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!

前言
在微服务架构中,服务注册与发现是一个重要的组成部分。Netflix开源的Eureka是一个优秀的服务发现解决方案,本文将介绍如何使用Eureka来管理和发现微服务。

使用Eureka进行微服务注册与发现

        • 什么是Eureka?
        • 使用Eureka的好处
        • 使用Eureka进行微服务注册与发现
          • 1. 搭建Eureka服务器
          • 2. 创建Eureka客户端微服务
          • 3. 使用Eureka进行服务发现
        • 总结

什么是Eureka?

Eureka是Netflix开发的一个REST服务,用于服务的注册与发现。它提供了简单易用的API,允许微服务在运行时注册自己,并且能够发现其他服务的位置和状态。Eureka基于客户端-服务端架构,服务注册是通过Eureka客户端完成的,服务发现则是通过Eureka服务端完成的。

使用Eureka的好处
  1. 动态扩展与收缩服务: 新的服务可以动态注册,不需要人工介入。
  2. 高可用性: Eureka支持服务注册表的多节点部署,保证了高可用性。
  3. 自动故障转移: Eureka能够自动从注册表中移除长时间未更新的服务实例,防止客户端调用到已经下线的服务。
  4. 自我保护机制: 当Eureka节点在短时间内丢失过多客户端时,Eureka会进入自我保护模式,确保服务的可用性。
使用Eureka进行微服务注册与发现
1. 搭建Eureka服务器

首先,我们需要搭建一个Eureka服务器作为服务注册中心。

  1. 创建Spring Boot项目:

    使用Spring Initializr创建一个新的Spring Boot项目,添加依赖 Eureka Server

  2. 配置Eureka服务器:

    application.properties(或 application.yml)中配置Eureka服务器:

    spring.application.name=eureka-server
    server.port=8761eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=falseeureka.server.enable-self-preservation=false
    
    • register-with-eurekafetch-registry 设置为 false 表示这是一个Eureka服务器,不需要注册到其它Eureka服务器上。
  3. 启动Eureka服务器:

    编写一个启动类(或者使用Spring Boot的 @SpringBootApplication 注解),启动Eureka服务器。

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

    启动应用程序,Eureka服务器将运行在端口 8761 上。

2. 创建Eureka客户端微服务

现在,我们将创建一个简单的微服务,让它注册到我们刚刚搭建的Eureka服务器上。

  1. 创建Spring Boot项目:

    使用Spring Initializr创建一个新的Spring Boot项目,添加依赖 Eureka Discovery Client

  2. 配置Eureka客户端:

    application.properties(或 application.yml)中配置Eureka客户端:

    spring.application.name=service-provider
    server.port=8081eureka.client.service-url.default-zone=http://localhost:8761/eureka/
    
    • default-zone 指定了Eureka服务器的地址。
  3. 编写一个REST控制器:

    @RestController
    public class HelloController {@GetMapping("/hello")public String hello() {return "Hello from service-provider!";}
    }
    
  4. 启动微服务:

    编写一个启动类(或者使用Spring Boot的 @SpringBootApplication 注解),启动这个微服务。

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

    启动应用程序,这个微服务将会自动注册到Eureka服务器上。

3. 使用Eureka进行服务发现

现在我们可以通过Eureka服务器来发现并调用服务提供者。

  1. 创建服务消费者:

    创建一个新的Spring Boot项目,添加依赖 Eureka Discovery Client

  2. 配置服务消费者:

    spring.application.name=service-consumer
    server.port=8082eureka.client.service-url.default-zone=http://localhost:8761/eureka/
    
  3. 编写一个REST控制器来消费服务:

    @RestController
    public class HelloController {@Autowiredprivate RestTemplate restTemplate;@Value("${service.provider.url}")private String serviceProviderUrl;@GetMapping("/consume")public String consumeService() {String url = serviceProviderUrl + "/hello";return restTemplate.getForObject(url, String.class);}
    }
    
  4. 启动服务消费者:

    启动服务消费者应用程序,它将从Eureka服务器获取服务提供者的地址,并调用 service-provider 提供的 /hello API。

通过这些步骤,你已经成功使用Eureka建立了一个简单的微服务架构,包括服务注册、发现和消费。Eureka作为一个可靠的服务注册中心,帮助你管理微服务架构的复杂性,提升了系统的弹性和可维护性。

总结

本文介绍了如何使用Netflix的Eureka实现微服务的注册与发现。通过Eureka,你可以构建出高可用性、弹性的微服务架构,轻松管理多个微服务之间的依赖关系。希望本文能够帮助你快速入门并掌握Eureka的基本用法。

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

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

相关文章

【C#】.net core 6.0 webapi 使用core版本的NPOI的Excel读取数据以及保存数据

欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景读取并保存NPOI信息NPOI 插件介绍基本功能示例代码写入 Excel 文件…

前端JavaScript处理小数精度问题(最佳实践)

前言: 针对于小数精度问题,本次我们主要推荐两种方式,一种是简单的函数封装,一种是使用第三方库big.js。 方法一: 自封装函数搭配parseFloat和toFixed解决小数精度问题,仅适用于解决一般性小数精度问题&…

【云原生】Kubernetes----k8s免密使用harbor私有仓库

目录 引言 一、搭建Harbor仓库 (一)关闭防护 (二)安装docker (三)安装docker-compose (四)安装harbor-offline 1.获取安装包 2.修改配置文件 3.启动服务 4.登录仓库验证 二…

营销人看巴黎奥运会,看到了什么?

不同的人眼中的巴黎奥运会是不一样的:环保人士关注奥运场馆的绿色设计,以及赛事期间对可再生能源的利用;旅游博主用镜头捕捉巴黎奥运会每一个精彩瞬间;社会学家在巴黎奥运会看到多元文化的交流与融合…… 那么营销人在巴黎奥运会…

聚观早报 | OPPO Find X8系列电池曝光;小米15 Pro更多影像细节

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 7月30日消息 OPPO Find X8系列电池曝光 小米15 Pro更多影像细节 KeeTa平台已开放便利店入驻 比亚迪方程豹将扩大…

大模型面试之LoRA

LoRA的解释:一种高效微调预训练神经网络的方法 LoRA 解决的问题: 🔸 2021年初,微软与OpenAI合作探索GPT-3的商业可行性。 🔸 发现仅仅通过提示(prompting)不足以完成生产任务,例如…

EfficientNet-v2-s图像分类训练(简洁版)

使用torchvision集成的efficientnet-v2-s模型,调用torchvision库中的Oxford IIIT Pet数据集,对模型进行训练。 若有修改要求,可以修改以下部分: train_dataset OxfordIIITPet(root./data, splittrainval, downloadTrue, transfo…

loguru日志模块:简化Python自动化测试的日志管理!

引言 日志是软件开发中的关键组成部分,为开发和测试人员提供了调试和监控应用程序的重要手段。loguru 是一个第三方的 Python 日志库,以其简洁的 API 和自动化的功能脱颖而出。本文将探讨为什么项目中需要日志,loguru 为何受到青睐&#xff…

【Python机器学习】决策树的构造——递归构建决策树

我们可以采用递归的原则处理数据集,递归结束的条件是:程序遍历完所有划分数据集的属性,或者每个分支下的所有实例都具有相同的分类。如果所有实例具有相同的分类,则得到一个叶子节点或者终止块。任何到达叶子节点的数据必然属于叶…

年化27.9%,最大回撤-13.6%的可转债因子策略,结合机器学习特征筛选(附python代码)

原创文章第603篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们重新更新了可转债的全量数据,包含全量已经退市的转债。 ——这是与股票市场不一样的地方,股票退市相对少,而转债本身就有退出周期。 因此&…

x264 环路滤波原理系列:x264_frame_deblock_row 函数

x264_frame_deblock_row 函数 功能:该函数对视频帧中的一行宏块(Macroblock)进行去块滤波处理。去块滤波是视频编码中常用的一种技术,用于减少宏块之间的边界不连续性,从而提高视频质量。 函数关系与原理图: 函数原理流程梳理: 局部变量初始化;for 循环处理每个宏块:…

如何借助低代码 + BI 实现国央企数智化转型?

概要 在当前的软件开发时代,许多企业面临着核心技术缺失、专业人才短缺以及产品能力单一等问题,迫切需要加强技术实力,补充和扩展原有的业务和行业能力。将技术与业务需求深度结合,构建适应时代需求的技术业务模式,成…

容易发表的医学SCI期刊推荐,附投稿经验

常笑医学整理了适合医学生、医务工作者进行论文投稿的医学SCI期刊,附期刊详细参数与真实投稿经验,供大家参考。 1、ULTRASOUND IN MEDICINE AND BIOLOGY(超声医学和生物学) (详细投稿信息请点击刊物名称查看&#xff…

MATLAB被360误杀的解决方案

前面被误杀,今天又被误杀。 前面误杀结果是缺少文件,重装MATLAB也不行。 结果重装了操作系统。 这次,看到了提示额外小心。 当时备份了“病毒”文件,结果备份的也被杀了。 解铃还须系铃人 在360安全卫士里面恢复,步骤…

数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)

数据库管理225期 2024-07-30 数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)1 二进制向量维度格式2 RAC上的复制HNSW向量索引3 JSON集合4 JSON_ID SQL函数5 优化的通过网络对NVMe设备的Oracle的原生访问6 DBCA支持PMEM存储7 DBCA支持标准版高可…

PPT图表制作

一、表格的底纹 插入→表格→绘制表格→表设计→选择单元格→底纹 二、把一张图片做成九宫格 1. 把一张图片画成九宫格(处理过后还是一张图片,但是有框线) 绘制33表格→插入图片→全选表格单元格→右键设置形状格式→填充→图片或纹理填充…

前后端分离开发遵循接口规范-YAPI

目前,网站主流开发方式是前后端分离。因此前后端必须遵循一套统一的规范,才能保证前后端进行正常的数据(JSON数据格式)请求、影响,这套规范即是 YAPI. 产品经理撰写原型; 前端或后端撰写接口文档。 YAPI…

一座山城如何打造教育“一张网”

教育新基建作为国家新基建的重要组成部分,是实现教育高质量发展的基础支撑。2021年,教育部等六部门印发相关部署意见时明确提出:到2025年,基本形成结构优化、集约高效、安全可靠的教育新型基础设施体系。 在此宏观导向下,山城重庆积极响应,立足本地情况,开启了其特色化的探索之…

K8s对接Ceph-csi配置手册(附带踩坑记录以及解决方法)

目录 Ceph CSI (Container Storage Interface) CSI 的作用: 前提配置 版本信息 获取Ceph认证信息 获取Ceph集群Monitor信息 下载并部署Ceph CSI 如果此时全部显示错误,那就代表镜像拉取错误,此时执行的yaml脚本,通过yaml脚…

进行良好的文献综述能否提高学术研究的可信度

VersaBot一键生成文献综述 进行良好的文献综述 对于从多个方面提高学术研究的可信度至关重要; 1. 展示专业知识: 全面的回顾表明您对您所在领域的现有知识和相关理论有深入的了解。这将使您成为权威,并将您的研究置于更广泛的背景下。 2.…