SpringCloudAlibaba 通过Dubbo实现微服务之间的RPC调用

news/2024/5/19 2:26:47/文章来源:https://blog.csdn.net/qq_50909707/article/details/127352552

目录

一、创建模块化项目

二、公共api接口模块

三、服务提供者

四、服务调用者

五、测试

六、案例代码


在微服务架构中,微服务之间的调用一般我们有两种比较好的解决策略,分别是通过OpenFeign的基于http协议的传输的调用和基于RCP协议的Dubbo框架来实现高效传输。对比两个策略可以清晰看到:OpenFeign更适合于向外部系统提供的服务,因为http协议的restful风格请求兼容性很好,缺点是会比RPC协议的Dubbo传输效率稍低一些,下面来看一下,在微服务架构中我们如何使用Dubbo进行远程调用吧!

一、创建模块化项目

项目结构如下:

 服务调用者和服务提供者共用api接口进行RCP调用,

服务提供者的依赖:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--nacos服务发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Dubbo Spring Cloud Starter --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><!--引入api包--><dependency><groupId>com.dragonwu</groupId><artifactId>dubbo-api</artifactId><version>1.0.0</version></dependency></dependencies>

二、公共api接口模块

 接口类会被服务提供者和服务调用者用到

public interface SayHelloService {MsgDto sendMsg(String msg);
}

传输数据对象

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MsgDto implements Serializable {String msg;Date date;
}

三、服务提供者

配置类:

server:port: 8001
spring:application:name: dubbo-producer-servicecloud:nacos:password: username: server-addr: nacos-server
dubbo:protocol:# 协议名称name: dubbo# dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80;# 如果没有配置port,则自动采用默认端口,如果配置为-1,则会分配一个没有被占用的端口# Dubbo 2.4.0+,分配的端口在协议缺省端口的基础上增加,确保端口可控port: -1registry:# 前缀spring-cloud说明:挂载到spring-cloud 注册中心address: spring-cloud://nacos-server:8848

@DubboCompoentScan //扫描指定包下的服务类

@SpringBootApplication
@DubboComponentScan(value = {"com.dragonwu.service.impl"}) //扫描指定包下的服务类
public class ProducerApplication {public static void main(String[] args) {SpringApplication.run(ProducerApplication.class, args);}
}

@DubboService:标注此类为dubbo服务

@DubboService
public class SayHelloServiceImpl implements SayHelloService {@Overridepublic MsgDto sendMsg(String msg) {return new MsgDto("通过dubbo调用后:"+msg,new Date());}
}

四、服务调用者

server:port: 8002
spring:application:name: dubbo-consumer-servicecloud:nacos:password: WXL1214??username: Nacosserver-addr: nacos-server
dubbo:protocol:# 协议名称name: dubboport: -1registry:address: spring-cloud://nacos-server:8848cloud:# 要订阅的服务subscribed-services:- dubbo-producer-service

启动类

public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}
}

@DubboReference:指定要消费的服务接口

@RestController
public class ConsumerController {@DubboReferenceprivate SayHelloService sayHelloService;@GetMapping("/sayHello/{msg}")public String sayHello(@PathVariable("msg") String msg){return sayHelloService.sendMsg(msg).toString();}
}

这里直接就可以调用服务提供者的对应服务了,是不是很便捷!

五、测试

启动两个服务后注册到了Nacos中:

apiPost进行测试: 

 通过服务调用者调用服务消费者的服务成功,效率也杠杠的!

六、案例代码

SpringCloudAlibaba各技术栈实现的案例代码集 我的笔记: SpringCloudAlibaba各技术栈实现的案例代码集 我的笔记 - Gitee.com

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

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

相关文章

基于SSM的餐饮管理系统的设计与实现

目 录 前 言 1 第1章 概述 2 1.1 选题背景及意义 2 1.2 技术概述 2 1.2.1 JSP技术概述 2 1.2.2 SpringSprngMVC介绍 3 1.2.3 MySQL数据库概述 3 1.2.4 Mybatis介绍 3 1.2.5 Maven介绍 3 1.3 开发平台介绍 4 1.3.1 Tomcat服务器 4 1.3.2 Eclipse简介 4 第2章 可行性研究 5 2.1 技…

Redis学习和笔记

Redis学习 作为一个程序员&#xff0c;你没有办法不学Redis redis是一个NoSql的&#xff08;远程字典服务的&#xff0c;key_value的数据库&#xff09; redis 能干嘛 内存存储&#xff0c;持久化&#xff0c;内存中是断电就失去&#xff0c;所有说持久化很重要效率高&#…

Linux Command mount 挂载

Linux Command mount 挂载 tags: 文件管理 文章目录Linux Command mount 挂载1. 简介2. 语法3. 退出状态4. 命令选项5. mount 挂载5.1 列出挂载的文件系统5.2 列出特定文件系统5.3 挂载文件系统5.4 使用 /etc/fstab 挂载文件系统5.5 挂载 USB 驱动器5.6 安装 CD-ROM5.7 挂载 I…

电路方案分析(十二)USB Type-C PD 移动电源参考设计方案

USB Type-C PD 移动电源参考设计方案 tips&#xff1a;TI设计方案参考分析&#xff1a;TI Designs&#xff1a;TIDA-01627 1.系统描述 2.系统概述 3.系统供电方案 4.测试数据 5.设计文件 6.关键术语 说明 此移动电源参考设计提供高度集成的 USB Type-C™电力传输 (PD) 解决…

Docter安装

上传安装包 docker-ce-18.06.0.ce-3.el7.x86_64.rpm 安装 yum install docker-ce-18.06.0.ce-3.el7.x86_64.rpm -y 启动docter systemctl start docker systemctl stop docker systemctl restart docker systemctl status docker&#xff08;查看状态&#xff09; 查看doct…

浮点型在内存中的存储

目录 1、浮点数的存储方式 (1) 转化为二进制 (2) 转化为国际标准形式 (3) 使用国际标准形式存储 (4) 存储方式验证 2、从内存中取出浮点数需满足的规则 (1) E 不全为0 或 不全为1 (2) E 全为 0 (3) E 全为 1 浮点数在内存中存储的方式和整型不一样。所以我们在存储的…

2022/10语音识别大作业:基于HMM(隐马尔可夫模型)的Matlab孤立数字语音识别

别看了你要找的就在这。csdn上所有这方面的资源都是收费的&#xff0c;而且没有直接能用的好的&#xff0c;我的也是基于重金买来的两份结合起来做了三天的大修之后才能运行。所以这也不是一份免费分享。但是本文解决了其他资源没有解决的问题&#xff0c;所以50是一个公道的价…

C++——程序员的逼格神器-github

github的重要性&#xff1a; 网络时代的程序员必备。 github的作用&#xff1a; 版本管理多人协作开源共享 常用方案&#xff1a; gitTortoiseGitgithub [Tortoise&#xff0c;程序员常称其为小乌龟&#xff0c;小海龟] 安装配置步骤 1.注册 GitHub: Where the world bui…

JVM之对象的内存模型、创建过程、对象引用、生命周期

JVM之对象的内存模型、创建过程、对象引用、生命周期Java对象内存模型对象头实例数据对齐填充部分对象的创建类加载检查分配内存初始化零值设置对象头执行init方法引用计数法对象的引用强引用软引用弱引用虚引用对象的生命周期创建阶段(Created)应用阶段(In Use)不可见阶段(Inv…

代理ARP (路由式代理ARP+vlan内代理ARP+vlan间代理ARP) [理论+实验验证]

衷心感谢三位大佬的博客 ! ! ! ! 这篇博客主要是为了记录笔记方便查看而整理&#xff0c; 主要内容整理来源&#xff1a; (58条消息) 代理ARP实验_在下小黄的博客-CSDN博客_arp代理实验 (58条消息) 代理ARP_士别三日wyx的博客-CSDN博客_arp代理 (59条消息) 华为ARP代理的三种方…

字节在职三年,如何想要三个月内将软件测试学好,我建议你这样学

目录 13年本科毕业&#xff0c;目前已经工作将近7年时间&#xff0c;第一段工作是在字节工作3年时间&#xff0c;目前是再另外一家大厂工作。今天跟大家分享一下我工作的心得&#xff0c;希望对你有所帮助 我对软件测试的理解 软件测试是软件开发的最后一道防线&#xff0c;…

【Vue 快速入门系列】样式绑定与条件渲染

文章目录前言样式绑定条件渲染前言 在vue中好像一切数据都是可以动态的&#xff0c;那么我们应如何让dom元素中的样式动起来呢&#xff1f;我们既然可以改变dom元素的样式&#xff0c;我们能不能将其隐藏起来呢&#xff1f;今天将会介绍到Vue中如何将属性与dom元素的样式进行绑…

Java List 扩容机制探究(ArrayList 、Vector、LinkedList)

文章目录List扩容ArrayList 扩容机制结论&#xff1a;无参构造创建的ArrayList的初始空间为0&#xff0c;在添加第一个元素的时候空间会默认为10&#xff0c;之后扩容会为当前容量的1.5倍。0->10->15->22->33->49源码分析1.ArrayList list new ArrayList();2. …

Android多媒体架构

Android多媒体架构 要实现我们的媒体播放器 主要使用的就是android media MediaPlayer 这样的一个类 来为我们的播放器的实现提供一个主要功能 而这个类的实现又依赖于 JNI层的 1)一些接口 2)Libmedia.so 库 (这个库才是 mediaplayer类的真正实现) 再往下就是我们的se…

产品能力|书山有路-趣味算法(第二版)读书笔记part1

系列文章目录 趣味算法&#xff08;第二版&#xff09;读书笔记&#xff1a; day1: 序章|学习的方法和目标. day2:算法之美|打开算法之门与算法复杂性 day3.算法之美|函数特性与图形 day4.数学之美|斐波那契数列 后续补充完善 提示&#xff1a;写完文章后&#xff0c;目录可以…

Kubernetes_16_静态Pod网关apiserver的audit审计日志

系列文章目录 文章目录系列文章目录前言一、理论&#xff1a;kube-apiserver的审计日志1.1 kube-apiserver.yaml 文件的五行修改1.2 audit-policy.yaml文件的修改二、实践&#xff1a;编写策略文件&#xff0c;打印想要的审计日志2.1 步骤1&#xff1a;编写修改policy.yaml文件…

05_排序与分页

1.排序数据 1.1排序规则 如果没有使用排序操作&#xff0c;默认情况下查询返回的数据是按照添加数据的顺序显示的。 使用ORDER BY子句排序 ASC (ascend):升序 DESC (descend):降序 ORDER BY子句在SELECT语句的结尾。 1.2单列排序 1.简单使用排序 #如果没有使用排序操作&am…

每日算法、面试题

目录 2022/10/16 一、算法 翻转字符串里的单词 找出字符串中第一个匹配项的下标 二、面试题 SpringMvc中如何解决POST请求的中文乱码问题 SpringMvc的工作流程 2022/10/16 一、算法 翻转字符串里的单词 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 …

【Nginx】三、Nginx实现四层负载均衡Nginx实现限流防盗链流量镜像

Nginx实现四层负载均衡一、Nginx实现四层负载均衡1、四层负载均衡与七层负载均衡区别2、Nginx四层负载均衡配置3、SocketTool工具4、TCP&UDPDebug工具二、Nginx实现限流三、Nginx实现防盗链四、Nginx流量镜像一、Nginx实现四层负载均衡 我们之前介绍的HTTP负载均衡&#x…

Silane-PEG-Alkyne,硅烷-聚乙二醇-炔基用于修饰蛋白类

An English name&#xff1a;Silane-PEG-Alkyne Chinese name&#xff1a;硅烷-聚乙二醇-炔基 Item no&#xff1a;X-GF-0314-10k CAS&#xff1a;N/A Formula&#xff1a;N/A MW&#xff1a;Silane-PEG-Alkyne5000、Silane-PEG-Alkyne3400、Silane-PEG-Alkyne2000、硅烷-…