深度解析Dubbo的基本应用与高级应用:负载均衡、服务超时、集群容错、服务降级、本地存根、本地伪装、参数回调等关键技术详解

负载均衡

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/loadbalance/

如果在消费端和服务端都配置了负载均衡策略, 以消费端为准。

这其中比较难理解的就是最少活跃调用数是如何进行统计的?

讲道理 最少活跃数应该是在服务提供者端进行统计的, 服务提供者统计有多少个请求正在执行中。 但在Dubbo中, 就是不讲道理, 它是在消费端进行统计的, 为什么能在消费端进行统计?

逻辑是这样的:

1. 消费者会缓存所调用服务的所有提供者, 比如记为p1 、p2 、p3三个服务提供者, 每个提供者内都有一 个属性记为active 默认位0

2. 消费者在调用次服务时, 如果负载均衡策略是leastactive

3. 消费者端会判断缓存的所有服务提供者的active 选择最小的, 如果都相同, 则随机

4. 选出某一 个服务提供者后, 假设位p2, Dubbo就会对p2 .active+1

5. 然后真正发出请求调用该服务

6. 消费端收到响应结果后, 对p2 .active-1

7. 这样就完成了对某个服务提供者当前活跃调用数进行了统计, 并且并不影响服务调用的性能

服务超时在服务提供者和服务消费者上都可以配置服务超时时间, 这两者是不一 样的。

消费者调用  个服务, 分为三步:

1. 消费者发送请求  网络传输)

2. 服务端执行服务

3. 服务端返回响应  网络传输)

如果在服务端和消费端只在其中一 方配置了timeout 那么没有歧义, 表示消费端服务的超时时间,  费端如果超过时间还没有收到响应结果, 则消费端会抛超时异常,  服务端不会抛异常, 服务端在执行   服务后, 会检查执行该服务的时间, 如果超过timeout 则会打印一 个超时日志 。服务会正常的执行完。

如果在服务端和消费端各配了一 timeout 那就比较复杂了, 假设

1. 服务执行为5s

2. 消费端timeout=3s

3. 服务端timeout=6s

那么消费端调用服务时, 消费端会收到超时异常  因为消费端超时了), 服务端一 切正常  服务端没有超 时) 

集群容错

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/fault-tolerent-strategy/

集群容错表示: 服务消费者在调用某个服务时, 这个服务有多个服务提供者, 在经过负载均衡后选出其中  个服务提供者之后进行调用  但调用报错后, Dubbo所采取的后续处理策略。

服务降级

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/service-downgrade/

服务降级表示: 服务消费者在调用某个服务提供者时, 如果该服务提供者报错了, 所采取的措施。

集群容错和服务降级的区别在于:

1. 集群容错是整个集群范围内的容错

2. 服务降级是单个服务提供者的自身容错

本地存根

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/local-stub/

本地存根, 名字很抽象, 但实际上不难理解, 本地存根就是一 段逻辑, 这段逻辑是在服务消费端执行的  这段逻辑一 般都是由服务提供者提供, 服务提供者可以利用这种机制在服务消费者远程调用服务提供者之

前或之后再做一些其他事情,比如结果缓存,请求参数验证等等。

本地伪装

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/local-mock/

本地伪装就是Mock,Dubbo    Mock 的功能相对于本地存根更简单一点,Mock 其实就是Dubbo 中的服务

容错的解决方案。

参数回调

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/callback-parameter/

官网上的Demo 其实太复杂,可以看课上的Demo 更为简单。

首先,如果当前服务支持参数回调,意思就是:对于某个服务接口中的某个方法,如果想支持消费者在调 用这个方法时能设置回调逻辑,那么该方法就需要提供一个入参用来表示回调逻辑。

因为Dubbo 协议是基于长连接的,所以消费端在两次调用同一个方法时想指定不同的回调逻辑,那么就需 要在调用时在指定一定key 进行区分。

异步调用

官网地址:http://dubbo.apache.org/zh/docs/v2.7/user/examples/async-call/

理解起来比较容易,主要要理解CompletableFuture       , 如果不理解,就直接把它理解为Future

其他异步调用方式: Dubbo 同步调用太慢,也许你可以试试异步处理

泛化调用

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/generic-reference/

泛化调用可以用来做服务测试。

Dubbo中, 如果某个服务想要支持泛化调用  就可以将该服务的generic属性设置为true 那对于服务消 费者来说, 就可以不用依赖该服务的接口  直接利用GenericService接口来进行服务调用 

泛化服务

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/generic-service/

实现了GenericService接口的就是泛化服务

Dubbo中的REST

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/rest/

注意DubboREST也是Dubbo所支持的一 种协议。

当我们用Dubbo提供了一 个服务后, 如果消费者没有使用Dubbo也想调用服务, 那么这个时候我们就可以 让我们的服务支持REST协议, 这样消费者就可以通REST形式调用我们的服务了。

管理台

github地址: GitHub - apache/dubbo-admin: The ops and reference implementation for Apache Dubbo

动态配置

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/config-rule/

注意动态配置修改的是服务参数 并不能修改服务的协 IP PORT VERSION GROUP 因为这5个 信息是服务的标识信息, 是服务的身份证号, 是不能修改的。

服务路由

官网地址: http://dubbo.apache.org/zh/docs/v2.7/user/examples/routing-rule/

什么是蓝绿发布、灰度发布

什么是蓝绿部署、滚动发布和灰度发布? - 知乎

Zookeeper 可视化客户端工具

Zookeeper 可视化客户端:

Zoolnspector.zip

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金和OA C6 upload_json 任意文件上传漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 upload_json接口处存在任意文件上传漏洞,攻击者可以通过构造特殊请求包上…

视频号小店新手该怎么运营?团队实操经验分享!

我是电商珠珠 视频号小店作为一个新兴平台,自然预示着有更多的机会在。 所以有很多新手想要了解这个平台并进行入驻,但是却不知道该怎么去运营,没有货源怎么办。 今天我就来给大家详细的讲一下。 一、入驻 入驻的话需要一张企业的营业执…

阿里巴巴秋招前端笔试题

单选题 下面的 JSX 代码中&#xff0c;哪一个无法达到预期的效果&#xff1f; A.<h2>Hello World</h2> B.<input type”checkbox”/> C.<div class”msg-box”>{msg}</div> D.<label htmlFor”name”>Leo</label> E.div styl…

人工智能_机器学习091_使用三维瑞士卷数据_KMeans聚类算法进行瑞士卷数据聚类---人工智能工作笔记0131

然后我们首先来构建一下数据 准备瑞士卷数据: import numpy as np 导入数学计算包 import matplotlib.pyplot as plt 导入画图包 #自底向上聚类 from sklearn.cluster import AgglceerativeClustering 导入分层聚类模型 from sklearn.datasets import make_swiss_roll # 瑞士卷…

“五岳杯”2023量子计算挑战赛启动仪式在南方科技大学成功举办

​2023年11月4日下午&#xff0c;由北京图象图形学学会、中国移动云能力中心&#xff08;以下简称“移动云”&#xff09;主办&#xff0c;南方科技大学承办&#xff0c;北京玻色量子科技有限公司&#xff08;以下简称“玻色量子”&#xff09;协办的“五岳杯”2023量子计算挑战…

RT-Thread:SPI万能驱动 SFUD 驱动Flash W25Q64,通过 STM32CubeMX 配置 STM32 SPI 驱动

关键词&#xff1a;SFUD,FLASH,W25Q64&#xff0c;W25Q128&#xff0c;STM32F407 说明&#xff1a;RT-Thread 系统 使用 SPI万能驱动 SFUD 驱动 Flash W25Q64&#xff0c;通过 STM32CubeMX 配置 STM32 SPI 驱动。 提示&#xff1a;SFUD添加后的存储位置 1.打开RT-Thread Sett…

OpenGL学习笔记-Blending

混合方程中&#xff0c;Csource是片段着色器输出的颜色向量&#xff08;the color output of the fragment shader&#xff09;&#xff0c;其权重为Fsource。Cdestination是当前存储在color buffer中的颜色向量&#xff08;the color vector that is currently stored in the …

ROS2 Humble学习笔记

本文发表与个人的github pages。部分内容未同步到这里。 想查看完整内容&#xff0c;请移步到ROS2 Humble学习笔记。 一、前言 2013年的时候已经接触ROS了&#xff0c;当时断断续续学习了一些ROS的基础知识。16年搬到深圳之后&#xff0c;也有幸参加过星火的一次关于ROS的一些…

S281 LoRa网关在智能电力监测系统中的应用

随着能源消耗的增加和环境保护的要求&#xff0c;智能电力监测系统在电力行业得到了广泛的应用。作为一家领先的科技公司&#xff0c;钡铼技术有限公司推出的S281 LoRa网关为智能电力监测系统提供了强大的支持和解决方案。本文将重点介绍S281 LoRa网关在智能电力监测系统中的应…

【Android Studio】APP练手小项目——切换图片APP

本项目效果&#xff1a; 前言&#xff1a;本项目最终实现生成一个安卓APP软件&#xff0c;点击按钮可实现按钮切换图片。项目包含页面布局、功能实现的逻辑代码以及设置APP图标LOGO和自定义APP名称。 关于Android Studio的下载与安装见我的博文&#xff1a;Android Studio 最新…

Native Crash回溯栈

获取调用栈四种方案&#xff1a;Android Native Crash 收集 1、使用系统的<unwind.h>库 可以获取到出错文件与函数名。只不过需要自己解析函数符号&#xff0c;同时经常会捕获到系统错误&#xff0c;需要手动过滤。 2、libcorkscrew 在4.1.1以上&#xff0c;5.0以下&…

C# 强制类型转换和as区别和不同使用场景

文章目录 1.强制类型转换2. as 运算符3.实例总结&#xff1a; 在C#中&#xff0c;as 和 强制类型转换&#xff08;例如 (T)value&#xff09;的主要区别在于它们处理类型转换不成功时的行为和适用场景&#xff1a; 1.强制类型转换 使用语法&#xff1a;Type variable (Type)…

设计模式之适配器模式【结构型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

“高端”的位运算

王有志&#xff0c;一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群&#xff1a;共同富裕的Java人 原计划迭代作为预备知识的收尾&#xff0c;不过在解2的幂和4的幂时&#xff0c;想到关于数字2的问题可以通过位运算去解决&#xff0c;因此补充了关于位运算的内容。 …

基于ssm的生鲜在线销售系统的设计与实现论文

摘 要 使用旧方法对生鲜在线销售系统的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在生鲜在线销售系统的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的生…

Python(33):数据断言(查询数据库数据和插入数据对比)

Python(33):数据断言(查询数据库数据和插入数据对比) 前言&#xff1a; 需求&#xff1a;需要针对查询数据库数据和插入的数据进行对比&#xff0c;用Python语言进行编写 数据库查询的结果可参考&#xff1a;https://blog.csdn.net/fen_fen/article/details/135462484 1、查…

共享文件访问权限被拒绝

winr 打开命令行输入gpedit.msc打开组编辑窗口 这样操作之后就远程电脑一般就可以访问共享文件夹了

STM32CubeMX配置STM32G031多通道UART+DMA收发数据(HAL库开发)

时钟配置HSI主频配置64M 配置好串口&#xff0c;选择异步模式 配置DMA TX,RX,选择循环模式。 NVIC中勾选使能中断 勾选生成独立的.c和h文件 配置好需要的开发环境并获取代码 串口重定向勾选Use Micro LIB main.c文件修改 增加头文件和串口重定向 #include <string.h&g…

纯血鸿蒙「扩圈」100天,酝酿已久的突围

坦白讲&#xff0c;去年参加华为开发者大会看到HarmonyOS NEXT&#xff08;仅运行鸿蒙原生应用&#xff0c;所以也称作「纯血鸿蒙」&#xff09;的时候&#xff0c;小雷也没料想到鸿蒙原生应用生态的发展速度会如此之快。 9月25日&#xff0c;华为正式对外宣布启动HarmonyOS NE…

LabVIEW在微生物检测中的应用

随着对食品安全关注的增加&#xff0c;食品检测的准确性变得越来越重要。其中&#xff0c;微生物计数作为食品合格的关键指标&#xff0c;对其检测技术的准确性和实时性要求极高。传统的微生物检测面临着菌落识别困难、设备实时性差和自动化程度不高等问题&#xff0c;尤其在疫…