深入解析:服务注册 / 服务发现 - Eureka

news/2025/11/11 15:48:40/文章来源:https://www.cnblogs.com/ljbguanli/p/19210615

深入解析:服务注册 / 服务发现 - Eureka

目录

背景

问题出现

解决:

注册中心

CAP 理论

注册中心

Eureka 介绍

搭建 Eureka Server

服务注册

服务发现


背景

问题出现

上篇中,我们借助 RestTemplate 接口实现远程调用的时候,URL 的写死的。

当更换机器,URL 就需要发生变更,随之而来的就是各个项目的配置文件也都需要发生变化。

解决:

通过微服务开发中,能够采用类似 114 查号台的执行。

当服务启动 / 变更的时候,向注册中心报道,注册中心记录应用和 IP 的关系。

调用方调用的时候,先去注册中心获取服务方的 IP,再去服务方进行调用。

注册中心

注册中心,用于维护一个列表,那个机器上线了,那个机器宕机,这些信息都会自动更新到服务列表上,客户端拿到该列表,直接进行服务调用即可。

注册中心主要有三种角色:

服务提供者(Server):一次业务中,提供给接口给其他微服务。

服务消费者(Client):一次业务中,调用其他微服务供应的接口。

服务注册中心(Registry):用于保存 Server的注册信息,当 Server 节点发生变化的时候,Resigtry 会同步进行变更。服务与注册中心使用一定的机制来进行通信。如果注册中心和某服务长时间无通信,就会注销该实例。

三者之间的关系与工作内容允许用两个概念解释:

服务注册:服务提供者在启动的时候,向 Resgitry 注册自身服务,并向 Resgistry 定期发送心跳,汇报存活状态。

服务发现:服务消费者从注册中心查询到服务提供者的信息,并通过该地址调用服务提供者的接口。

注意:服务提供者和服务消费者的定义是相对的。

CAP 理论

CAP 理论是分布式系统中最基础,也是最关键的理论。

C:一致性。CAP 理论中的一致性,指的是强一致性。所有节点在同一时间具有相同的材料。

A:可用性。保证每个请求都有响应。(响应结果可能错误)

P:分区容错性。当出现网络分区后,系统仍然能够对外提供服务。

一致性:

有如下数据库集群

数据库集群需要向客户端进行响应。

响应时机有如下两种:

1. 主库接收到请求,处理成功,此时材料并未完全同步到从库中。随着时间的推移,主库和从库的内容,最终会达到一个一致性。 ==》 此时为弱一致性

2. 主库接收到请求,并且所有从库数据同步成功成功。 ==》 强一致性

CAP 理论:一个分布式系统,不可能同时满足数据一致性,服务可用性,分区容错性这三个基本需求,最多只能同时满足两个。

在分布式系统中,系统之间的网络不可能 100% 健康,服务又必须对外保证。因此分区容错性不可避免,所有只能再在 C 和 A 中选择一个。也就是 CP 或者 AP 架构。

CP 架构:为了保证分布式系统对外的数据统一性,在第二位滑稽老铁读数据的时候,就不给他返回任何数据。

AP 架构:为例保证分布式系统的可用性,在第二位滑稽老铁读数据的时候,会给他返回 V0 版本的素材(即使这个数据已经错误了)

CAP 理论详情可参考文章:一文理解 CAP(大佬写的非常好~~~)

注册中心

Zookeeper 注册中心实现的是 CP,也就是保证数据一致性。

Eureka 注册中心实现的是 AP,也就是保证数据可用性。

Nacos 注册中心可用实现 AP 或 CP,默认完成 AP

在分布式环境中,即使拿到一个错误的资料,也胜过无法提供实例信息而造成请求失败要好(淘宝,京东实现的都是 AP 原则)

Eureka 介绍

Eureka 是 Netflix OSS 套件中关于服务注册和发现的解决方案。 SpringCloud 对 Eureka 进行了集成,并 作为优先推荐方案进行宣传,虽然目前 Eureka2.0 已经停止维护,新的微服务架构设计中,也不再建议运用,但是目前依然有大量公司的微服务框架使用 Eureka 作为注册中心。

Eureka 分为两部分:

Eureka Server:作为注册中心的服务端,为微服务应用提供服务注册,服务发现,健康检查等核心能力。

Eureka Client:作为服务提供者客户端,当服务启动时,会主动向 Eureka Server 注册自身信息。Eureka Server 会存储这些信息,以供其他服务查询和调用。

搭建 Eureka Server

Eureka-server 是一个独立的微服务

创建一个 Eureka-server 自模块

引入 eureka-server 依赖

项目构建插件

完善启动类

Eureka-server 的启动类上面还要添加一个 @EnableEurekaServer 注解,开启 eureka 注册中心服务。

编写配置文件:

启动服务,访问注册中心:http://127.0.0.1:10010/

erueka-server 启动成功。

服务注册

接下来在 product-service 注册道 eureka-server 中

在 product-service 中的 pom 资料中,停入 eureka-client 依赖,注意这里是 eureka-client 依赖,而不是 server 依赖

完善配置文件,添加服务名称和 eureka 地址

此时先启动 eureka-server 的服务,再启动 product-service 服务,刷新,看到 product-service 已经注册到 eureka 上了

服务发现

接下来修改 order-service,在进行远程调用的时候,从 eureka-server 中拉取 product-service 的服务信息,完成服务发现。

同样的,在 order-service 中也需要引入 eureka-client 依赖,配备 eureka 地址

接下来就可以达成远程调用操作。

从 eureka-server 中获取到 product-service 的列表(注意,这里可能存在多个服务),从中选取一个进行调用

注意,DiscoveryClient 对象引入的时候,导入的包是接口:

此时启动服务,再刷新注册中心,发现 order-service 也注册到 eureka 上了

此时访问:http://127.0.0.1:8080/order/1

远程调用也成功了。

补充:Eureka 基于 AP 原则,保证可用性,Zookeeper 基于 CP 原则,保证数据一致性!

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

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

相关文章

小型skywalking - ukyo-

https://gitee.com/createmaker/skywalk/tree/dev本文来自博客园,作者:ukyo--碳水化合物,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/19210614

完整教程:顺序步进频与捷变频雷达:原理、建模与测距方法

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:在 Claude Code 中设置 MCP 服务器(技术总结)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Linux使用CentOS 7内核修改镜像源解决“Could not resolve host: mirrorlist.centos.org;未知的错误“问题

转载自:https://www.jb51.net/server/345687zyo.htm 解决yum安装工具时提示以下错误信息 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://…

AI学习之路

83年生人,以问题和需求为导向的程序员、管理人员和技术决策者。对AI来了兴趣,于是构建路径、持续行动,长期主义,望能略有小成。 第一卷 AI基础 第一章 硬件 第一节 CPU、GPU 第二节 算力 第二章 数学 第三章 Pytho…

2025年钢骨架轻型板批发厂家权威推荐榜单:泡沫混凝土复合板/KST板/发泡水泥复合板源头厂家精选

在绿色建筑与装配式建筑快速发展的今天,钢骨架轻型板以其轻质高强、保温隔热的优异性能,已成为现代工业与民用建筑不可或缺的理想材料。行业数据显示,全球钢骨架轻型板市场正保持稳定增长态势。为帮助您精准定位优质…

艾体宝干货 | Redis Python 开发系列#2 核心数据结构(上)

前言 继上篇文章,成功连接 Redis 之后,我们直面其核心:数据结构。Redis 的强大,绝非仅是简单的键值存储,而是其精心设计的多种数据结构所能解决的各种业务场景。 本篇读者收益精通 String 类型的全部核心命令,掌…

[GXYCTF2019]Ping Ping Ping wp - fish666

[GXYCTF2019]Ping Ping Ping wp 命令注入漏洞 空格绕过 内联命令读取存在命令注入漏洞 “fxck” 是脏话 “fuck” 的刻意拼写变形,攻击性极强这个表明,空格被过滤。 那么就要想,怎样绕过??? 空格 可以用空格${…

2025 年 11 月码垛机厂家推荐排行榜,全自动/高位/低位/立柱/编织袋/纸箱/桶/粉料/肥料码垛机,江苏/无锡码垛机器人实力解析

2025 年 11 月码垛机厂家推荐排行榜,全自动/高位/低位/立柱/编织袋/纸箱/桶/粉料/肥料码垛机,江苏/无锡码垛机器人实力解析随着工业自动化水平的不断提升,码垛机作为生产线末端的关键设备,在提高生产效率、降低人力…

2025年西瓜专用膜厂家权威推荐榜单:水果专用膜/长寿流滴膜/灌浆膜源头厂家精选

在设施农业高速发展的今天,西瓜专用膜已成为提升西瓜品质与产量的关键因素。据行业数据显示,2024年中国功能性农膜市场规模已突破200亿元,其中专用功能膜的需求正快速增长。为帮助种植户精准选择优质供应商,本文基…

2025 年 11 月包装称厂家权威推荐榜:全自动/定量/FFS重膜/高速/锂电/零排放/螺旋/吨袋包装称,铜精粉与肥料吨包高效解决方案

2025 年 11 月包装称厂家权威推荐榜:全自动/定量/FFS重膜/高速/锂电/零排放/螺旋/吨袋包装称,铜精粉与肥料吨包高效解决方案 随着工业自动化水平的不断提升,包装称作为生产线上的关键设备,在提高生产效率、保障产品…

基于MATLAB图像特征识别及提取实现图像分类

在MATLAB中实现图像特征提取与图像分类通常涉及以下几个步骤:图像读取、预处理、特征提取、特征选择、分类器训练和测试。 1.图像读取 首先,你需要读取图像数据。可以使用MATLAB的imread函数来读取图像。 img = imre…

Strix:用AI做渗透测试,把安全漏洞扼杀在开发阶段

你的应用真的安全吗?传统安全扫描工具给你一堆"可能存在的漏洞",但哪些是真的? Strix是一个开源的AI安全测试工具,它不只是扫描代码找问题,而是像真正的黑客一样——运行你的程序、尝试攻击、验证漏洞是…

无限长直导线周围电场分布的MATLAB

针对无限长直导线周围电场分布的MATLAB程序实现,结合解析法、镜像电荷法及PDE数值解法三种方法一、解析法(直接公式计算) 理论基础: 无限长直导线电势公式: \(ϕ(r)=−2πε0λln(r)+C\) 电场强度公式: \(E(r)=2…

Codeforces Round 1063 (Div.2) 题解

赛时分析 Solved 3/6 rank 875。AB做的正常,C略慢。想直接跳D2,但是D2用到了D1的一个性质,其实不如直接先做D1就是大分了... 比赛链接:https://codeforces.com/contest/2163 A 直接sort,如果每个偶数i时,$ a_i = …

SI502、SI502B——NFC前端芯片

小体积QFN16的Si502、Si502B均为高度集成的NFC前端芯片,工作频率为13.56MHz,支持多种主动/被动非接触式通信协议(ISO 14443 A/B、Felica、NFCIP-1)。芯片均具备5种工作模式:读写器模式、卡模拟模式、NFCIP-1模式和…

1-2-3-泛型与反射

全面总结Java泛型与反射的面试要点,涵盖机制、底层原理和应用场景。主要内容如下:泛型核心概念与机制:介绍泛型的作用、类型擦除原理和通配符系统,使用表格对比通配符类型。 反射机制与原理:详细说明反射的基础、…

读书笔记:白话解读:Oracle并行加载与空间管理的艺术

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

1-2-4-集合框架

Java集合框架是面试中的重点考察领域。下面我为你梳理一份涵盖机制、底层原理与应用场景的全面总结,并附上典型面试问题深度解析。 一、集合框架总体概述 Java集合框架(Java Collections Framework)提供了一套性能优…