Spring Cloud Eureka

引入:远程调用时,url是写死的

String url = "http://127.0.0.1:9090/product/"+ orderInfo.getProductId();

解决思路:

比如(医院,学校等)机构的电话号码发生变化,就需要通知各个使⽤⽅, 但是这些机构的使⽤⽅群体是巨⼤的, 没办法做到⼀⼀通知, 怎么处理呢?
机构电话如果发⽣变化, 通知114. ⽤⼾需要联系机构时, 先打114查询电话, 然后再联系各个机构

同样的, 微服务开发时, 也可以采⽤类似的⽅案.
服务启动/变更时, 向注册中⼼报道. 注册中⼼记录应⽤和IP的关系.
调⽤⽅调⽤时, 先去注册中⼼获取服务⽅的IP, 再去服务⽅进⾏调⽤.

服务提供者(Server):⼀次业务中, 被其它微服务调⽤的服务. 也就是提供接⼝给其它微服务.
服务消费者(Client):⼀次业务中, 调⽤其它微服务的服务. 也就是调⽤其它微服务提供的接⼝.
服务注册中⼼(Registry): ⽤于保存Server 的注册信息, 当Server 节点发⽣变更时, Registry 会同步
变更. 服务与注册中⼼使⽤⼀定机制通信, 如果注册中⼼与某服务⻓时间⽆法通信, 就会注销该实例.

服务提供者和服务消费者是相对的

服务注册:服务提供者在启动时, 向 Registry 注册⾃⾝服务, 并向 Registry 定期发送⼼跳汇报存活状
态.
服务发现: 服务消费者从注册中⼼查询服务提供者的地址,并通过该地址调⽤服务提供者的接⼝. 服务
发现的⼀个重要作⽤就是提供给服务消费者⼀个可⽤的服务列表.

CPA理论

⼀致性(Consistency) :CAP理论中的⼀致性, 指的是强⼀致性. 所有节点在同⼀时间具有相同的数据(多个数据库中,主数据库和从数据库的数据同步要完全一致)
可⽤性(Availability): 保证每个请求都有响应(响应结果可能不对)(对所有的请求都有响应)
分区容错性(Partition Tolerance): 当出现⽹络分区后,系统仍然能够对外提供服务(一个服务器出现错误时,其他的服务器能够做出响应)

生活中:以银行举例:银行利率下调,这个通知需要发到各个工作人员(这个通知下发是需要一定的时间的)

一致性:所有的银行工作人员,对客户讲的利率都是一样的

可用性:不论何时,银行工作人员对客户咨询利率都是有答案的(这个答案可能是就的)

分区容错性:如果其中一个工作人员请假了,银行依然可以对外提供服务

常见的注册中心:

1. Zookeeper
Zookeeper的官⽅并没有说它是⼀个注册中⼼, 但是国内Java体系, ⼤部分的集群环境都是依赖
Zookeeper来完成注册中⼼的功能.
2. Eureka
Eureka是Netflix开发的基于REST的服务发现框架, 主要⽤于服务注册, 管理,负载均衡和服务故障
转移.
官⽅声明在Eureka2.0版本停⽌维护, 不建议使⽤. 但是Eureka是SpringCloud服务注册/发现的默认
实现, 所以⽬前还是有很多公司在使⽤.
3. Nacos
Nacos是Spring Cloud Alibaba架构中重要的组件, 除了服务注册, 服务发现功能之外, Nacos还⽀持
配置管理, 流量管理, DNS, 动态DNS等多种特性.

1.搭建Eureka Server(eureka server是一个独立的微服务器)

1.1创建eureka-server子模块

2.2引⼊eureka-server依赖

1.3 项⽬构建插件

1.4 完善启动类

1.5编写配置⽂件

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

2.服务注册

2.1加入eureka依赖

2.2.添加eureka配置信息

2.3启动服务

3.服务发现

3.1加入eureka依赖

3.2添加eureka配置信息

3.3修改远程调用代码

这里用了三个product-service端口,所以

请求次数 1    2    3    4     5     6    7    8    9 

实例         1    2    0    1     2    0    1    2    0

取余:请求计数器%实例数

3.4启动服务器

Eureka和Zookeeper都是⽤于服务注册和发现的⼯具,区别如下:
1. Eureka是Netflix开源的项⽬, ⽽Zookeeper是Apache开源的项⽬.
2. Eureka 基于AP原则, 保证⾼可⽤, Zookeeper基于CP原则, 保证数据⼀致性.
3. Eureka 每个节点 都是均等的, Zookeeper的节点区分Leader 和Follower 或 Observer, 也正因为这
个原因, 如果Zookeeper的Leader发⽣故障时, 需要重新选举, 选举过程集群会有短暂时间的不可⽤

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

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

相关文章

基于深度学习的问答系统

基于深度学习的问答系统是一种利用深度学习技术从文本数据中提取信息并回答用户提出的问题的技术。它在智能助手、客服系统、教育和医疗等领域有广泛应用。以下是对这一领域的系统介绍: 1. 任务和目标 问答系统的主要任务和目标包括: 信息检索&#x…

Android14系统应用统一裁剪方案

Android14系统应用统一裁剪方案 背景 当前移除集成到系统里的应用,一般都是根据应用名,到各个mk文件里逐个在PRODUCT_PACKAGES中删除;这种方法,耗时而且不易管理集成到系统里的应用;需要有一个统一管理删除不需要应用的方案。 方案 参考PRODUCT_PACKAGES变量,添加PRO…

【PyTorch单点知识】自动求导机制的原理与实践

文章目录 0. 前言1. 自动求导的基本原理2. PyTorch中的自动求导2.1 创建计算图2.2 反向传播2.3 反向传播详解2.4 梯度清零2.5 定制自动求导 3. 代码实例:线性回归的自动求导4. 结论 0. 前言 按照国际惯例,首先声明:本文只是我自己学习的理解&…

游戏的无边框模式是什么?有啥用?

现在很多游戏的显示设置中,都有个比较特殊的选项“无边框”。小伙伴们如果尝试过,就会发现这个效果和全屏几乎一毛一样,于是就很欢快地用了起来,不过大家也许会发现,怎么和全屏比起来,似乎有点不够爽快&…

渲染引擎实践 - OSG引擎渲染一帧的过程

一:概述 经过前面两节的介绍,我们已经创建了窗口(OSG引擎窗口)和启动了渲染线程(OSG渲染线程)。当应用程序加载好模型数据以后,就开始正式的渲染了,那么本节分析下渲染一帧的过程,本文尽量做到简单,清晰&am…

uniapp编译成h5后接口请求参数变成[object object]

问题:uniapp编译成h5后接口请求参数变成[object object] 但是运行在开发者工具上没有一点问题 排查: 1:请求参数:看是否是在请求前就已经变成了[object object]了 结果: 一切正常 2:请求头:看…

AST反混淆实战:提升JavaScript代码的可读性与调试便利性

博客标题:AST反混淆:提升JavaScript代码的可读性与调试便利性 引言 JavaScript代码混淆是一种常见的保护源码的方法,但这也给代码的维护和调试带来了不小的挑战。抽象语法树(AST)提供了一种结构化的方式来分析和转换…

C语言实现数据结构B树

B树(B-Tree)是一种自平衡的树数据结构,它维护着数据的有序性,并允许搜索、顺序访问、插入、删除等操作都在对数时间内完成。B树广泛用于数据库和操作系统的文件系统中。 B树的基本特性 根节点:根节点至少有两个子节点…

平安好车主:“保”你车平安,“养”出好生活~

“小朋友 你是否有很多问号,为什么......”从出生到长大,不论我们身居何处,年岁几何,妈妈似乎总有嘱咐不完的话。小时候,总不能理解妈妈的话,只想摆脱唠叨,期盼快快长大。 如今,我们羽翼渐丰,已能驾驭人生,肩负起家庭的重任,但妈妈的话却依然从未落下。不过,此刻的我们,不仅能…

Gitea 仓库事件触发Jenkins远程构建

文章目录 引言I Gitea 仓库事件触发Jenkins远程构建1.1 Jenkins配置1.2 Gitea 配置引言 应用场景:项目部署 I Gitea 仓库事件触发Jenkins远程构建 Gitea支持用于仓库事件的Webhooks 1.1 Jenkins配置 高版本Jenkins需要关闭跨域限制和开启匿名用户访问 在Jenkins启动前加入…

Windows 32 汇编笔记(二):使用 MASM

一、Win32 汇编源程序的结构 ; Hello.asm ; 使用 Win32 ASM 写的 Hello, world 程序 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>…

STM32入门开发操作记录(一)——新建工程

目录 一、课程准备1. 课程资料2. 配件清单3. 根目录 二、环境搭建三、新建工程1. 载入器件支持包2. 添加模块3. ST配置4. 外观设置5. 主函数文件 一、课程准备 1. 课程资料 本记录操作流程参考自b站视频BV1th411z7snSTM32入门教程-2023版 细致讲解 中文字幕,课程资…

柯桥韩语培训韩语学习力职场口语韩语中的职场黑话你知道几个?

生活中比较常用的,与职场生活有关的新造词有상사병, 직장살이, 무두절(無頭節)等。一起来看下他们的意思吧... 상사병 상사병是指因为上司多变不定的指示而火大的意思。 직장살이 직장살이用来比喻职场生活也需要看上司的脸色,就像在婆家看婆婆脸色一样…

gorm只查询某一些字段字段的方法Select, 和只查询某一字段方法 Pluck

gorm中默认是查询所有字段的, 如果我们只需要获取某些字段的值,可以通过使用 Select方法来指定要查询的字段来实现, 也可以通过定义一个需要字段的结构体来实现; 而如果我们只需要查询某一个字段的值就可以使用 Pluck方法来获取(这…

如何将已有的docker服务迁移至Kubernetes集群中

如何将已有的docker服务迁移至Kubernetes集群中 问题描述迁移思路准备工作迁移gitlab过程1. 创建namespace2. 创建gitlab需要的pv跟pvc3.创建gitlab的deployment4.创建gitlab的service5.创建gitlab的ingress6.将原来的gitlab容器中的数据打包7.恢复配置文件数据8.正式恢复数据 …

100个C++面试题

面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定…

【刷题汇总 -- 删除公共字符、两个链表的第一个公共结点、mari和shiny】

C日常刷题积累 今日刷题汇总 - day0121、删除公共字符1.1、题目1.2、思路1.3、程序实现 -- 蛮力法1.4、程序实现 -- 哈希 2、两个链表的第一个公共结点2.1、题目2.2、思路2.3、程序实现 -- 对齐比对法2.4、程序实现 -- 公共端点路程法 3、mari和shiny3.1、题目3.2、思路3.3、程…

简述编辑 编译 和运行 java application的全过程

简述编辑 编译 和运行 java application的全过程 编辑、编译和运行Java应用程序通常涉及以下几个步骤: 1. 编辑 首先,你需要一个文本编辑器来编写Java源代码。常用的编辑器包括Eclipse、IntelliJ IDEA、Visual Studio Code、Notepad等。你可以创建一个新…

[python]基于yolov10+gradio目标检测演示系统设计

【设计介绍】 YOLOv10结合Gradio实现目标检测系统设计是一个结合了最新目标检测技术和快速部署框架的项目。下面将详细介绍这一系统的设计和实现过程。 一、YOLOv10介绍 YOLOv10是YOLO(You Only Look Once)系列的最新版本,由清华大学的研究…

RabbitMQ的工作模式

RabbitMQ的工作模式 Hello World 模式 #mermaid-svg-sbc2QNYZFRQYbEib {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sbc2QNYZFRQYbEib .error-icon{fill:#552222;}#mermaid-svg-sbc2QNYZFRQYbEib .error-text{fi…