Dubbo介绍

news/2024/11/7 9:43:37/文章来源:https://www.cnblogs.com/hld123/p/18531527

Dubbo介绍

   概要

   Dubbo是一个高性能的Java RPC框架。它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

   简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案

   一、面向接口的远程方法调用(RPC)

   1.  什么是RPC?

   RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。

   2. RPC框架的特点

   1) RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销。

   2) RPC框架一般都有注册中心,有丰富的监控管理。发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作协议私密,安全性较高

   3) RPC 协议更简单内容更小,效率更高,服务化架构、服务化治理,RPC框架是一个强力的支撑。

   3. Dubbo提供的RPC

   Dubbo提供高性能的基于代理的远程调用能力,服务以接口为粒度,屏蔽了远程调用底层细节。

   在 Dubbo 的服务架构中,服务提供方(Provider)和服务消费方(Consumer)通过接口来约定服务调用的逻辑,而不依赖于具体的实现。也就是说,Provider 提供一个接口,Consumer 仅需引用这个接口便可以调用远程服务,而无需了解具体的实现类。这种方式带来了两个好处:

   1)解耦性

   Provider 和 Consumer 通过接口进行调用,不直接耦合在一起,即使服务实现发生改变,Consumer 端也无需做任何修改。

   2)易于扩展

   服务提供方可以灵活地扩展或更换服务实现,只需确保接口不变,服务调用就不会受到影响。

   4. Dubbo默认使用什么协议

   Dubbo缺省协议是dubbo协议,采用的是单一长连接和NIO异步通信的方式,适用于小数据量以及大并发的服务调用,消费者远大于提供者,Dubbo的传输层协议TCP,异步的,使用Hessian序列化

   二、服务注册和发现
   注册中心
Dubbo 自身并没有实现独立的注册中心,但它支持多种主流的注册中心(如 Zookeeper、Nacos、Redis 等),从而使服务治理更灵活和适应不同的分布式环境。其中Zookeeper是Dubbo默认的注册中心。

服务提供者向 Zookeeper 注册服务,服务消费者向 Zookeeper 订阅服务;
服务消费者通过 Zookeeper 获取服务提供者的地址信息,然后调用服务提供者的服务


   三、Dubbo的负载均衡策略

   Dubbo内置多种负载均衡策略:

   1.  轮询

   2.  随机

   3. 最小活跃调用

   4. 一致性哈希

   但是,这些负载均衡策略并不一定适用于所有的场景,因此Dubbo也允许我们自定义负载均衡策略。

   自定义负载均衡策略需要实现LoadBalance接口,然后通过SPI机制进行扩展。自定义负载均衡策略可以根据不同场景的需求,实现不同的算法和逻辑,从而更好地满足业务需求。

   四、Dubbo架构

   1. 十层架构

   Dubbo 的十层架构是对整个框架的详细分层,将 Dubbo 的各个模块和功能进行清晰的职责划分。每一层都独立运作,相互协作,主要用于详细描述 Dubbo 框架内部的技术实现。具体的十层包括:

   1)服务接口层(Service):定义服务接口,供 Consumer 和 Provider 双方使用。

   2)配置层(Config):负责配置解析,将服务、注册中心、协议、接口等进行配置。

   3)服务代理层(Proxy):对服务接口生成代理类,使得服务消费端可以透明调用。

   4)服务注册层(Registry):负责服务的注册与发现,Consumer 从注册中心获取 Provider 的地址。

   5)集群层(Cluster):提供负载均衡、容错、路由等功能,实现集群调用的高可用性。

   6)监控层(Monitor):记录服务调用次数和调用时间等数据,用于监控服务性能和健康状况。

   7)远程调用层(Protocol):定义调用协议(如 Dubbo、HTTP、REST),负责序列化、反序列化和数据传输。

   8)信息交换层(Exchange):负责信息的请求和响应,包括异步调用和事件通知机制。

   9)网络传输层(Transport):底层的网络通信支持,负责基于 TCP 或其他协议的网络传输。

   10)数据序列化层(Serialize):将数据序列化成字节流,以便通过网络传输。

   2.  三层架构

   从Dubbo 在服务治理和配置方面的模块划分,可以分为三层架构。如下图:

   Dubbo的三层架构包括:

   1)接口层

   接口层是Dubbo的核心,它定义了服务提供者和服务消费者之间的通信接口。在Dubbo中,接口默认使用Java接口实现,具有很强的可扩展性。

   2)配置层

   配置层的作用是通过配置文件或代码来配置Dubbo的各种参数,包括连接参数、超时时间、重试次数等等。Dubbo支持多种配置方式,包括XML配置、注解配置和属性配置。

   3)基础设施层

   基础设施层是Dubbo的底层架构,包括了Dubbo的RPC框架、网络通信、序列化和反序列化等实现细节。Dubbo的基础设施层具有较高的性能和可定制性。


   参考链接:

   https://juejin.cn/post/7264829808008511499

   https://juejin.cn/post/7298682235975548968

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

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

相关文章

AnytimeCL:难度加大,支持任意持续学习场景的新方案 | ECCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: Anytime Continual Learning for Open Vocabulary Classification论文地址:https://arxiv.org/abs/2409.08518 论文代码:https://github.com/jessemelpolio/AnytimeCL创新点在线训练时,每个批次由新训练样本和类别平衡…

纯HTML5+CSS3实现一棵自己跳舞的树

代码没有多少,也没有用到任何图片,就实现了一棵可以自己跳舞的树。文件组成就简简单单的一个html和一个csshtml部分并不是很复杂,就是一些空的div,然后加上html模板也就那么十来行代码最关键的还是css部分,也不是很多,总共一百来行但就是上面这么简简单单的两个文件可以绘…

工地违规动火作业检测系统

工地违规动火作业检测系统利用现场监控摄像头对监控范围进行烟火监测,工地违规动火作业检测系统一旦发现烟火异常情况或火灾情况,无需人工干预,系统会迅速发出预警,弥补人力巡查的不足。工地违规动火作业检测系统的应用,不仅大大提高了火灾防控的效率和精度,更在很大程度…

车辆违规掉头车祸识别告警系统

车辆违规掉头车祸识别告警系统采用人工智能技术中的机器视觉分析识别技术。 车辆违规掉头车祸识别告警系统通过现场监控摄像头对交通道路区域进行实时检测,系统能够自动识别车辆的行驶状态和轨迹,判断是否存在违规掉头行为。 车辆违规掉头车祸识别告警系统一旦检测到车辆违规…

排水口水体颜色识别系统

排水口水体颜色识别系统利用现场监控摄像头对排水口水体进行实时监测,排水口水体颜色识别系统通过机器视觉技术对水体颜色进行分析和识别。一旦发现异常颜色,系统将立即发出告警通知相关人员,以便他们能够及时处理。这种智能监测方式不仅可以提高监测效率和准确性,还能有效…

渣土车篷布未遮盖抓拍识别系统

渣土车篷布未遮盖抓拍识别系统利用现场监控摄像头对现场出入口的渣土车进行实时监测,当监测到渣土车未遮盖篷布未密封等行为时,立即抓拍告警同时将告警推送给相关管理人员。渣土车篷布未遮盖抓拍识别系统主要包括现场监控摄像头、AI分析识别模块、告警推送模块和后台管理模块…

优化生产流程:Ftrans机台设备数据采集方案智能解决!

机台设备数据采集在工业生产与制造、能源管理、交通运输、建筑物管理以及医疗健康等多个领域都有着广泛的应用场景。机台设备数据采集可以提高生产效率与质量控制、降低运营成本与维护成本、提升决策效率与准确性等。企业通常采取FTP脚本进⾏统一机台设备数据采集,虽然可以满⾜…

数据摆渡一体机:实现高效数据传输与智能管理的解决方案

内外网数据摆渡一体机主要用于在内网和外网、红区与绿区、高密网和低密网之间安全高效地传输数据,确保数据的完整性和安全性。这种设备可以帮助企业实现信息隔离,同时又能满足数据交换的需求。数据摆渡一体机的应用场景 数据摆渡一体机主要应用于以下场景: 数据隔离与安全:…

GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU

本文主要分享在不同环境,例如裸机、Docker 和 Kubernetes 等环境中如何使用 GPU。跳转阅读原文:GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU1. 概述 仅以比较常见的 NVIDIA GPU 举例,系统为 Linux,对于其他厂家的 GPU 设备理论上流程都是一样的。省流:对…

橡胶

关键节点。 下破3-4的节点 可能预示着只是个ABC反弹。且反弹结束。如果再向上突破18210则很可能17465就是这个中期底部。

一起了解早期使用的各种垃圾收集器

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 并行收集: 指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。 并发收集: 指用户线程与垃圾收集线程同时工作(不一定是并行的可能会交替执行)。用户程序在继续运行,而垃圾收集程序…