Dubbo框架保姆级教学[手把手教会你]

news2024/10/5 16:20:01

文章目录

  • Dubbo框架
    • Dubbo(RPC)概括
      • Dubbo支持的协议
      • Dubbo支持的注册中心
      • dubbo的调用结构
  • 配置服务项目
    • - 依赖
    • - application-local.yml
    • 配置类+注解
      • - provider(服务提供者): 远程调用的被调用的服务实例
      • - consumer(服务消费者): 远程调用的调用发起的服务实例
    • 远程调用原理
  • Dubbo负载均衡
    • 负载均衡:
    • Dubbo负载均衡策略
    • 配置负载均衡的方式
      • 注解使用(局部配置)
      • 配置yaml(全局配置)
    • dubbo配置负载均衡优先级

Dubbo框架

Dubbo(RPC)概括

RPC包含2部分内容

  1. 序列化过程: 是调用传输,存储过程中,从内存到内存设计的数据转化过程. 有非常多的序列化方法,序列化协议.
  2. 通信过程: 端与端通信对接,选择使用的底层通信方式.(http,tcp)
    在这里插入图片描述
    建立远程通信,序列化数据都属于RPC范畴.只有RPC的功能概念有的问题作为远程访问解决不了的,比如: 通信信息无法自动获取的(ip:port),负载均衡,平均访问的功能
  • Dubbo
  • dubbo是一个RPC框架. 序列化,底层通信协议,都可以已经包装好的.
  • 官网: https://cn.dubbo.apache.org/zh-cn/index.htmlApache Dubbo 是一款高性能、轻量级的开源服务框架。
  • 提示:错误的理解是占用的磁盘空间大小.
  • 轻量级:使用方便,快捷,不会在使用和创建的过程中投入过多的时间成本,和学习成本.
  • SPRING框架轻量级还是重量级: 整体是轻量级的(尤其是在springboot出现之后).早期版本中xml配置是重量级的.
  • 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。

Dubbo支持的协议

Dubbo协议(也是默认的,也是我们使用的)

RPC协议中不约束底层通信协议,dubbo作为RPC框架原则上也不限制约束。但是Dubbo官方推荐通信协议使用dubbo,这个协议也是Dubbo框架默认协议。
优点

  • 采用NIO单一长链接
  • 高并发处理请求(每个进程中包含了一个连接池)
  • 提升开发效率,降低通信消耗

缺点

  • 大文件传输性能低,可能出现问题

RMI协议

  • 除了dubbo协议默认推荐,还支持RMI协议

优点

  • jdk自带的能力,使用方便。

缺点

  • 偶尔链接会失败(不确定最新版本是否更新修改了这个问题)
  • 只适用于java(不符合微服务的目的)

Hessian协议
这个Hessian协议是dubbo可以选择的一个序列化协议。
优点

  • 可以于原生Hession互操作,基于HTTP通信协议也可以基于上述dubbo中其它通信协议实现序列化。
  • 序列化的二进制数据长度相比于常见的大部分序列化协议都短.

缺点

  • 需要hessian.jar的支持,http短连接开销大。

Dubbo支持的注册中心

Zookeeper
第一个是zookeeper。他是分布式协调的服务注册发现组件。
优点

  • 支持分布式,有很多周边产品

缺点

  • 受限于zookeeper软件的稳定性,Zookeeper专门分布式辅助软件,稳定性较优。

Nacos
spring cloud alibaba众多组件的核心组件注册中心。
优点

  • 阿里的注册中心,无缝集成spring cloud,除此还支持分布式配置管理。
    缺点
    其它不常见的注册中心

dubbo的调用结构

dubbo中的调用由一些概念需要理解:

  • provider(服务提供者):是微服务某个服务实例,对外提供被调用的功能的实例.
    • stock-adapter是provider的角色
  • consumer(服务消费者):是微服务某个服务实例,调用其他服务实例的功能的实例
    • order-adapter是consumer的角色;
  • 注册中心:nacos启动的服务端进程
    在这里插入图片描述

配置服务项目

- 依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>

- application-local.yml

dubbo:
  application:
    # 所有微服务中application.name 使用${}引用一下我们配置过的这个名字
    name: ${spring.application.name}
  #dubbo协议
  protocol:
    #dubbo使用nacos作为注册中心 注册的协议信息
    #-1表示从20880端口开始,选择第一个空端口
    port: -1
    name: dubbo
  #配置注册中心属性
  registry:
    #告诉dubbo注册中心类型和地址
    address: nacos://localhost:8848
    #分组 和nacos之前分组完全一样的.
    group: 0.0.1-SNAPSHOT
    #命名空间 dev 这个属性没有提示
    parameters:
      registry-type: nacos
      namespace: 8ab3682d-d7c4-487f-a695-5921cbf57eef
    #关闭在nacos中dubbo提供的一些默认的配置注册信息,如果不关闭,随着dubbo
    #客户端运行nacos配置中心列表中会出现大量重复
    use-as-config-center: false
    use-as-metadata-center: false
  consumer:
    #关闭consumer的检查功能,如果不关闭,在consumer一旦发现服务注册中心
    #没有调用的服务,就会报错
    check: false

配置类+注解

- provider(服务提供者): 远程调用的被调用的服务实例

  • 在项目启动类中,添加dubbo配置导入. @EnableDubbo
  • 在业务层,使用dubbo注解,提供注册信息携带数据.@DubboService

- consumer(服务消费者): 远程调用的调用发起的服务实例

  • 和provider不同的在于注解的使用.调用远程service实现的引入bean对象的注解不再使用@Resource @Autowired
  • 在这里插入图片描述

远程调用原理

在这里插入图片描述

Dubbo负载均衡

负载均衡:

  • 负载: 并发,流量,请求等被程序处理的任务,都可以称为负载.微服务中指的一般是流量和并发.
  • 均衡: 集群分布式环境下,将负载平衡的分配给处理负载的任务单元.
    在这里插入图片描述

Dubbo负载均衡策略

  • random: 随机分配负载均衡
  • roundRobin: 轮训分配负载均衡,挨个访问
  • leastactive: 最小活跃分配负载均衡,越闲,分配的越多.使用相应数量在单位时间处理的越多的,越闲

配置负载均衡的方式

注解使用(局部配置)

  • 提供者
    weigth 权重值,越高配的越多
    在这里插入图片描述
  • 消费者(具体以谁为准,以下面优先级为准)
    在这里插入图片描述

配置yaml(全局配置)

  • 提供者
    在这里插入图片描述
  • 消费者
    在这里插入图片描述

dubbo配置负载均衡优先级

  • 全局和局部
    局部优先级>全局优先级
  • provider和consumer
    provider优先级>consumer优先级
    局部provider>全局provider>局部consumer>全局consumer

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

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

相关文章

34.Vue自定义指令-对象式

33.Vue自定义指令&#xff08;函数式&#xff09;_vue自定义函数_未来音律的博客-CSDN博客还有一种就是&#xff0c;我们去定义指令的时候&#xff0c;也不要去写v-前缀&#xff0c;定义指令的时候需要给指令起名字&#xff0c;那么这个指令的名字直接就叫big,而用的时候还是要…

基于linux下的高并发服务器开发(第二章)- 2.7 进程退出、孤儿进程、僵尸进程

01 / 进程退出 exit.c /*#include <stdlib.h>void exit(int status);#include <unistd.h>void _exit(int status);status参数&#xff1a;是进程退出时的一个状态信息。父进程回收子进程资源的时候可以获取到。 */ #include <stdio.h> #include <stdlib.…

青翼科技自主研发4路AD子卡FMC137

FMC137是一款基于VITA57.4标准规范的JESD204B接口FMC子卡模块&#xff0c;该模块可以实现4路14-bit、2GSPS/2.6GSPS/3GSPS ADC采集功能。该板卡ADC器件采用ADI公司的AD9208芯片&#xff0c;&#xff0c;与ADI公司的AD9689可以实现PIN脚兼容。该ADC与FPGA的主机接口通过16通道的…

word文档删除顽固的双横线

1. 选中双横线 2. 开始 - 字体 - 隐藏(勾选) 3. 顽固的双横线已成功删除

微信小程序用户登录及头像昵称设置教程(前后端)

目录 1.背景分析 2.具体需求分析 3.前端设计 3.1 用户登录 3.2 头像昵称填写&#xff08;个人信息界面&#xff09; 4.后端设计 4.1项目架构分析 4.2 代码分析 实体类 dao层 service层 controller层 工具类 5.nginx部署 6.效果演示 1.背景分析 众所周知&#x…

【Distributed】分布式Ceph存储系统之相关应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1. 服务端操作1.1 在管理节点创建 mds 服务1.2 查看各个节点的 mds 服务1.3 创建存储池&#xff0c;启用 ceph 文件系统1.4 查看mds状态1.5 创建用户 2. 客户端操作2.1 客户端要在 public 网络内2.2 在客户端创建工作目录2.3 在 cep…

相册搜索功能再升级?iOS17隐藏小细节曝光,关键字搜索视频声音

据博主Ryan McLeod的最新推文透露&#xff0c;iOS 17已经隐藏了一些小细节&#xff0c;其中包括相册搜索功能的改进。用户现在可以通过在iOS 17的相册中输入关键字来快速查找含有特定声音的视频片段&#xff0c;从而提供更便捷的用户体验。例如&#xff0c;输入动物叫声的关键字…

朴素贝叶斯与贝叶斯网络详解

文章目录 一、背景1.1 贝叶斯方法的提出1.2 频率派与贝叶斯派的区别 二、分类问题三、基础知识3.1 条件概率3.2 联合概率3.3 贝叶斯公式4.1 贝叶斯网络介绍4.2 贝叶斯网络的基本结构4.2.1 head-to-head&#xff08;共同作用&#xff09;4.2.2 tail-to-tail&#xff08;共同原因…

【北大是如何考DFS的】【我们一起60天准备考研算法面试(大全)-第十六天 16/60】【DFS】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

马斯克宣布成立xAI——引领开放人工智能时代的新纪元

马斯克宣布成立xAI——引领开放人工智能时代的新纪元 &#x1f7e2;一、前言&#x1f7e2;二、马斯克的背景与愿景&#x1f7e2;三、xAI的潜在研究方向&#x1f7e2;四、xAI面临的挑战&#x1f7e2;五、xAI的潜在影响&#x1f7e2;六、xAI与OpenAI的异同&#x1f7e2;七、对Ope…

人脸识别轻量版

github地址 https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB 下载后测试 前提是安装了pytorch环境&#xff0c;原始测试py文件是这个&#xff0c;是需要用命令行执行的 为了测试方便&#xff0c;我将它改成容易debug的 """ This c…

键入网址发生什么--基础网络知识

浏览器解析URL生成请求信息&#xff0c;发送给web服务器。 一、浏览器解析URL & 浏览器解析URL作用&#xff1a;确定了 Web 服务器和文件名 URL组成&#xff1a;http&#xff1a; // web服务器域名 /目录名/ / 目录名/ ....文件名 当没有具体文件路径名时&#xff…

SRT对比TCP协议的优缺点

主流的流媒体协议&#xff0c;如HTTP&#xff0c;HLS&#xff0c;RTMP是TCP协议&#xff0c;而RTSP既可以基于TCP也可基于UDP协议进行数据传输。 从趋势来看&#xff0c;新的流媒体协议大都选择UDP作为底层传输协议&#xff0c;其主要原因和流媒体业务本身的特性及TCP特性有关。…

[相遇 Bug] - ImportError: numpy.core.multiarray failed to import

背景: 因为最近在看点云模型, 在自己的环境上部署该项目: https://github.com/open-mmlab/OpenPCDet/tree/master 执行命令: 这里执行github项目给的demo.py文件, 命令格式如下: python demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml --ckpt xxx/pointpillar_772…

找回删除的照片?这4招很简单!

“电脑上删除的照片还能找回来吗&#xff1f;我的照片刚刚被误删了很多张&#xff0c;现在想把它们恢复回来&#xff0c;还有成功的可能性吗&#xff1f;” 对于很多朋友来说&#xff0c;将照片保存下来是一件很美好的事。当我们想起某个场景时&#xff0c;我们能通过这些照片来…

Vue3 – 高级语法补充

1 Vue中自定义指令 2 Vue内置组件Teleport 3 Vue内置组件Suspense 4 Vue中安装插件的方式 5 Vue中渲染函数的使用 6 Vue中编写jsx的语法 Vue中自定义指令 自定义指令的绑定方法有两种&#xff0c;一种是局部的&#xff0c;一种是全局的。 指令可以将部分js代码转换成指令的…

前端 | (四)CSS基础及CSS选择器 | 尚硅谷前端html+css零基础教程2023最新

学习来源&#xff1a;尚硅谷前端htmlcss零基础教程&#xff0c;2023最新前端开发html5css3视频 文章目录 &#x1f4da;CSS基础&#x1f407;CSS简介&#x1f407;CSS编写位置⭐️行内样式⭐️内部样式⭐️外部样式 &#x1f407;样式表的优先级&#x1f407;CSS语法规范&#…

Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!

关于Appium V2 Appium V2 beta版本在2021年发布&#xff0c;从2022年1月1号开始&#xff0c;Appium核心团队不会再维护Appium 1.x版本了&#xff0c;所有近期官方发布的平台驱动&#xff08;如Android平台的UIAutomator&#xff0c;IOS平台的XCUITest&#xff09;不再兼容Appi…

大数据分析案例-基于随机森林算法构建心力衰竭预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

云原生周刊:6 项 K8s 成本控制策略 | 2023.7.17

开源项目推荐 Base Image Finder 当使用容器扫描工具来识别已知漏洞&#xff08;CVE&#xff0c;或常见漏洞和暴露&#xff09;时&#xff0c;可能很难理解漏洞在容器中的位置&#xff0c;以及如何缓解这些漏洞。通常&#xff0c;最简单、最有效的缓解方法是更新 "基本映…