Dubbo快速入门

news2024/12/29 10:12:27

1.什么是Dubbo?

        Dubbo是一款高性能分布式服务框架,由阿里巴巴开发并开源发布。它支持多种协议,如dubbo、HTTP、Hessian、Thrift等,可以很好地解决分布式服务中的服务治理问题,提供了服务注册、发现、负载均衡、容错等功能,可以帮助开发者搭建高性能、高可靠、高可用的分布式服务系统。Dubbo已成为当前国内使用最广泛的分布式服务框架之一。

2.Dubbo的架构

节点角色说明:

Provider:    暴露服务的服务提供方
Container:  服务运行容器
Consumer 调用远程服务的服务消费方
Registry:     服务注册与发现的注册中心
Monitor:      统计服务的调用次数和调用时间的监控中心

3.Dubbo快速入门

在入门之前先要介绍一下另一个好东西zookeeper

Dubbo官方推荐使用Zookeeper作为注册中心

它和dubbo是什么关系呢?

答:

        Dubbo和Zookeeper是两个不同的系统,但它们通常一起使用以实现分布式服务的注册、发现和治理。

        在Dubbo中,服务提供者向Zookeeper注册自己的服务地址,服务消费者通过Zookeeper发现可用的服务提供者地址,然后调用服务。如果服务提供者宕机或者注册中心中的服务列表变化,Zookeeper会通知消费者进行更新。

        因此,Zookeeper在Dubbo中被用作服务注册和发现中间件,同时也被用于Dubbo的路由、负载均衡和容错机制的实现。Dubbo和Zookeeper的结合,可以让开发人员更方便地搭建分布式服务系统。

实现步骤

1. 创建 务提供者 Provider 模块
2. 创建服务消费者 Consumer 模块
3. 在服务提供者模块编写 UserServiceImpl 提供服务
4. 在服务消费者中的 UserController 远程调用 UserServiceImpl 提供的服

                5.分别启动两个服务,测试

4.Dubbo的高级特性

(1)dubbo-admin管理平台

1. d ubbo- a dmin 管理平台,是图形化的服务管理页面
2. 从注册中心中获取到所有的提供者 / 消费者进行配置管理
3. 路由规则、动态配置、服务降级、访问控制、权重调整、负载均衡等管理功能
4. d ubbo- a dmin 是一个前后端分离的项目。前端使用 vue ,后端使用 springboot

    5.安装 dubbo-admin 其实就是部署该项目

(2)常用高级配置

先提问

两个机器传输数据,如何传输java对象?

答:

在两台机器之间传输Java对象,有多种实现方式,下面列举三种比较常用的方式:

        1. 基于Java序列化机制传输对象。Java中的所有对象都实现了Serializable接口,可以通过序列化的方式将对象转换成二进制流进行传输。接收方再将接收到的二进制流反序列化为对象。Java提供了一系列的序列化、反序列化API,比如ObjectOutputStream、ObjectInputStream、ByteArrayOutputStream、ByteArrayInputStream等,可以实现对象的序列化和反序列化操作。但是这种方式的缺点是Java序列化的压缩率不高,数据传输效率不高,且不同Java版本之间的序列化兼容性会有问题。

        2. 基于JSON格式传输对象。Java中的对象可以通过JSON格式进行序列化和反序列化,可以使用一些第三方库如Jackson、GSON、FastJSON等实现Java对象和JSON之间的转换。这样的传输方式一般适合数据简单的场景,但是对象结构过于复杂的情况下,JSON格式可能不够灵活、不易读懂。

        3. 基于二进制协议传输对象。如使用Google开发的Protocol Buffer(protobuf)等工具。protobuf是一种高效、灵活的数据传输格式,可以序列化和反序列化一个包含结构化数据的对象,可用于通信协议、数据存储等场景。由于protobuf采用二进制格式,所以传输效率非常高。但是使用protobuf需要定义类型并编写.proto文件,对开发人员的技能要求较高。

总体来说,选择何种方式主要取决于对象的复杂程度、数据传输的效率要求、数据压缩率的要求、开发成本等多种因素。

大多是采用java 的序列化方式。

实现序列化接口 implements Serializable

1. dubbo 内部已经封装了序列化和反序列化
2. 我们只需要在定义 pojo 类时实现 Serializable 接口即可
3. 一般会定义一个公共的 pojo 模块,让生产者和消费者都依赖 该模块。

(3)地址缓存

还是先提问

注册中心不工作了,还可以访问服务嘛?

答:

        在 Dubbo 中,所有的服务提供者和消费者都需要通过注册中心发现彼此,建立连接,进行通信。因此,如果注册中心不工作了,服务提供者和消费者之间无法建立连接,无法进行通信。

                在这种情况下,如果服务提供者和消费者之间已经建立了连接,那么可以继续进行通信,但如果有新的服务提供者或者消费者加入,就无法实现自动发现和注册。

        为了解决这个问题,Dubbo 提供了一种叫做本地缓存的机制。当注册中心不可用时,本地缓存会自动生效,保证已经建立连接的服务提供者和消费者之间可以继续通信。但是,这种方式只对已经建立连接的服务提供者和消费者有效,对于新的服务提供者和消费者,需要手动去更新本地缓存,才能实现通信。因此,当注册中心不工作时,最好及时修复,避免影响整个系统的稳定性和可靠性。

        所以是可以,因为dubbo服务消费者在第一次调用时,会将服务提供方地址缓存到本地,以后在调用则不会访问注册中心。当服务提供者地址发生变化时,注册中心会通知服务消费者。

(4)解决雪崩问题

还是先提问,什么是雪崩问题?

答:

        雪崩问题(Avalanche Effect)是指当系统中的某个组件或服务出现故障或崩溃时,导致连锁反应,使整个系统不可用的现象。

        在分布式系统中,一个服务的故障可能会影响到其它服务,甚至整个系统。如果这些故障是相互关联的,它们可能会迅速扩大,像雪崩一样,最终导致整个系统崩溃。这种现象被称为雪崩效应。

        雪崩问题通常发生在高并发、大规模的分布式系统中,主要是由于不同服务之间的依赖性不当,或者是由于数据访问压力过大,导致某个服务或组件出现故障。

为了避免雪崩问题的发生,可以采取以下措施:

        1. 实现高可用性:通过多个实例或节点提供相同的服务,从而在一个实例或节点出现故障时,其他实例或节点可以继续提供服务。

        2. 实现负载均衡:通过负载均衡策略将请求分配到不同的服务实例或节点中,避免单个实例或节点承受过大的访问压力。

        3. 设置限流策略:通过限制并发访问量或请求频率,控制数据访问的压力,避免某个服务出现过载情况。

        4. 实现容错机制: 在系统中设置 fallback 机制,当某个服务不可用时,能够快速切换到备用服务,减少对整个系统的影响。

这里为了防止雪崩问题的出现,dubbo可以采用超时机制来解决这个问题。设置一个超时时间,在这个时间段内,无法完成服务访问,则自动断开连接

使用timeout属性配置超时时间,默认值1000,单位毫秒

(5)负载均衡

什么是负载均衡?

答:

        Dubbo 提供了多种负载均衡算法,用于将服务请求分发到多个服务提供者实例上,以实现服务调用的负载均衡和容错处理。

        在 Dubbo 中,负载均衡是指根据一定的规则和算法,在多个服务提供者实例之间分发服务请求。Dubbo 提供了多种负载均衡算法,例如:随机负载均衡、轮询负载均衡、最少活跃调用数负载均衡、一致性哈希负载均衡等。

        通过选择合适的负载均衡算法,可以优化服务请求的分发策略,从而提高系统的性能和容错性。同时,Dubbo 还提供了配置自定义的负载均衡算法的功能,让用户可以根据自己的需求进行配置和扩展。

Random 按权重随机,默认值。按 权重设置随机 概率。
RoundRobin 按权重轮询

LeastActive 最少活跃调用 数, 相同活跃数的 随机。
ConsistentHash 一致性 Hash 相同参数的请求总是发到同一提供者。

(6)集群容错

Dubbo 是一个分布式服务框架,为了保证服务的可用性和稳定性,Dubbo 提供了一些容错机制来应对服务失败和异常情况。

在 Dubbo 集群中,容错机制主要包括以下几种:

1. Failover Cluster,该集群容错机制是默认的容错机制,它会在出现异常或失败时自动重试其他服务提供者。

2. Failfast Cluster,该集群容错机制会尽快失败,不会重试其它服务提供者。

3. Failsafe Cluster,该集群容错机制会忽略异常或失败,始终正常返回。

4. Failback Cluster,该集群容错机制会在出现异常或失败时记录失败的请求,并在服务恢复后重传。

5. Forking Cluster,该集群容错机制会并行调用多个服务提供者,只有第一个返回结果的服务提供者的结果会被返回。

6. Broadcast Cluster,该集群容错机制会将请求广播给所有的服务提供者,只要有一个服务提供者正常返回结果,就立即返回。

通过选择合适的集群容错机制,在 Dubbo 集群中可以更好地解决服务失败和异常情况,提高系统的可用性和稳定性。

结语

dubbo快速入门完毕,下班

┏(^0^)┛

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

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

相关文章

模拟实现string类——【C++】

W...Y的主页 😊 代码仓库分享 💕 🍔前言: 我们已经将STL中的string类重要接口全部认识并熟练掌握,为了让我们对string与C类与对象更深层次的了解,我们这篇博客将string类进行模拟实现。 目录 string类的…

原生微信小程序学习之旅(一) -来简单的使用

文章目录 取消导航栏标头组件创建添加Component组件接收传入的数据 页面创建(Page)关于tabBartabBar自定义样式 轮播图轮播图指示点样式改变 微信小程序快速获取用户信息路由跳转获取url路径中的参数 bindtap(click)传参wx:if编写用户登陆关于默认工程目前的获取方法尝试一下服…

海外媒体发稿:彭博社发稿宣传中,5种精准营销方式

在如今的信息发生爆炸时期,营销方式多种多样,但是充分体现精准营销并针对不同用户群体的需求并非易事。下面我们就根据彭博社发稿营销推广为例子,给大家介绍怎样根据不同用户人群方案策划5种精准营销方式。 1.界定总体目标用户人群在制订精准…

通过设置响应头解决跨域问题

网上很多文章都是告诉你直接Nginx添加这几个响应头信息就能解决跨域,当然大部分情况是能解决,但是我相信还是有很多情况,明明配置上了,也同样会报跨域问题。 这大概率是因为,服务端没有正确处理预检请求也就是OPTIONS请…

设计模式之--原型模式(深浅拷贝)

原型模式 缘起 某天,小明的Leader找到小明:“小明啊,如果有个发简历的需求,就是有个简历的模板,然后打印很多份,要去一份一份展示出来,用编程怎么实现呢?” 小明一听,脑袋里就有了…

matlab 小波自适应阈值去噪

1、内容简介 略 12-可以交流、咨询、答疑 小波自适应阈值去噪 2、内容说明 小波自适应阈值一维信号去噪,也包含软阈值和硬阈值 硬阈值、软阈值、自适应阈值 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.com/s/1yQ1yDfk-_Qnq7tGpa23L…

【LeetCode:715. Range 模块 | 线段树】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

如何查看反汇编(VS)

如何查看反汇编 1. 设置断点2. 运行到该处3. 右键 反汇编结果 1. 设置断点 2. 运行到该处 3. 右键 反汇编 结果 即可跳转查看反汇编

kubernetes--pod详解

目录 一、pod简介: 1. Pod基础概念: 2. Kubrenetes集群中Pod的两种使用方式: 3. pod资源中包含的容器: 4. pause容器的两个核心功能: 5. Kubernetes中使用pause容器概念的用意: 二、pod的分类&#xff1a…

springboot模板引擎

1.服务端渲染时相比与前后端分离开发 原理是 跳过前端这一层 直接到服务端 通过数据和模板 生成页面返回前端 springboot包含如下模板引擎 典型如thymeleaf 1>导入依赖 2>查看路径 模板页面在 public static final String DEFAULT_PREFIX “classpath:/templates/”; 即…

便捷Benchmark.sh 自动匹配workload(自用)

​ 因为db_bench选项太多,而测试纬度很难做到统一(可能一个memtable大小的配置都会导致测试出来的写性能相关的的数据差异很大),所以官方给出了一个benchmark.sh脚本用来对各个workload进行测试。 该脚本能够将db_bench测试结果中…

华为ensp:开启rstp修改根网桥

开启rstp 首先去三台交换机上进入系统视图分别开启rstp模式 stp mode rstp 三台交换机上都执行这个命令,就开启rstp模式了 修改根网桥 现在进入要被修改的交换机的系统视图 stp priority 4096 这里我们修改只要比别的交换机数值小就可以,最小的就是…

(二)正点原子I.MX6ULL u-boot移植

一、概述 这里使用的是NXP官方2022.04发布的uboot,移植到正点原子阿尔法开发板(v2.1) u-boot下载:gitgithub.com:nxp-imx/uboot-imx.git 移植是基于NXP的mx6ull_14x14_evk 二、编译NXP官方uboot 进入NXP的u-boot目录 先在Makefile…

linux 下非sudo安装cmake

1.查看位数 getconf LONG_BIT2.下载对应压缩包 Download CMake Source Distribution 未编译源代码 Binary Distribution已经编译好的 3.解压至文件夹 tar -zxvf cmake-3.28.0-rc4-linux-x86_64.tar.gz 4.添加环境变量 vi ~/.bashrc 最后一行添加 写到bin目录 export P…

深度解析NLP定义、应用与PyTorch实战

1. 概述 文本摘要是自然语言处理(NLP)的一个重要分支,其核心目的是提取文本中的关键信息,生成简短、凝练的内容摘要。这不仅有助于用户快速获取信息,还能有效地组织和归纳大量的文本数据。 1.1 什么是文本摘要&#x…

从HDFS到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系 1、Hadoop时代的落幕2、Databricks和Snowflake做对了什么3、Hadoop与对象存储(OSD)4、Databricks与Snowflake为什么选择对象存储5、对象存储面临的挑战 1、Hadoop时代的落幕 十几年前,Hadoop是解决大规模数据分析的“白…

大数据治理运营整体解决方案:PPT全文39页,附下载

关键词:大数据,数据治理,数据治理解决方案,数据治理的目的和意义 一、数据治理的定义 数据治理专注于将数据作为企事业单位数据资产进行应用和管理的一套管理机制,能够消除数据的不一致性,建立规范的数据应…

【算法】算法题-20231110

一、力口:506. 相对名次 简单 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第…

【ARM入门】ARM、SOC、ARM授权 概念篇

什么是ARM ARM前身是Acorn公司设计的第一款微处理器,叫ARM:Acorn RISC Machine ARM公司的名字叫ARM:Advanced RISC Machines ARM内核 包括了寄存器组、指令集、总线、存储器映射规则、中断逻辑和调试组件等 内核是有ARM公司设计并以销售方…

HarmonyOS 高级特性

引言 本章将探讨 HarmonyOS 的高级特性,包括分布式能力、安全机制和性能优化。这些特性可以帮助你构建更强大、更安全、更高效的应用。 目录 HarmonyOS 的分布式能力HarmonyOS 的安全机制HarmonyOS 的性能优化总结 1. HarmonyOS 的分布式能力 HarmonyOS 的分布…