首页 > 其他分享 >Dubbo介绍

Dubbo介绍

时间:2024-11-07 09:30:29浏览次数:1  
标签:Dubbo 调用 服务 接口 RPC 介绍 注册

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

标签:Dubbo,调用,服务,接口,RPC,介绍,注册
From: https://www.cnblogs.com/hld123/p/18531527

相关文章

  • 6、显卡品牌分类介绍:七彩虹 - 计算机硬件品牌系列文章.docx
    七彩虹是一个知名的显卡品牌,‌以其高质量的产品和广泛的市场认可而闻名。‌自1995年在中国深圳市成立以来,‌七彩虹经历了从代理品牌产品到自主研发、‌自主生产、‌自主品牌、‌自主销售为一体的完整产业链企业的转变。‌这个转变过程跨越了三大战略转型阶段,‌体现了七彩虹在......
  • 数组的介绍--Java
    1、数组是什么    数组就是一个容器,里面存放的是一组同种类型的数据。    Example:    1,3,5,7,8,10,12    int[]arr={1,3,5,7,8,10,12};    //  该数组存放的都是整型数据    李白,后羿,诸葛亮,刘邦,庄周    ......
  • mysql的 information_schema 数据库介绍
    information_schema是MySQL中的一个系统数据库,它提供了关于数据库元数据的信息。元数据是指描述数据库结构和内容的数据,例如表、列、索引、用户权限等。information_schema数据库是只读的,用户不能对其进行修改。位置information_schema数据库存在于每个MySQL实例中,不需要......
  • 图像重建Restormer介绍与使用
    文章目录前言一、Restormer介绍二、环境安装与配置三、代码使用与效果前言图像恢复是计算机视觉领域中的一个重要研究方向,它旨在通过算法修复损坏、模糊或缺失的图像信息,从而恢复图像的原始质量。随着图像处理技术的不断发展,图像恢复在许多领域都发挥着重要作用,如医......
  • linux 操作系统下ed命令介绍和使用案例
    linux操作系统下ed命令介绍和使用案例ed命令介绍ed是一个基于命令行的文本编辑器,广泛用于Unix和Linux系统。它是最早的文本编辑器之一,主要用于处理文本文件。与现代图形界面编辑器不同,ed不会在屏幕上显示文本,而是直接在命令行中操作文本行。这使得它在脚本和批处理任......
  • Ruoyi Vue功能介绍
    文章目录前言一、介绍二、快速了解1.主要特性2、技术选型(1)系统环境(2)主框架(3)持久层(4)视图层3、内置功能三、内置功能简介1.系统管理(1)用户管理(2)角色管理(3)菜单管理(4)字典管理(5)参数设置2.系统监控服务监控3.系统工具代码生成四、总结前言RuoYiVue是一个......
  • 第47篇 简单IOC介绍
    1.IOC的各种叫法依赖反转(DependencyInversion),SOLD原则中的D控制反转(InversionofControl)依赖注入DependencyInjection2.什么是依赖注入一个类或对象依赖于另一个类或对象,即一个对象需要另一个对象来完成某个功能OOP中,一个对象通常需要依赖其他对象来实现功能,这一现......
  • pg 流复制集群部署和介绍
    一、流复制集群介绍postgresql在9.x以前是基于wal日志传送的方式进行复制的,当一个wal写完进行切换之后才会把该wal日志文件传送到备库进行应用,这样延迟比较大。9.x以后支持流复制,所谓流复制就是主服务器在WAL记录产生时即将它们以流式传送给备服务器而不必等到WAL文件被......
  • FLD-03刀具锋利度测试仪产品介绍
    刀具的锋利度是衡量刀刃切割能力的一个重要指标。一把锋利的刀不仅使用起来更加轻松高效,还能提高工作的安全性。锋利度是影响刀具切割性能和使用的关键因素,因此通过科学的方法进行测试显得尤为重要。刀具锋利度测试仪是一种专门用来评估刀具边缘锋利程度的设备。这种仪器可以......
  • PbootCMS网站后台管理系统登录界面描述/LOGO/背景图/介绍修改
    1.修改登录界面描述位置:登录页面通常会有一个简短的系统或公司介绍。修改方法:找到登录页面的模板文件,通常位于 /template/admin/login.html。在该文件中找到描述文本的部分,通常是 <p> 标签内的内容。直接修改该段落的内容即可。2.修改LOGO位置:LOGO通常显......