Dubbo基础知识

news2024/12/23 0:11:28

1、什么是 Dubbo ?
Dubbo是基于Java的高性能轻量级的RPC分布式服务框架,致力于提供透明化的RPC远程服务调用方案,以及SOA服务治理方案。现已成为Apache 基金会孵化项目。
2、为什么要使用Dubbo?
背景:
随着互联网的快速发展,Web应用程序的规模不断扩大,最后我们发现传统的垂直体系结构(整体式)已无法解决。分布式服务体系结构和流计算体系结构势在必行,迫切需要一个治理系统来确保体系结构的有序发展。
◆ 开源免费
◆ 一些核心业务被提取并作为独立的服务提供服务,逐渐形成一个稳定的服务中心,这样前端应用程序就可以更好地响应变化多端的市场需求
◆ 分布式框架能承受更大规模的流量
◆ 内部基于netty性能高
3、Dubbo提供了哪3个关键功能?
(1) 基于接口的远程调用:网络通信框架,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。
(2) 容错和负载均衡:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
(3) 自动服务注册和发现:服务注册,基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
4、Dubbo核心组件:
(1) 生产者(provider)
服务端,生产内容,生产前需要依赖容器(先启动容器)
(2) 消费者(consumer)
客户端,从注册中心获取到方法,可以调用生产者中的方法。
(3) 注册中心(registry)
生产者在此注册并发布内容,消费者在此订阅并接收发布的内容。
(4) 监控中心(Monitor)
统计服务的调用次数和调用时间
(5) 容器(container)
服务运行容器,生产者在启动执行的时候,必须依赖容器才能正常启动(默认依赖的是spring容器)
5、Dubbo 服务注册流程如下:
(1) 服务容器负责启动,加载,运行服务提供者。
(2) 服务提供者在启动时,向注册中心注册自己提供的服务。
(3) 服务消费者在启动时,向注册中心订阅自己所需的服务。
(4) 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
(5) 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败再选另一台调用。
(6) 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
服务注册流程图如下:
在这里插入图片描述
6、Dubbo架构的特点:
连通性、健壮性、伸缩性、以及向未来架构的升级性。
7、对 jdk 的最小版本需求
jdk1.6+
8、注册中心的选择?
一般来说选中Zookeeper更稳定更合适。
除了 Zookeeper 还有 Redis 注册中心、Multicast 注册中心、Simple 注册中心。
9、Dubbo的核心配置及用途:
(1) 服务配置(dubbo:service/):用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
(2) 引用配置(dubbo:reference/):用于创建一个远程服务代理,一个引用可以指向多个注册中心。
(3) 协议配置(dubbo:protocol/):用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
(4) 应用配置(dubbo:application/):用于配置当前应用信息,不管该应用是提供者还是消费者。
(5) 模块配置(dubbo:module/):用于配置当前模块信息,可选。
(6) 注册中心配置(dubbo:registry/):用于配置连接注册中心相关信息
(7) 监控中心配置(dubbo:monitor/):用于配置连接监控中心相关信息,可选。
(8) 提供方配置(dubbo:provider/):当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选。
(9) 消费方配置(dubbo:consumer/):当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选。
(10) 方法配置(dubbo:method/):用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息。
(11) 参数配置(dubbo:argument/):用于指定方法参数配置。
10、配置优先级规则:
优先级从高到低:
◆ JVM -D参数,当你部署或者启动应用时,它可以轻易地重写配置,比如,改变dubbo协议端口;
◆ XML, XML中的当前配置会重写dubbo.properties中的;
◆ Properties,默认配置,仅仅作用于以上两者没有配置时;
11、如何用代码方式绕过注册中心点对点直连?

ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>);
//此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
//如果点对点直连,可以用reference.setUrl()指定目标地址,设置url后将绕过注册中心,
//其中,协议对应provider.setProtocol()的值,端口对应provider.setPort()的值
//路径对应service.setPath()的值,如果未设置path,缺省path为接口名
reference.setUrl("dubbo://10.20.130.230:20880/com.xxx.XxxService");

12、Dubbo 配置来源有如下4种:
◆ JVM System Properties,-D参数
◆ Externalized Configuration,外部化配置
◆ ServiceConfig、ReferenceConfig 等编程接口采集的配置
◆ 本地配置文件 dubbo.properties
13、如何禁用某个服务的启动检查?

<dubbo:reference interface="com.foo.BarService" check ="false" />

14、Dubbo 负载均衡策略?默认是?
◆ 随机负载平衡(默认)
◆ RoundRobin 负载平衡
◆ 最小活动负载平衡
◆ 一致的哈希负载平衡
15、上线兼容老版本
多版本号(version)
16、开发测试环境,想绕过注册中心如何配置?
◆ XML

<dubbo:reference id=xxxserviceinterface="com.alibaba.xxx.XxxService'url="dubbo://localhost:20890"/>

◆ -D

iava -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890

◆ properties

java -Ddubbo.resolve.file=xxx.properties
com.alibaba.xxx.XxxService=dubbo://localhost:20890

17、Dubbo 目前支持以下容错策略:
(1) 失败自动切换(Failover Cluster):调用失败后基于retries=“2” 属性重试其它服务器(默认)
(2) 快速失败(Failfast Cluster):快速失败,只发起一次调用,失败立即报错。
(3) 勿略失败(Failsafe Cluster):失败后勿略,不抛出异常给客户端。
(4) 失败重试(Failback Cluster):失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作
(5) 并行调用(Forking Cluster): 只要一个成功即返回,并行调用指定数量机器,可通过 forks=“2” 来设置最大并行数。
(6) 广播调用:广播调用所有提供者,逐个调用,任意一台报错则报错。
18、Dubbo有几种配置方式?
◆ Spring
◆ Java API
19、Dubbo有哪些协议?推荐?
◆ dubbo://(推荐)
◆ rmi://
◆ hessian://
◆ http://
◆ webservice://
◆ thrift://
◆ memcached://
◆ redis://
◆ rest://
20、Dubbo使用什么通信框架?
dubbo 使用 netty
21、dubbo协议默认端日号?http协议默认端日?hessian?rmi?
◆ dubbo:20880
◆ http:80
◆ hessian:80
◆ rmi:80
22、Dubbo默认序列化框架?其他的你还知道?
◆ dubbo协议缺省为 hessian2
◆ rmi 协议缺省为 java
◆ http 协议缺省为 json
23、一个服务有多重实现时,如何处理?
可以用group分组,服务提供方和消费放都指定同一个group。
24、Dubbo 服务调用默认是阻寒的?还有其他的?
默认是同步等待结果阻塞的,同时也支持异步调用。
Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对象。
25、Dubbo服务追踪解决方案?
◆ Zipkin
◆ Pinpoint
◆ SkyWalking
26、Dubbo不维护了吗?Dubbo 和Dubbox有什么区别?
现在进入了Apache,由apache维护。
Dubbox是当当的扩展项目。
27、Dubbox有什么新功能?
◆ 支持REST风格远程调用(HTTP+JSON/XML)
◆ 支持基于Kryo 和 FST的Java高效序列化实现
◆ 支持基于嵌入式Tomcat的HTTP remoting 体系
◆ 升级Spring
◆ 升级ZooKeeper客户端
28、io线程池大小默认?
cpu 个数+1
29、dubbo://协议适合什么样的服务调用?
◆ 采用单一长链接和NIO异步通讯,适用于小数量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
◆ 不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。
30、自动剔除服务什么原理?
zookeeper临时节点,会话保持原理。
31、从 2.0.5 版本开始,dubbo支持通过x命令来进行服务治理?
telnet
32、如何用命令查看服务列表?
telnet localhost 20880
进入命令行。然后执行 1s相关命令:
ls: 显示服务列表
ls -l: 显示服务详细信息列表
ls XxxService: 显示服务的方法列表
ls -l XxxService: 显示服务的方法详细信息列表
33、Dubbo 框架设计原理:
各层说明:
◆ confg 配置层:对外配置接口,以ServiceConfig,ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类
◆ proxy 服务代理层:服务接口透明代理,生成服务的客户端Stub 和服务器端 Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory
◆ registry 注册中心层:封装服务地址的注册与发现,以服务 URL,为中心,扩展接口为RegistryFactory,Registry,RegistryService
◆ cluster 路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接为Cluster,Directory,Router, LoadBalance
◆ monitor 监控层:RPC调用次数和调用时间监控,以Statistics 为中心,扩展接口为MonitorFactory,Monitor, MonitorService
◆ protocol 远程调用层:封装 RPC调用,以 Invocation,Result 为中心,扩展接口为 Protocol,Invoker,Exporter
◆ exchange 信息交换层:封装请求响应模式,同步转异步,以 Request,Response 为中心,扩展接口为Exchanger,ExchangeChannel,ExchangeClient,ExchangeServer
◆ transport 网络传输层:抽象 mina 和 netty 为统一接口,以Message 为中心,扩展接口为 ChannelTransporter, Client,Server,Codec
◆ serialize 数据序列化层:可复用的一些工具,扩展接口为Serialization,0bjectInputObiectOutput,ThreadPool

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

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

相关文章

JAVA毕业设计147—基于Java+Springboot的手机维修管理系统(源代码+数据库)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringboot的手机维修管理系统(源代码数据库)147 一、系统介绍 本项目分为用户、管理员、维修员三种角色 1、用户&#xff1a; 注册、登录、新闻公告、售后申请、申请列…

使用Samba或NFS实现文件共享

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、SAMBA文件共享服务 1987年&#xff0c;微软公司和英特尔公司共同定制了SMB&#xff08;Server Messages Block&#xff09;服务器消息块协议&am…

板级调试小助手(2)ZYNQ自定义IP核构建属于自己的DDS外设

一、前言 在上期文章中讲述了小助手的系统结构和原理。在PYNQ的框架开发中&#xff0c;我们一般可以将PL端当做PS端的一个外设&#xff0c;通过读写寄存器的方式来操作外设的功能&#xff0c;就类似于在开发ARM和DSP中操作外设一样&#xff0c;不同时的是&#xff0c;我们可以通…

关于前端数据库可视化库的选择,vue3+antd+g2plot录课计划

之前&#xff1a;antdv 现在&#xff1a;g2plot https://g2plot.antv.antgroup.com/manual/introduction 录课内容&#xff1a;快速入门 图表示例&#xff1a; 选择使用比较广泛的示例类型&#xff0c;录课顺序如下&#xff1a; 1、折线图2、面积图3、柱形图4、条形图5、饼…

[Qt] Qt Creator中,新建QT文件时选择界面模版下的各选项

在Qt Creator中&#xff0c;新建文件时选择界面模版下的各选项具有特定的意义&#xff0c;这些选项主要帮助开发者根据项目需求快速生成不同类型的文件。以下是对这些选项的详细解释&#xff1a; 0. Qt Item Model 意义&#xff1a;列表模型是Qt中用于表示和操作数据的强大抽…

Ubuntu下载安装chrome浏览器

方法一&#xff1a;wget下载并安装 1、创建文件夹存安装包 cd /root/Downloads mkdir chrome 2、下载安装包到文件夹内 wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -P /root/Downloads/chrome 3、安装 cd chrome sudo dpkg -i go…

从0开始的STM32HAL库学习5

旋转编码计数器 修改中断代码 void EXTI0_IRQHandler(void) {/* USER CODE BEGIN EXTI0_IRQn 0 */if(__HAL_GPIO_EXTI_GET_FLAG(PB0_Pin)){if(HAL_GPIO_ReadPin(PB1_GPIO_Port, PB1_Pin)GPIO_PIN_RESET){count--;}/* USER CODE END EXTI0_IRQn 0 */HAL_GPIO_EXTI_IRQHandler…

【论文极速读】 可微分检索索引(Differential Search Index, DSI)

【论文极速读】 可微分检索索引&#xff08;Differential Search Index&#xff0c; DSI&#xff09; FesianXu 20240714 at WeChat Search Team 前言 最近从朋友处得知了DSI这个概念&#xff0c;所谓的可微分检索索引DSI&#xff0c;就是通过语言模型将检索过程中的索引和召回…

virtualbox的ubuntu默认ipv4地址为10.0.2.15的修改以及xshell和xftp的连接

virtualbox安装Ubuntu后&#xff0c;默认的地址为10.0.2.15 我们查看virtualbox的设置发现是NAT 学过计算机网络的应该了解NAT技术&#xff0c;为了安全以及缓解ip使用&#xff0c;我们留了部分私有ip地址。 私有IP地址网段如下&#xff1a; A类&#xff1a;1个A类网段&…

持续学习的综述: 理论、方法与应用(三:泛化分析)

前文连接&#xff1a;持续学习的综述: 理论、方法与应用&#xff08;一&#xff09; 前文连接&#xff1a;持续学习的综述: 理论、方法与应用&#xff08;二&#xff1a;理论基础&#xff09; 泛化分析 目前持续学习的理论研究主要是在增量任务的训练集上进行的&#xff0c;假…

Java面试题:MVCC

MVCC 保证事务的隔离性 排它锁: 一个事务获取了数据行的排他锁,其他事务就不能再获取该行的其他锁 MVCC: 多版本并发控制 维护一个数据的多个版本,使读写不存在冲突 具体实现依靠 隐藏字段 mysql中隐藏了三个隐藏字段 db_trx_id:最近修改事务 db_roll_ptr:指向上一个…

【Linux】Linux必备的基础指令

目录 Linux必备的基础指令一 、 什么是Linux二、 Linux常用命令2.1 ls2.2 pwd2.3 cd2.4 touch2.5 cat2.6 mkdir2.7 rm 三、 Linux重要指令3.1 cp3.2 mv3.3 tail3.4 vim3.5 grep3.6 ps3.7 netstat Linux必备的基础指令 一 、 什么是Linux 系统编程&⽹络编程 Linux⾃⾝提供…

适合创业公司使用的wordpress主题

对于创业公司来说&#xff0c;‌选择一个适合的WordPress主题至关重要&#xff0c;‌它不仅能够提升公司网站的外观和用户体验&#xff0c;‌还能帮助优化搜索引擎排名&#xff0c;‌从而吸引更多的潜在客户。‌以下是一些推荐的WordPress主题&#xff0c;‌特别适合创业公司使…

【vue3-命名规范以及注意事项】

使用多字组件名 使用详细的道具定义props 在提交的代码中&#xff0c;prop定义应该总是尽可能详细&#xff0c;至少指定类型。 在声明期间&#xff0c;道具名应该始终使用camelCase。当在in-DOM模板中使用时&#xff0c;props应该是串式的。单文件组件模板和JSX可以使用keba…

【leetcode】整数反转

给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 1&#xff1a; …

C语言丢失精度 如何实现高精度计算

&#xff08;1&#xff09;int 类型举例 int &#xff1a;占4个字节&#xff0c;也就是32位&#xff0c;及最大值是2^32-11024*1024*1024*4-14294967295 以上说法错误&#xff0c;因为Int是有符号类型整数&#xff0c;所以最高位是符号位&#xff0c;及int的最大值应该是2^31…

[BJDCTF2020]EasySearch1

知识点&#xff1a; 1.swp泄露 2.md5碰撞 3.PHP代码审计 4.SSI代码执行漏洞 // Apache SSI 远程命令执行漏洞复现 看着像sql注入&#xff0c;不过注入无果&#xff0c;扫一下目录试试~ 发现是swp泄露. SWP文件泄露漏洞是指在使用 Vim编辑器 编辑一个文件时&#xff0c;Vim会在…

​前端Vue自定义签到获取积分弹框组件设计与实现

摘要 随着前端技术的不断演进&#xff0c;开发的复杂性日益凸显。传统的整体式开发方式在面临功能迭代和修改时&#xff0c;常常牵一发而动全身&#xff0c;导致开发效率低下和维护成本高昂。组件化开发作为一种解决方案&#xff0c;通过实现模块的独立开发和维护&#xff0c;…

代码随想录(day6)哈希表-求两个数组的交集

什么是红黑树&#xff0c;参考链接【数据结构】史上最好理解的红黑树讲解&#xff0c;让你彻底搞懂红黑树-CSDN博客 题目&#xff1a; 注意&#xff1a;字典用{}符合、元组用()符号、列表用[]符号 table.get(num,0)1的意思 class Solution(object):def intersection(self, n…

夹子音转换器matlab

操作过程点击此处观看 上段时间补习了一下傅里叶变化的知识&#xff0c;突发奇想可以根据此做一款声音转换器&#xff0c;使用工科神器Matlab进行完成&#xff0c;并且开发了可操作界面如下图所示&#xff1a; 功能实现与描述 软件中可以实现声音的录制、回放、文件的保存与…