Dubbo快速入门

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.mfbz.cn/a/135590.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第26章_事务概述与隔离级别

文章目录 事务事务的特征事务的控制语句事务的生命周期事务的执行过程 ACID特性原子性一致性隔离性持久性 隔离级别不同隔离级别并发异常脏读不可重复读幻读区别 总结 事务 (1)事务的前提:并发连接访问。MySQL的事务就是将多条SQL语句作为整…

伦敦金股票代码是什么?

伦敦金是跟踪实时的现货黄金价格走势的差价合约交易,它的代码一般是LLG、GOLD,但也有一些货币交易平台会显示为XAU。伦敦金不是股票交易,因此没有四位数或六位数的股票代码,但伦敦金交易品种单一,投资者不用在数千支股…

路径规划-车辆分配及导航

1.根据城市之间的连通状态,构建以城市为结点、两个城市间的距离(根据两个城市经纬度计算的欧式距离)作为边权重的无向图。 2.根据起始点,对除了起始点之外的其他点进行聚类,将点划分成几个部分。 3.在每个部分中找出…

SpringBoot Web开发

SpringBoot3-Web开发 SpringBoot的Web开发能力,由SpringMVC提供。 Web开发的三种方式 方式处理过程注意事项实现效果全自动直接编写控制逻辑全部使用自动给配置默认效果手自一体Configuration、 配置WebMvcConfigurer、 配置WebMvcRegistrations不要标注 EnableWeb…

matlab模糊控制文件m代码实现和基础理论

1、内容简介 略 15-可以交流、咨询、答疑 通过m代码来实现生成模糊文件fis文件 2、内容说明 模糊文件m代码实现和基础理论 matlab模糊控制文件m代码实现和基础理论 模糊文件、m代码和模糊基础理论 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.co…

【C++】非类型模板参数 | array容器 | 模板特化 | 模板为什么不能分离编译

目录 一、非类型模板参数 二、array容器 三、模板特化 为什么要对模板进行特化 函数模板特化 补充一个问题 类模板特化 全特化与偏特化 全特化 偏特化 四、模板为什么不能分离编译 为什么 怎么办 五、总结模板的优缺点 一、非类型模板参数 模板参数分两类&#x…

【MongoDB】索引 – 文本索引(用权重控制搜索结果)

一、准备工作 这里准备一些数据 db.books.drop();db.books.insert({_id: 1, name: "Java", alias: "java 入门", description: "入门图书" }); db.books.insert({_id: 2, name: "C", alias: "c", description: "C 入…

[护网杯 2018]easy_tornado 1(两种解法!)

题目环境:发现有三个txt文本文件 /flag.txt/welcome.txt/hints.txt 依此点开 flag在/fllllllllllllag文件中 在hints.txt文件中发现md5计算 md5(cookie_secretmd5(filename)) 并且三个文件中都存在filehash(文件名被哈希算法加密32位小写) 猜…

轻量封装WebGPU渲染系统示例<23>- 可渲染对象添加到多个渲染器Pass节点(源码)

渲染和计算混合系统, 可以看做基于算力驱动设计理念的一种实现。 此系统中,可渲染(rendering)/计算(computing)实体可以任意添加到一个渲染器pass节点。若干个这样的节点相关联,就能构成对应的pass node graph,也就实现了整个3D渲…

CS224W6.2——深度学习基础

在本文中,我们回顾了深度学习的概念和技术,这些概念和技术对理解图神经网络至关重要。从将机器学习表述为优化问题开始,介绍了目标函数、梯度下降、非线性和反向传播的概念。 文章目录 1. 大纲2. 优化问题2.1 举例损失函数 3. 如何优化目标函…

【FISCO BCOS】十九、区块链浏览器部署

目录 一、环境依赖 检查环境 1.检查java 二、拉取安装脚本 获取部署安装包 ​编辑 解压安装包 进入目录 三、修改配置 四、部署服务 五、状态检查 检查前后端进程 1.检查后端server进程 2.检查前端的nginx进程 检查进程端口 六、使用区块链浏览器 1.配置群组…

(二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

HarmonyOS 高级特性

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

Zabbix监控SSL证书有效期

一、介绍 由于业务需要,最近通过 Let’s Encrypt 申请了一些 SSL 证书,而证书有效期为 3 个月,需要在证书到期之前 renew。由于域名较多经常忘记 renew,导致证书过期,因此想通过 Zabbix 的方式监控证书的到期时间&…

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…

2023亚太杯数学建模B题思路

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料5 最后 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 2023年第十三…

Python BeautifulSoup 库使用教程

文章目录 简介安装 BeautifulSoup 库BeautifulSoup 库的导入BeautifulSoup 库依赖的解析库创建 BeautifulSoup 对象CSS选择器1、通过标签名查找2、通过 CSS 的类名查找3、通过 Tag(标签) 的 id 查找4、通过 是否存在某个属性来查找5、通过 某个标签是否存在某个属性来查找 获取…

怎么制作安装电子版说明书?方法献上~

在现代科技发展的背景下,制作一份优质的电子版说明书对于帮助用户正确、高效地使用产品至关重要。无论是软件、设备还是家电产品,一份清晰明了的电子版说明书可以为用户提供指导和支持,提升用户体验和满意度。那么,如何制作一份出…

springcloud电影购票选座网站系统源码

开发技术: jdk1.8,mysql5.7,idea springcloud springboot mybatis vue elementui 功能介绍: 用户端: 登录注册 首页显示搜索电影,轮播图,电影分类,最近上架电影(可…

C++进阶-STL list容器的简单认识

STL list容器的简单认识 list容器基本概念list容器构造函数list容器赋值和交换list容器大小操作list容器插入和删除list容器数据存取list容器反转和排序list排序案例 list容器基本概念 list容器是将数据进行链式存储的容器,链表(list)是一种…