dubbo的基础知识

dubbo是什么

      Dubbo是一个分布式服务框架,是一种高性能的远程通讯框架。它提供了基于Java的RPC(远程过程调用)通信机制,使得应用之间可以方便地进行远程调用,实现分布式服务的调用和管理。Dubbo提供了服务注册、发现、负载均衡、路由、容错等常用的分布式系统开发功能,可以帮助开发者快速构建可靠性、可扩展性和高性能的分布式应用。Dubbo主要由三个部分组成:Provider(服务提供者)、Consumer(服务消费者)和Registry(服务注册中心)

Dubbo 支持哪些协议,每种协议的应用场景,优缺点

      Dubbo是一种开源的分布式服务框架,它支持多种协议以满足不同场景下的需求。下面是目前Dubbo支持的主要协议以及它们的应用场景和优缺点:

  1. Dubbo协议:

    • 应用场景:适用于高性能的服务调用场景,通常用于内部服务之间的通信。
    • 优点:高性能、低延迟、高并发。
    • 缺点:仅适用于Java开发的服务。
  2. HTTP协议:

    • 应用场景:适用于与不同语言和平台集成,特别是对于Web应用和移动应用来说是最常见的协议。
    • 优点:跨语言、跨平台、易于集成。
    • 缺点:相对于Dubbo协议,性能较低。
  3. Hessian协议:

    • 应用场景:适用于Java开发的服务,尤其是基于Spring的应用。
    • 优点:性能较好、易于使用和集成。
    • 缺点:仅支持Java语言。
  4. RMI协议:

    • 应用场景:适用于Java开发的服务,尤其是基于Java RMI(远程方法调用)的应用。
    • 优点:性能较好、支持Java RMI。
    • 缺点:仅支持Java语言。
  5. Thrift协议:

    • 应用场景:适用于多语言的服务调用,尤其是基于Apache Thrift的应用。
    • 优点:跨语言、高性能、易于使用和集成。
    • 缺点:相对于Dubbo协议,稍微复杂一些。

Dubbo 超时时间      

       可以通过配置文件或者编程方式来设置超时时间。以下是两种方式的详细解释:

  1. 配置文件方式: 在Dubbo的配置文件(通常是dubbo.properties或者dubbo.xml)中,可以设置全局的超时时间。具体的配置属性是timeout,单位是毫秒。示例配置如下:
# dubbo.properties
# 全局超时时间为10秒
dubbo.consumer.timeout=10000
  1. 编程方式: 在代码中,可以使用Dubbo提供的API来设置超时时间。具体步骤如下:

2.1 创建服务引用对象:

ReferenceConfig<XXXService> reference = new ReferenceConfig<>();
reference.setInterface(XXXService.class);

2.2 设置超时时间:

// 超时时间为10秒
reference.setTimeout(10000);

2.3 获取服务对象:

XXXService service = reference.get();

上述代码中,XXXService是需要调用的服务接口类

Dubbo 注册中心  

     以下是 Dubbo 支持的一些常见的注册中心:

  • ZooKeeper:ZooKeeper 是 Apache 基金会下的一个开源分布式协调服务。Dubbo 使用 ZooKeeper 作为默认的注册中心,通过 ZooKeeper 来管理服务的注册、发现与订阅。

  • Redis:Redis 是一个高性能的 key-value 存储系统,Dubbo 通过 Redis 实现了一种简单的注册中心。使用 Redis 注册中心需要在服务提供者和消费者配置文件中分别指定 Redis 的地址和端口。

  • Multicast:Multicast 是一种基于组播(Multicast)协议的注册中心,Dubbo 使用 Multicast 注册中心来实现组播的服务注册与发现。使用该注册中心需要配置组播的地址和端口。

  • Simple:Simple 是 Dubbo 默认的简单注册中心,它主要用于开发和测试环境。Simple 注册中心不需要额外的依赖,但它的功能有限,不适合在生产环境中使用。

Dubbo 集群的负载均衡

      在Dubbo集群中,负载均衡是一种重要的策略,用于在多个服务提供者之间分配请求负载,以达到提高系统性能和稳定性的目的。

     Dubbo提供了多种负载均衡策略,以下是其中几种常见的策略:

  1. Random负载均衡:随机选择一个可用的服务提供者来处理请求,没有特定的规则,适用于对服务提供者没有特殊要求的场景。

  2. Round Robin负载均衡:按照轮询的方式依次选择一个可用的服务提供者来处理请求,每个服务提供者处理的请求数量相同,适用于对服务提供者要求均衡的场景。

  3. Least Active负载均衡:选择当前处理活跃请求数最少的服务提供者来处理请求,即选择负载最轻的服务提供者来处理请求,适用于处理时间较短但需要较高并发能力的场景。

  4. Consistent Hash负载均衡:根据请求的某个属性值进行哈希计算,将相同哈希值的请求发送到同一个服务提供者,可以保持某些请求的顺序和稳定性。

  5. Weighted Random负载均衡:根据服务提供者的权重值来选择,权重值越高的服务提供者被选中的概率越大,适用于对服务提供者有差异化要求的场景。

  6. Weighted Round Robin负载均衡:按照权重值将请求分配给服务提供者,权重值越高的服务提供者处理的请求数量越多,适用于对服务提供者有差异化要求的场景

Dubbo 的核心功能

     Dubbo提供了以下核心功能:

  • 远程通信:Dubbo支持多种通信协议,包括基于TCP的Dubbo协议、基于HTTP的RESTful协议和基于消息队列的消息协议等。它可以帮助应用将分布在不同节点上的服务进行远程调用,实现服务之间的快速通信。

  • 负载均衡:Dubbo提供了多种负载均衡算法,如随机算法、轮询算法和一致性哈希算法等。通过合理的负载均衡策略,Dubbo可以根据服务提供者的负载情况将请求分发到合适的节点,从而提高整个系统的吞吐量和性能。

  • 服务注册与发现:Dubbo提供了灵活的服务注册与发现机制,支持多种注册中心,如ZooKeeper、Redis和Nacos等。通过将服务提供者注册到注册中心,服务消费者可以方便地发现和调用这些服务,实现服务之间的解耦和动态扩展。

  • 服务治理:Dubbo提供了丰富的服务治理能力,包括服务路由、降级、容错和熔断等。通过配置不同的策略,Dubbo可以自动处理服务调用时的故障和异常情况,提高系统的可用性和稳定性。

  • 监控和管理:Dubbo提供了全面的监控和管理功能,包括服务调用次数、响应时间、服务提供者和消费者的运行状态等。通过可视化的监控界面,用户可以实时监控和管理整个系统,及时发现和解决问题。

Dubbo 服务注册与发现的流程

    

   流程说明:

      Provider(提供者)绑定指定端口并启动服务

      指供者连接注册中心,并发本机 IP、端口、应用信息和提供服务信息 发送至注册中心存储

      Consumer(消费者),连接注册中心 ,并发送应用信息、所求服务信 息至注册中心

      注册中心根据 消费 者所求服务信息匹配对应的提供者列表发送至 Consumer 应用缓存。

      Consumer 在发起远程调用时基于缓存的消费者列表择其一发起调 用。

      Provider 状态变更会实时通知注册中心、在由注册中心实时推送至 Consumer

Dubbo 的架构设计 

   

  架构设计如下:

  1. 服务提供者(Provider):负责暴露服务接口并将其注册到注册中心,接收来自消费者的请求并返回响应。

  2. 服务消费者(Consumer):负责从注册中心获取服务提供者的地址列表,并通过负载均衡算法选择其中一台提供者进行调用。

  3. 注册中心(Registry):用于注册和发现服务提供者的地址列表,Dubbo 支持多种注册中心,如 ZooKeeper、Redis 等。

  4. 远程通信层(Remoting):负责消费者和提供者之间的远程通信,Dubbo 默认使用 Netty 实现。

  5. 服务治理层(Cluster):负责将多个提供者组合成一个虚拟的提供者,对消费者屏蔽服务提供者的具体细节,以实现负载均衡、容错等功能。

  6. 代理层(Proxy):负责将远程服务接口转换为本地代理对象,隐藏远程调用的细节,使消费者可以像调用本地方法一样调用远程服务。

  7. 监控层(Monitor):负责统计服务的调用次数、响应时间等指标,并提供可视化的监控报表。

  8. 配置层(Config):负责对 Dubbo 的各个配置进行管理,包括服务提供者和消费者的配置,注册中心的配置等。

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

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

相关文章

【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置

目录 1、Hive安装 2、HiveJDBC访问 2.1、启动hiveserver2服务 2.2、连接hiveserver2服务 2.3、注意 3、Hive常用交互命令 3.1、“-e”不进入hive的交互窗口执行sql语句 3.2、“-f”执行脚本中sql语句 4、Hive其他命令操作 4.1、退出hive窗口 4.2、在hive cli命令窗口…

基于OpenCV的透视变换

基础概念 透视变换(Perspective Transformation)是仿射变换的一种非线性扩展,是将图片投影到一个新的视平面(Viewing Plane)&#xff0c;也称作投影映射(Projective Mapping)。 原理&#xff1a;将二维的图片投影到一个三维视平面上&#xff0c;然后再转换到二维坐标下&#…

LeetCode 2807.在链表中插入最大公约数

【LetMeFly】2807.在链表中插入最大公约数 力扣题目链接&#xff1a;https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/ 给你一个链表的头 head &#xff0c;每个结点包含一个整数值。 在相邻结点之间&#xff0c;请你插入一个新的结点&#x…

使用 C# Winfrom编写倒计时功能

在日常生活中&#xff0c;我们经常需要倒计时来提醒自己重要的时间节点&#xff0c;比如倒计时到达一个特定的日期和时间。介绍一个使用 C# 编写的倒计时应用程序的实现。 步骤一&#xff1a;应用程序的功能 它具有以下几个主要特点&#xff1a; 用户输入目标日期和时间&…

CSS3 边框border、outline、box-shadow

1 border 语法&#xff1a;border: width style color 2 outline 语法&#xff1a;outline: width style color 2.1 outline-offet MDN解释&#xff1a;用于设置outline与一个元素边缘或边框之间的间隙 即&#xff1a;设置outline相对border外边缘的偏移&#xff0c;可以为…

excel统计分析——两因素有重复方差分析

参考资料&#xff1a;生物统计学 无重复观测值的两因素方差分析只能研究两个因素的主效应&#xff0c;不能考察因素间的交互作用&#xff0c;只有在确定因素间不存在交互作用时才能进行无重复观测值的试验和分析。为了准确估计因素的主效应、交互作用和随机误差&#xff0c;每个…

DQL命令查询数据 (二)

本课目标 掌握 ORDER BY 子句 使用 LIMIT 子句实现分页查询 掌握MySQL的分组查询 掌握MySQL的子查询 SELECT 语法 ORDER BY 排序 ORDER BY 子句&#xff1a;按照一定顺序显示查询结果 排序可以是升序&#xff08;ASC&#xff09;或者是降序&#xff08;DESC&#xff09;&…

使用C#发送邮箱验证码

使用C#发送邮箱验证码 在很多应用程序中&#xff0c;我们需要使用邮箱来进行用户身份验证。其中一种常见的方式是通过发送验证码到用户的邮箱&#xff0c;然后要求用户输入该验证码进行验证。本文将介绍如何使用 C# 发送邮箱验证码。 声明 验证码登录没有用任何的工具&#…

【大数据】Zookeeper 数据写入与分布式锁

Zookeeper 数据写入与分布式锁 1.数据是怎么写入的2.基于 Zookeeper 实现分布式锁 1.数据是怎么写入的 无论是 Zookeeper 自带的客户端 zkCli.sh&#xff0c;还是使用 Python&#xff08;或者其它语言&#xff09;实现的客户端&#xff0c;本质上都是连接至集群&#xff0c;然…

记事本在手机桌面上怎么找?手机里的记事本怎么找?

在日常生活、工作和学习中&#xff0c;我们时常需要随手记录一些重要的事项、灵感闪现的瞬间或者是待办的任务。比如&#xff0c;在超市购物前&#xff0c;列出购物清单&#xff1b;在开会时&#xff0c;记下重要的讨论点&#xff1b;在学习时&#xff0c;捕捉那一刹那的灵感。…

C语言-第十八周做题总结-数组3

id:454 A.字符串逆序 题目描述 输入一个字符串&#xff0c;对该字符串进行逆序&#xff0c;输出逆序后的字符串。 输入 输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 输出 在一行中输出逆序后的字符串。 输入样例 输出样例 题解 先用一个while…

【大数据进阶第三阶段之Hive学习笔记】Hive基础入门

目录 1、什么是Hive 2、Hive的优缺点 2.1、 优点 2.2、 缺点 2.2.1、Hive的HQL表达能力有限 2.2.2、Hive的效率比较低 3、Hive架构原理 3.1、用户接口&#xff1a;Client 3.2、元数据&#xff1a;Metastore 3.3、Hadoop 3.4、驱动器&#xff1a;Driver Hive运行机制…

2.3_6 用信号量实现进程互斥、同步、前驱关系

2.3_6 用信号量实现进程互斥、同步、前驱关系 #mermaid-svg-fj0wp6tJGfadcT8h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fj0wp6tJGfadcT8h .error-icon{fill:#552222;}#mermaid-svg-fj0wp6tJGfadcT8h .error-t…

在Ubuntu22.04上离线部署Tailchat(一)

一&#xff1a;Tailchat介绍 Tailchat 是一款插件化易拓展的开源 IM 应用。可拓展架构赋予 Tailchat 无限可能性。前端微内核架构 后端微服务架构 使得 Tailchat 能够驾驭任何定制化/私有化的场景&#xff0c;是面向企业与私域用户打造&#xff0c;高度自由的群组管理与定制化…

第11章 GUI Page462~476 步骤二十三,二十四,二十五 Undo/Redo ③实现“Undo/Redo”菜单项

工程六 添加“编辑”菜单和子菜单 菜单ID分别为 idMenuEditUndo 和 idMenuEditRedo 热键&#xff08;快捷键&#xff09;分别为CtrlZ 和 CtrlShiftZ 变量名分别为 MenuItemEditUndo 和 MenuItemEditRedo 分别添加事件 ActionLink类增加成员函数 运行效果&#xff1a;“添加…

C语言注意点(2)

1.使用pow函数的相关问题 局部变量n0 while(num/pow(10,n)) n; 为什么不可行 printf("%d",num/pow(10,4)%10) 为什么要提前用temp先引出来 答&#xff1a;pow函数的返回值为double类型&#xff0c;1.终止条件不会满足 2.num/pow(10,4)结果为浮点型&#xff0c;浮…

运维工程师的出路

运维工程师的出路到底在哪里&#xff1f; 你是不是也常常听到身边的运维人员抱怨&#xff0c;他们的出路到底在哪里呢&#xff1f;别着急&#xff0c;让我告诉你&#xff0c;运维人员就像是IT界的“万金油”&#xff0c;他们像“修理工”一样维修服务器&#xff0c;像“消防员…

基于日照时数计算逐日太阳辐射

基于日照时数计算逐日太阳辐射

配置cendos 安装docker 配置阿里云国内加速

由于我安装的cendos是镜像版。已经被配置好了。所以只需要更新相关配置信息即可。 输入 yum update自动更新所有配置 更新完成后输入 yum list docker-ce --showduplicates | sort -r 自动查询所有可用的docker版本 输入 yum install docker-ce docker-ce-cli container…

STM32-03-STM32HAL库

文章目录 STM32HAL库1. HAL库介绍2. STM32Cube固件包3. HAL库框架结构4. 新建HAL版本MDK工程 STM32HAL库 1. HAL库介绍 HAL库 HAL&#xff0c;英文全称 Hardware Abstraction Layer&#xff0c;即硬件抽象层。HAL库是ST公司提供的外设驱动代码的驱动库&#xff0c;用户只需要调…