Dubbo简介和配置

news/2024/12/5 12:46:54/

image-20230615111629348

1.Dubbo和OpenFeign的简介

  1. Dubbo一个高性能rpc框架,用于构建分布式微服务架构,它提供了服务注册与发现,负载均衡,容错机制等功能。Dubbo具有高性能和低延迟的特点,适合于大规模的分布式系统。
  2. OpenFeign一个基于Java的声明式HTTP客户端框架,它简化了编写远程调用代码的过程。OpenFeign允许开发人员通过编写接口的方式定义对远程服务的访问,然后通过注解来配置请求参数、路径等信息。OpenFeign会根据接口的定义自动生成具体的实现代码。它还提供了负载均衡、错误处理等功能,可以与Spring Cloud等微服务框架无缝集成。

2.Dubbo和OpenFeign的区别

  1. 协议支持:Dubbo支持多种协议,包括Dubbo协议、HTTP协议、RMI等OpenFeign主要使用HTTP协议进行通信
  2. 使用方式:Dubbo更加底层,需要显式定义接口和实现类,并配置各种参数。OpenFeign则更加注重于声明式的编程模型,通过定义接口和注解来实现远程调用,减少了手动编写具体实现的工作。
  3. 生态系统:Dubbo是一个独立的RPC框架,它提供了完整的分布式服务治理的解决方案。OpenFeign则是Spring Cloud生态系统中的一部分,与其他Spring Cloud组件(如Eureka、Ribbon、Hystrix等)紧密集成,提供了更全面的微服务开发解决方案。
  4. 功能特性:Dubbo提供了更多的功能特性,如负载均衡、容错机制、服务注册与发现等,适合于大规模的分布式系统OpenFeign则更加关注于RESTful风格的接口调用,适用于构建轻量级的微服务。

3.SpringCloud集成Dubbo

  1. 添加pom
        <!--dubbo--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.15</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-registry-nacos --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>2.7.15</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-metadata-definition-protobuf</artifactId><version>2.7.15</version></dependency>
  1. 服务端和消费端配置
dubbo:application:name: vector-member # 与服务名一致即可logger: slf4j# 元数据中心 local 本地 remote 远程 这里使用远程便于其他服务获取# 注意 这里不能使用 本地 local 会读取不到元数据metadataType: remoteprotocol:# 设置为 tri 即可使用 Triple 3.0 新协议# 性能对比 dubbo 协议并没有提升 但基于 http2 用于多语言异构等 http 交互场景# 使用 dubbo 协议通信name: dubbo# dubbo 协议端口(-1表示自增端口,从20880开始)port: -1serialization: hessian2registry:address: nacos://localhost:8848?username=nacos&password=nacoscheck: falsemetadata-report:address: nacos://localhost:8848?username=nacos&password=nacosprovider:version: 1.0.0consumer:version: 1.0.0# 禁止消费者启动时检查提供者是否可用check: false
  1. 公共模块声明远程调用接口

img

  1. 服务提供者实现接口编写服务业务

img

  1. 服务消费者使用@DubboReference注入接口,调用服务方法。

img

4.踩坑记录

  1. 未发现提供者

No provider available for the service.dubbo xxxxxxxx

解决方法: 如下图dubbo在启动时会默认检测@DubboReference标注的提供端服务是否可用,不可用则抛出No provider available for the service.dubbo xxxxxxxx. 因此我们只要在consumer禁用检查即可.

这也是两个业务模块互相调用的配置项。

img

  1. 类型转化异常

java.lang.ClassCastException: class java.util.HashMap cannot be cast to class com.vector.score.vo.ArtistVO (java.util.HashMap is in module java.base of loader ‘bootstrap’; com.vector.score.vo.ArtistVO is in unnamed module of loader ‘app’)

这个原因可能是配置了允许序列化泛化调用配置引起的.

img

  1. 序列化报错

This serialization only supports google protobuf objects, current object class is: java.lang.Long

可以通过debug 观察远程调用结果了解. 该错误是强制类型转化错误. dubbo默认hession2序列化.基本类型不变.但对象传输会变为k-v形式.应该转为map.

倘若使用protobuf 也是不支持对象传输.需要转为map并引入

<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-metadata-definition-protobuf</artifactId><version>2.7.15</version>
</dependency>

http://www.ppmy.cn/news/399277.html

相关文章

Linux:进程管理

进程&#xff1a;为管理程序的运行&#xff0c;操作系统会给每个运行的程序都注册为系统的一个进程&#xff0c;并为每个进程分配一个进程id 查看进程&#xff1a;Linux中可以通过ps命令查看系统中的进程信息&#xff0c;语法&#xff1a; ps [-e -f] -e选项&#xff1a;表示显…

【aspose-words】Aspose.Words for Java模板语法详细剖析

文章目录 前言&#x1f34a;缘由aspose-words模板语法再了解 &#x1f3af;主要目标实现3大重点 &#x1f381;快速链接&#x1f348;猜你想问如何与狗哥联系进行探讨1.关注公众号【JavaDog程序狗】2.踩踩狗哥博客 &#x1f36f;猜你喜欢文章推荐 正文&#x1f34b;aspose-word…

计算机三级网络技术

2010年9月全国计算机三级网络技术笔试试题 一、选择题&#xff08;每小题1分&#xff0c;共60分&#xff09;   &#xff08;1&#xff09;1991年6月中国科学院首先与美国斯坦福大学实现Internet联接&#xff0c;它开始是在   A&#xff09;电子物理所   B&#xff09;计…

铁威马F2-NAS2评测(家用云存储NAS)

为什么80%的码农都做不了架构师?>>> 公司需要一台共享服务器,公司没有专门的机房,搞一台服务器太吵。决定找一台nas服务器,找到了铁威马,查找了相关资料,发现这个产品不仅仅能实现我要的功能,还有更多人性化的功能,最重要是安静省电。下面是找到了一个评测…

2018年河南省对口升学计算机基础答案,河南省2018 年计算机类基础课 对口升学考试题.doc...

计算机类基础课 第 1 页(共 8 页) 河南省2018 年普通高等学校对口招收中等职业学校毕业生考试 计算机类基础课 考生注意:所有答案都要写在答题卡上,写在试题卷上无效 一、选择题(计算机组装与维护 1-30 题;Visual Basic 6.0 程序设计 31-55 题。每小题 2 分,共 110 分。每小…

2018年计算机类基础课试题答案,河南省 2018年计算机类基础课试题

《河南省 2018年计算机类基础课试题》由会员分享,可在线阅读,更多相关《河南省 2018年计算机类基础课试题(8页珍藏版)》请在人人文库网上搜索。 1、河南省 2018 年普通高等学校对口招收中等职业学校毕业生考试计算机类基础课考生注意:所有答案都要写在答题卡上,写在试题卷上…

工商业储能解读

工商业储能解读 0、前言1、2022-2023年工商业储能相关利好政策1.1 2022年1月4日1.2 2022年1月18日1.3 2022年2月10日1.4 2022年3月21日1.5 2022年3月22日1.6 2022年3月29日1.7 2022年4月2日1.8 2022年4月13日1.9 2022年4月25日1.10 2022年5月25日1.11 2022年5月30日1.12 2022年…

信号与系统小论文

信号与系统小论文 信号调制与解调模拟乘法器AD734信号调制信号解调 DFT和FFT 的运算复杂度比较DFT运算FFT运算复杂度比较 小论文有两个部分组成&#xff0c;第一个是用电路仿真实现信号的调制与解调&#xff0c;第二个是通过python将DFT和FFT运算的次数可视化。 信号调制与解调…