首页 > 其他分享 >Dubbo概述

Dubbo概述

时间:2022-09-19 15:44:57浏览次数:53  
标签:Dubbo 调用 服务 概述 注册 服务器 序列化

1. 什么是RPC

RPC(Remote Procedure Call):远程过程调用。
目标是为了实现多台计算机/服务器,互相调用方法的解决方案。
补充:他只是一个思想,并不是一个实现。

RPC的概念主要定义了两部分内容:

  1. 通信协议
  2. 序列化协议

通信协议

通信协议就是远程调用的通信方式,例如TCP,UDP等。

序列化协议

序列化协议指通信的内容格式,双方都要能理解的格式。
发送信息是序列化的过程,接受信息需要反序列化

2. 什么是Dubbo


Dubbo是一套RPC框架。既然是框架,我们可以在框架结构高度,定义Dubbo中使用的通信协议,使用的序列化框架技术,而数据格式由Dubbo定义,我们负责配置之后直接通过客户端调用服务端代码。
简单来说,Dubbo是RPC概念的实现。

Dubbo是Spring Cloud Alibaba提供的一个框架,能够实现微服务项目的互相调用

Dubbo通讯协议

Dubbo支持多种通讯协议和序列化协议,可以通过配置文件进行修改。

支持的通信协议

  • dubbo协议(默认)
  • rmi协议
  • hessian协议
  • http协议
  • webservice协议
  • ...

支持的序列化协议

  • hessian2(默认)
  • java序列化
  • compactedjava
  • nativejava
  • fastjson
  • dubbo
  • fst
  • kryo

Dubbo默认情况下,协议的特征如下:

  • 采用NIO单一长连接
  • 优秀的并发性能,但是大型文件的处理差
  • Dubbo开发简单,有助于提升开发效率

Dubbo服务的注册与发现


在Dubbo的调用过程中,必须包含注册中心的支持。
注册中心推荐使用Nacos,但是如果使用其他软件也能实现,例如redis、zookerper等。

服务发现,即消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与IP地址的情况下实现通信。

Dubbo服务发现过程

1.首先服务的提供者启动服务到注册中心注册,包括各种ip端口信息,Dubbo会同时注册该项目提供的远程调用的方法
2.服务的消费者(使用者)注册到注册中心,订阅发现
3.当有新的远程调用方法注册到注册中心时,注册中心会通知服务的消费者有哪些新的方法,如何调用的信息
4.RPC调用,在上面条件满足的情况下,服务的调用者无需知道ip和端口号,只需要服务名称就可以调用到服务提供者的方法

  dubbo服务发现原理

补充:
在Dubbo中,远程调用一句是服务的提供者在Nacos中注册的服务名称
服务发现,可能有多个运行的实例,任何一个空闲的实例都能提供服务。

Dubbo内置的四种负载均衡策略算法


  • random loadBalance 随机分配策略(默认)
  • round Robin loadBalance 权重平均分配
  • leastactive loadBalance 活跃度自动感知分配
  • consistanthash loadBalance 一致性hash算法分配

补充:实际运行中,每个服务器性能都不同

随机分配策略(默认)

随机生成数
//缺少一张图片
在哪个范围就谁执行
优点:
算法简单,效率高,长时间运行下,比较稳定
缺点:
可能出现连续访问比较弱的服务器 ,会导致异常甚至宕机

权重平均分配

如果几个服务器权重一致,那么就是依次运行,但是服务器的性能权重一致的可能性很小。
所以我们需要权重评价分配。

补充:
Dubbo2.6.4之前平均分配权重算法有问题。后添加了平滑权重算法

例如:5:3:1,
0-5次给第一台服务器、
5-8次给第二台服务器、
第9次会给第三台服务器,
如以此来了五个请求,这样可能会导致第一台服务器工作,其他服务器闲着。

活跃度自动感知

记录每个服务器处理一次请求的时间。
安装时间比例来分配任务数,运行一次需要时间多的分配的请求数较少。

一致性hash算法 ⭐

根据请求的参数进行hash运算选择服务器。

优点:

  • 以后每次相同参数的请求都会访问固定服务器

缺点:

  • 因为根据参数来选择服务器,所以不能平均分配

Dubbo生产者消费者配置


生产者

  • 要有service接口的依赖
  • 提供服务的业务逻辑层实现类需要添加@DubboService注解
  • Springboot启动类要添加@EnableDubbo注解

消费者

  • pom文件添加消费模块的service依赖
  • 业务逻辑层远程调用其他模块时使用@DubboReference注解获取业务逻辑层实现类



标签:Dubbo,调用,服务,概述,注册,服务器,序列化
From: https://www.cnblogs.com/chenxiaomeng/p/16707888.html

相关文章

  • 第二章 Redis-6.0概述安装
    一.缓存数据库的概念传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-ResidentDatabase)。磁盘数据库需要频繁地访问磁盘来进行数据的操......
  • Dubbo 服务的导出和引入
    现在我根据周末学习的内容做的一个大概的笔记,后面再完善吧!资源1.注册中心2.dubbo服务3.协议4.监控中心5.配置中心服务注册过程中主要围绕URL进行的---方便扩展,UR......
  • QT-项目结构概述(一)
    前置环境:Win10+VS2010+qt4.8.6QT项目在VS中文件夹的结构:(在电脑文件夹中除了GeneratedFiles的其他文件都在同一级,添加到VS中会自动分到下面文件夹中。)-FormFiles:存放项......
  • ASP.NET Core 01基础知识概述
    Program.cs使用Web模板创建的ASP.NETCore应用包含Program.cs文件中的应用程序启动代码。Program.cs文件中包含:已配置应用所需的服务。应用的请求处理管道定义......
  • 计算机网络(一)概述
    计算机网络在信息时代中的应用Internet是全球最大最重要的计算机网络中文译名互联网、因特网。注意互联网≠互连网互联网的两个重要基本特点连通性和资源共享互联网概......
  • Spring Boot集成Dubbo
    SpringBoot集成Dubbo分布式框架项目结构接口工程:存放实体bean和业务接口服务提供者:业务接口的实现类并将服务暴露且注册到注册中心,调用数据持久层添加依赖(dubbo、注册......
  • Dubbo-Adaptive实现原理
    前言前面我们已经分析DubboSPI相关的源码,看过的小伙伴相信已经知晓整个加载过程,我们也留下两个问题,今天我们先来处理下其中关于注解Adaptive的原理。什么是@Adaptive对......
  • Dubbo 线程池占满可能原因分析
    可能原因:(1)dubbo中有httpClient调用。由于http工具默认仅支持5个并发,且有线程池队列,当请求量超过5个的时候,多余的请求会在队列中堆积。前一批http请求结束之后其他......
  • LightGBM 算法概述
    LightGBM算法概述简要解释LightGBMLightGBM(LightGradientBoostingMachine)是一个开源的机器学习算法。它是基于决策树的算法,使用梯度提升来集成树。您可以在GitHu......
  • 数字图像处理概述
    计算机视觉技术任务:通过对采集的图片或视频进行处理以获得相应场景的相关信息。流程:视频处理以图像处理为基础图像数据最流行的表示方式:数字图像。成像方式不止可......