【最新Dubbo3深入理解】Dubbo3相关面试题整理

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!

在我后台回复 「资料」 可领取编程高频电子书
在我后台回复「面试」可领取硬核面试笔记

文章导读地址:点击查看文章导读!

感谢你的关注!

最新 Dubbo3 深入理解原理系列

在这里插入图片描述

Dubbo 相关面试题

ZooKeeper 宕机后,Dubbo 服务还能使用吗?

在实际生产中,假如 ZooKeeper 注册中心宕掉,一段时间内服务消费方还是能够调用提供方的服务的,实际上它使用的本地缓存进行通讯,通过本地缓存可以拿到提供者的地址信息,仍然可以通信,这只是 Dubbo 健壮性的一种体现。

注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。所以,我们可以完全可以绕过注册中心——采用 dubbo 直连 ,即在服务消费方配置服务提供方的位置信息。

Dubbo 怎么实现动态感知服务下线?

一般来说,服务订阅有两种方式:

  • Pull 模式:客户端定时去注册中心中拉去最新配置
  • Push 模式:注册中心主动将配置推送给客户端

Dubbo 动态感知服务下线使用了 ZooKeeper 中的节点监听机制,流程如下:

1、消费者在第一次订阅时,会去 ZooKeeper 对应节点下全量拉取所有的服务数据,并且在订阅的节点注册一个 Watcher

2、一旦节点下发生数据变化,ZooKeeper 将会发送事件通知给客户端

3、客户端收到通知后,会重新去拉去最新数据,并且重新注册 Watcher

ZooKeeper 提供了 心跳检测 功能,它会定时向各个服务提供者发送一个请求,如果长期没有响应,服务中心就 认为该服务提供者已经挂了 ,并将其剔除

Dubbo 的负载均衡策略

  • 随机(默认策略):根据权重随机调用

  • 轮询:一个一个调用,不建议使用

    • 如果其中有一台机器处理请求的速度比较慢,那么当一个请求被转发到很慢的机器上之后,很久都没有处理完,会导致其他请求也会被转发到这个机器上,导致该机器上堆积很多请求,更加处理不过来了
  • 最少活跃数:根据机器上活跃的请求数分配请求,Dubbo 认为活跃请求数少的机器,性能就高

  • 一致性 Hash:相同参数的请求会发送给同一台机器

Dubbo 容错策略

Dubbo 作为 RPC 框架,容错也算是其中比较核心的功能了

在网络通信中有很多不确定的因素,比如网络延迟、网络中断等,此类情况出现的话会造成当前这次请求出现失败。当服务通信出现这类问题时,需要采取一定措施来应对
Dubbo 提供了 容错机制 来处理这类错误

在集群调用失败时,Dubbo 提供了多种容错方案(默认方案是Failover 重试):

1、Failover Cluster :这是 默认的容错模式 ,当调用服务时失败,会自动切换到其他服务器进行重试,重试会带来更长的延迟并且会对下游服务造成更大的压力,可以通过配置 retries="2"来调整重试次数(不包含第一次),这种机制通常用于读操作 (相关代码在 FailoverClusterInvoker # invoke()

2、Failfast Cluster :快速失败,只发起一次调用,如果调用服务失败立即报错。通常用于非幂等性的 写操作 以及 事务 ,例如新增记录等

3、Failsafe Cluster :失败安全,当消费者调用服务出现异常时,直接忽略异常。这种模式通常用于写入审计日志等操作

4、Failback Cluster :失败自动恢复,当调用服务失败,后台记录失败请求并定时重发。通常用于消息通知操作

5、Forking Cluster :并行调用多个服务器,只要一个成功就返回,通常用于实时性要求较高的操作 ,但比较浪费服务资源,通过 forks=“2” 设置最大并行数

6、Broadcast Cluster :广播调用所有提供者,逐个调用,任意一台报错则就算调用失败,通常用于通知所有提供者更新缓存等本地资源

上边六种容错策略不用全部记住,前两种比较重要着重记一下,其余的可以从设计的思路来理解

像接口调用失败,无非就是重试,或者直接返回失败,或者将错误给记录下来,可能只是当前网络不稳定而已,再定一个新的时间重新发送调用请求

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

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

相关文章

并发锁机制之深入理解synchronized

并发锁机制之深入理解synchronized Synchronized基础知识 i的JVM字节码指令 getstatic i // 获取静态变量i的值 iconst_1 // 将int常量1压入操作数栈 iadd // 自增 i–的JVM字节码指令 getstatic i // 获取静态变量i的值 iconst_1 // 将int常量1压入操作数栈 isub // 自减…

Uipath 读取Word模板实现录用通知书PDF批量生成

本文主要讲解如何使用Uipath 读取Excel 面试人员信息表,读取Word模板,再批量生成录用通知书PDF文件,该自动化大大提高了HR 的工作效率。 注:本方案实现采用无代码模式,通过拖拉控件实现。 1. 数据准备 1.1 面试人员…

Rust核心:【所有权】相关知识点

rust在内存资源管理上采用了(先进优秀?算吗)但特立独行的设计思路:所有权。这是rust的核心,贯穿在整个rust语言的方方面面,并以此为基点来重新思考和重构软件开发体系。 涉及到的概念点:借用&am…

计网网络层

文章目录: 文章目录 概述服务面向连接的虚电路服务无连接的数据报服务 IPv4分类编址A类地址B类地址C类地址 划分子网默认子网掩码 无分类编址路由聚合 应用规划 IP数据报的发送和转发过程静态路由配置路由选择协议静态路由选择动态路由选择路由信息协议RIP工作过程更…

Python中if __name__ == ‘__main__‘:的原理、作用和实践

Python中if name ‘main‘:的原理、作用和实践 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的…

Linux---权限管理(ACL权限、特殊位和隐藏属性)

目录 1.ACT权限 1.1什么是ACT权限 1.2ACT图解 2.操作步骤 2.1添加测试目录、用户、组,并将用户添加到组 2.2修改目录的所有者和所属组 2.3设定权限 2.4为临时用户分配权限 2.4.1添加临时用户 2.4.2为临时用户分配特定权限 2.4.3查看目录权限,注…

PostgreSQL如何使用UUID

离线安装时,一般有四个包,都安装的话,只需要开启uuid的使用即可,如果工具包(即 postgresql11-contrib)没有安装的话,需要单独安装一次,再进行开启。 开启UUID方法 下面介绍一下如何开启&#…

Unity实现帧序列

一、目的 1.想实现序列帧效果 自己使用Animation一直无法实现动画播放效果 二、参考 1. Unity序列帧动画——Sprite图片集制作UI动画_unity 序列帧动画图集-CSDN博客 结果:很好用,能实现效果 三、实操 新建Image,增加Animator组件&#x…

小保司的理赔是否有保障?

《小保司的理赔是否有保障?》 预计6-7分钟读完 连续日更:第7天 作者:罗师兄 微信号:luoyun515 同一个人,同样的重疾险责任, 同样的保额,同样的缴费方式, 不同的保司保费可以相…

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略 导读:此文章介绍了Google推出的新一代开源模型Gemma,旨在帮助研发人员负责任地开发AI。 背景: >> Google长期致力于为开发者和研究人…

Sora:AI视频模型的革新者

随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。本文将从Sora的技术特点、应用场景以及对未来创作方式…

深入探究node搭建socket服务器

自从上篇中sokect实现了视频通话,但是是使用ws依赖库实现的服务端,所以最近再看ws源码,不看不知道,一看很惊讶。 接下来一点点记录一下,如何搭建一个简易的服务端socket,来实现上次的视频通讯。 搭建一个…

SwiftUI 支持拖放功能的集合视图(Grid)如何捕获手指按下并抬起这一操作

功能需求 假设我们开发了一款 SwiftUI 应用,其中用户可以通过拖放 Grid 中的 Cell 来完成一些操作。现在,我们希望用户在某个 Cell 被按下并随后抬起手指时得到通知,这能够实现吗? 如上图所示,我们准确地捕获到了手指在 Grid 的 Cell 上按下再抬起这一操作!那么它是如何…

PLC_博图系列☞基本指令“赋值”

PLC_博图系列☞基本指令“赋值” 文章目录 PLC_博图系列☞基本指令“赋值”背景介绍:赋值说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 赋值 背景介绍 这是一篇关于PLC编程的文章,特别是关于西门子的博图软件。我并不是专业的…

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode Jetson Xavier NX桌面版需要连接显示屏、鼠标和键盘,操作起来并不方便,因此常常需要ssh远程连接到本地笔记本电脑,这里介绍一种连接方式,通过…

【区块链】联盟链

区块链中的联盟链 写在最前面**FAQs** 联盟链:区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…

Vue2页面转化为Vue3

vue2element-ui转化为Vue3element plus 后台管理系统&#xff1a;增删查改 vue2页面&#xff1a; <template><div class"app-container"><div><el-form:model"queryParams"ref"queryForm"size"small":inline&qu…

高级语言期末2012级A卷

1.编写函数&#xff0c;输出任意正整数n的位数&#xff08;n默认为存储十进制的整形变量&#xff09; 例如&#xff1a;正整数13&#xff0c;则输出2,&#xff1b;正整数3088&#xff0c;则输出4 #include <stdio.h>int func(int n) {int count0;while(n>0) {n/10;co…

Stable Diffusion 3 发布,AI生图效果,再次到达全新里程碑!

AI生图效果&#xff0c;再次到达全新里程碑&#xff01; Prompt&#xff1a;Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy 提示&#xff08;意译…

mybatis常用标签

一.定义sql语句 1.select 标签 属性介绍: &#xff08;1&#xff09;id :唯一的标识符. &#xff08;2&#xff09;parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user &#xff08;3&#xff09;resultType :语句返回值类型或别名。注意&#xff…