Nacos,OpenFeign,Ribbon,loadBalance如何相互协调工作

news2024/11/25 16:22:29

1、SpringCloud规范

对于Nacos而言其作用在于服务注册发现和配置中心,对于Ribbon而言作用在于实现实例负载均衡,对于OpenFeign而言要通过rpc实现远程调用

2、Nacos实现服务注册发现

SpringCloud提供了ServiceRegistration接口,实现服务注册功能

在这里插入图片描述对于Nacos而言只需要实现 ServiceRegistry接口 ,进行服务注册即可

服务注册时机在哪?

应该是SpringBoot启动之后,此时当前服务应该自动往Nacos服务注册中心自动注册。
通过SpringBoot的事件监听机制(ApplicationListener,ApplicationEvent)。启动之后发送事件进行触发自动注册

AutoServiceRegistration有个抽象实现AbstractAutoServiceRegistration
在这里插入图片描述
在这里插入图片描述在这里插入图片描述通过Eureka也是这个道理!

3、nacos配置中心

配置中心是通过实现ConfigService获取的,默认查本地,本地没有就拿配置中心的
在这里插入图片描述

4、Ribbon和LoadBalance负载均衡

Ribbon提供了一个获取服务实例的接口,叫ServerList,实现他即可

在这里插入图片描述通过实现类来实现自定义的负载均衡策略

随着Ribbon等组件停止维护之后,SpringCloud官方自己也搞了一个负载均衡组件loadbalancer,用来平替Ribbon。
在这里插入图片描述

5、OpenFeign (远程调用)

OpenFeign是一个rpc框架,当我们需要调用远程服务的时候,只需要声明个接口就可以远程调用了,就像下面这样

在这里插入图片描述
当调用方法的时候,会根据方法上面的参数拼接一个http请求地址,这个地址的格式是这样的http://服务名/接口路径。

比如,上面的例子,当调用saveOrder方法的时候,按照这种规律拼出的地址就是这样的 http://order/order,第一个order是服务名,第二个order是PostMapping注解上面的

问题在于:服务实例可能有多个啊??

此时负载均衡需要上场了,获取到最终的ipPort之后,就会将上面的地址进行替换,然后进行RPC

假设获取到的orde服务所在的ip和端口分别是192.168.2.100和8080,最终重构后的路径就是http://192.168.2.100:8080/order,之后OpenFeign就可以发送http请求了。

6、总结

在这里插入图片描述
原文:https://mp.weixin.qq.com/s/NKSlSfHsO-tr5UFJqRy_pQ

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

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

相关文章

软件保护器:Themida 3.1.14 Crack

先进的Windows软件保护系统 版本:3.1 版本:3.1.4.0 日期:2022 年 11 月 10 日 概述 在创建应用程序时,Compiler 会将应用程序源代码编译成多个由机器语言代码构成的目标文件。然后将目标文件链接在一起以创建最终的可执行文件。 与…

【chapter29】【PyTorch】[交叉验证】

前言 前面讲了 Underfit , Overfit ,这里重点讲解一下如何检测 一 数据集划分 训练的时候,我们一般把数据集分成 训练集 和 验证集 每训练一轮或者几轮.validation 一次,看一下当前 验证集上的loss&acc 是否 提升.如果已经是最佳值,则提前结束训练,防止过拟合…

如何做好联络口译的译前准备工作?

我们知道,译前准备与口译质量有着紧密的联系。在联络口译中,对口译员的双语能力和知识储备有着十分高的要求,为了能够顺利完成口译任务,就必须进行译前准备。那么,如何做好译前准备工作?联络口译的译前准备…

强烈推荐这 6 款 API 测试工具,绝对有一款没听过

Postman: Postman 是一个流行的 API 开发和测试工具,提供了丰富的功能,包括请求构建、测试自动化、数据驱动等。用户可以通过 Postman 的界面轻松创建和测试 RESTful API。 Insomnia: Insomnia 是一款功能强大的开源 API 测试工具,支持多种协…

Windows 远程桌面提示没有远程桌面授权服务器可以提供许可证

可参考之前发布的一篇文章,帮助你远程登录:远程连接提示 由于没有远程桌面授权服务器提供许可证_计算机没有远程桌面客户端访问许可证_csdn_aspnet的博客-CSDN博客 虽然上述文章命令可以远程进入系统,但是每次都需要使用上述文章中的命令进入…

MySQL高级篇——索引的创建与设计原则

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 一、索引的分类与使用 1.1 索引的分类 1.1.1. 普通索引 1.1.2. 唯一性索引 1.1.3. 主键索引(唯一非空) 1.1.4…

Jetson Orin MultiMedia 使用总结

1.Jetson Orin /Xavier 对于图片的输入以及输出处理有一套特定的API。代码存放在/usr/src/jetson_multimedia_api中。 2.其中最主要的几个头文件:缓存管理申请 nvbufsurface.h 缓存转换 nvbufsurftransform.h 显示 nvosd.h 以及显示模块。 3.YUV转RGB来分析一下各…

开发人员应考虑使用 Edge浏览器的 8 个理由

1.无限访问ChatGPT 这是正确的。您可以通过 Bing 访问 GPT-4。但与 2021 年后没有数据的 ChatGPT 不同,必应通过从自己的搜索引擎中提取最新数据来对其进行补偿。 首先,点击Edge 浏览器左上角的Bing 小图标 Bing 具有三个选项卡:Chat、Compo…

VMware虚拟机安装黑苹果10.15 || AMD R7 5800处理器

VMwar版本:16Pro 链接:https://pan.baidu.com/s/1qGHEynWSV4YS9WSNonxiuA?pwdazvh 提取码:azvh macOS链接,版本为Catalina 10.5。这个版本后,os安装包就过10G了,会特别卡。 链接:https://pan…

YOLOv1代码复现1:辅助功能实现

YOLOv1代码复现1:辅助功能实现 前言 ​ 在经历了Faster-RCNN代码解读的摧残后,下决心要搞点简单的,于是便有了本系列的博客。如果你苦于没有博客详细告诉你如何自己去实现YOLOv1,那么可以看看本系列的博客,也许可以帮助…

操作指南|如何创建x-chain DAO

DAO是一个去中心化组织,大体与任何其他组织一样,但它是由智能合约中编码的规则所管理,并使DApps等能够完全去中心化且自主运行。 📄 查看MoonbeamDocs 这与通常的分步教程不同,该推文旨在分享关于运行去中心化自治组…

delta.io 2.3.0 overwrite模式 overwriteSchema df覆盖table的表schema

初始化一张表 overwriteSchema 默认为false 图中注意事项: Note that the schema cant be overwritten when using replaceWhere. overwriteSchema 配置为true 可成功覆盖插入 overwriteSchema=true的配置项必须配置.mode("overwrite") 而不能是.mode("append…

( 栈和队列) 225. 用队列实现栈 ——【Leetcode每日一题】

❓225. 用队列实现栈 难度:简单 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入…

国云筑基“翼”气风发,天翼云以科技创新绘就数字中国蓝图

科技云报道原创。 全球新一轮技术革命方兴未艾,特别是以数字技术为核心的信息技术革命,正在实现群体突破和加快广泛深度应用。 从2017年的“促进数字经济加快成长”,到2019年的“壮大数字经济”,到2020年的“全面推进‘互联网&am…

从0搭建Vue3组件库(八):使用 release-it 实现自动管理发布组件库

使用 release-it 实现自动管理发布组件库 上一篇文章已经打包好我们的组件库了,而本篇文章将介绍如何发布一个组件库。当然本篇文章介绍的肯定不单单只是发布那么简单。 组件库发布 我们要发布的包名为打包后的 easyest,因此在 easyest 下执行pnpm init生成package.json {&…

数字中国建设2522整体框架

作为影响中国未来发展的重磅文件,《数字中国建设整体布局规划》明确了两个重要时间节点: 到 2025 年,基本形成横向打通、纵向贯通、协调有力的一体化推进格局,数字中国建设取得重要进展; 到 2035 年,数字化…

Compiler- 尾调用

我们还是用例子来引入本次要探讨的问题--尾调用 #include <stdio.h>int fib(int a) {return a < 2 ? 1 : fib(a - 1) fib(a - 2); }int main() {int n,result;scanf("%d",&n);result fib(n);printf("result is %d.\n",result);return 0; …

JavaWeb02(Servlet页面跳转方式表单提交方式)

目录 一.servlet 1.1 什么是servlet? 1.2 实现接口,初始代码 1.3 学会配置和映射 1.4 掌握servlet的生命周期 生命周期的各个阶段 1.5 获取servlet初始化参数和上下文参数 1.5.1 初始代码 推荐使用 1.5.2 初始化参数 1.5.3 上下文参数 1.6 servlet应用:处理用户登…

多处理器的汇编编程

多处理器编程&#xff0c;本质上&#xff0c;就是把MR给每个处理器复制一份 每个处理器拿到MR&#xff0c;形成了自己的缓存内存空间&#xff0c;然后再在运行期间把运算结果写入共享内存 把i做成一条指令 使用asm嵌入汇编&#xff0c;向sum的寄存器直接写入1的值 把C语言转…

【Python入门第五十三天】Python丨NumPy 中的随机数

什么是随机数&#xff1f; 随机数并不意味着每次都有不同的数字。随机意味着无法在逻辑上预测的事物。 伪随机和真随机 计算机在程序上工作&#xff0c;程序是权威的指令集。因此&#xff0c;这意味着必须有某种算法来生成随机数。 如果存在生成随机数的程序&#xff0c;则…