【SpringCloudAlibaba学习 04】整合Dubbo(实现数据消费者服务调用数据生产者服务)
文章目录
- 引言
- 1、【数据生产者工程】创建service-api子工程
- 1.1、【数据生产者服务】创建user-service-api服务
- 目录结构
- UserService服务接口
- UserService服务POM依赖
- 2、【数据生产者服务实现】user-service-impl服务添加接口实现、POM添加依赖
- POM依赖
- 目录结构
- application.yml配置
- UserServiceImpl代码
- 3、【数据消费者服务调用】order-service-impl服务添加接口实现、POM添加依赖
- POM依赖
- 总的目录
- application.yml配置
- OrderController代码
- 4、启动服务、测试
引言
Dubbo是阿里公司开源的一个RPC高性能、轻量级服务框架,实现服务的输出和输入功能,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
Dubbo最大的特点就是分层架构,这也是我最喜欢的架构设计,这样能够很大限度的解耦合。Dubbo给出了两种角色模型,第一种角色模型是数据生产者,第二种角色模型是数据消费者,让消费者去调用生产者,实现服务之间的调用。
1、【数据生产者工程】创建service-api子工程
在之前的篇章中,我们在service-impl子工程下创建了user-service-impl服务和order-service-impl服务,在这里,我们把user-service-impl服务做为数据生产者,order-service-impl服务做为数据消费者,通过这个关系,我们去创建服务,通过Dubbo让消费者去调用生产者服务接口。
我们在父工程项目下创建service-api子工程,这个工程下,我们放数据生产者的服务接口。
1.1、【数据生产者服务】创建user-service-api服务
接下来,我们在service-api子工程下创建user-service-api服务,用来提供数据生产者的服务接口,供数据消费者调用
目录结构
UserService服务接口
我们在这里创建一个数据生产者的测试接口,等一下数据消费者就调用这个接口
public interface UserService {/*** 获取用户名称** @return*/String getUserName();}
UserService服务POM依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>service-api</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>user-service-api</artifactId><name>user-service-api</name><version>${parent.version}</version></project>
2、【数据生产者服务实现】user-service-impl服务添加接口实现、POM添加依赖
POM依赖
<!-- Dubbo --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>org.example</groupId><artifactId>user-service-api</artifactId><version>${parent.version}</version></dependency>
目录结构
application.yml配置
spring:main:allow-circular-references: true # 跳过循环依赖dubbo:protocol:# dubbo 协议name: dubbo# dubbo 协议端口( -1 表示自增端口,端口从 20880 开始设置)port: -1cloud:# "" 为不加载,多个服务名用逗号分隔subscribed-services: user-service-impl
UserServiceImpl代码
实现数据生产者接口的具体实现
import com.user.api.UserService;
import org.apache.dubbo.config.annotation.DubboService;@DubboService
public class UserServiceImpl implements UserService {@Overridepublic String getUserName() {return "张三";}}
3、【数据消费者服务调用】order-service-impl服务添加接口实现、POM添加依赖
POM依赖
<!-- Dubbo --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency><dependency><groupId>org.example</groupId><artifactId>user-service-api</artifactId><version>${parent.version}</version></dependency>
总的目录
application.yml配置
spring:main:allow-circular-references: true # 跳过循环依赖dubbo:protocol:# dubbo 协议name: dubbo# dubbo 协议端口( -1 表示自增端口,端口从 20880 开始设置)port: -1cloud:# "" 为不加载,多个服务名用逗号分隔subscribed-services: user-service-impl
OrderController代码
import com.user.api.UserService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/order")
public class OrderController {@DubboReferenceprivate UserService userService;@RequestMapping("/getOrderInfo")public String getOrderInfo() {return "调用了user服务的getUserName接口:" + userService.getUserName();}}
4、启动服务、测试
我们把user-service-impl和order-service-impl服务启动,启动后,调用order服务的getOrderInfo接口
接口地址:localhost:9004/order/getOrderInfo
我们再把gateway服务启动起来,使用gateway做为网关进行统一端口管理
接口地址:localhost:9002/order/getOrderInfo
数据消费者调用数据提供方成功!
End
【SpringCloudAlibaba学习 04】整合Dubbo(实现数据消费者服务调用数据生产者服务)相关推荐
- spring整合dubbo实现简单分布式接口调用
随着微服务,分布式的概念越来越火,越来越多的互联网公司开始尝试使用分布式进行项目开发,分布式开发的好处毋庸置疑,分工明确,团队协作高效,安全,解耦分离等,其中以springcloud为代表的新分布式微 ...
- 微服务调用数据出现415错误 Content type ‘application/xml;charset=UTF-8‘ not supported
1. 问题: 在微服务项目时,通过LoadBlance + restTemplate 完成 Consumer 与 Provider 交互时,发生 415 数据格式错误.但是,归根结底,其实就是MVC部 ...
- dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
通过之前的学习了解了dubbo的常规的使用,下面我们看看特殊情况或者说真实环境下使用dubbo的一些配置实例. 一.一个接口有多个实现时可以使用group来区分 1.服务提供者配置 <?xml ...
- zookeeper 密码_「附源码」Dubbo+Zookeeper 的 RPC 远程调用框架
技术博文,及时送达 作者 | 码农云帆哥 链接 | blog.csdn.net/sinat_27933301 上一篇:从零搭建创业公司后台技术栈 这是一个基于Dubbo+Zookeeper 的 RPC ...
- 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)
文章目录 SpringCloud 1. 认识微服务 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 1.5 总结 2. 服务拆分和远程调用 2.1 服务拆分原则 ...
- 深入浅出 gRPC 04:gRPC 服务调用原理
目录 1. 常用的服务调用方式 1.1 同步服务调用 1.2 并行服务调用 1.3 异步服务调用 2. 服务调用的一些误区和典型问题 2.1 理解误区 2.1.1 I/O 异步服务就是异步 2.1.2 ...
- Vue与服务端数据交互 [ axios ]
Vue生命周期 每个Vue实例在被创建到销毁要经过一系列的过程,这整个过程称为Vue实例的生命周期 Vue在生命周期不同的阶段点会自动运行一些函数, 这些函数称为Vue生命周期的钩子(hook)函数 ...
- SpringCloudAlibaba学习-加入Dubbo
前言 上次学习了SpringCloudAlibaba的注册中心+配置中心Nacos,写了一个小Demo,对SpringCloudAlibaba有了一个基本的认知.这次将引入Dubbo,实现服务间的调用 ...
- SpringCloudAlibaba学习系列(2)dubbo集成
一.简介 Apache Dubbo 是一个高性能.基于 Java 的开源 RPC 框架.大家可以通过访问官网(http://dubbo.apache.org/)查看快速入门指南和文档. dubbo的特 ...
最新文章
- phpstrom配置svn/git提交
- SQL效率低下原因主要有
- python基础语法手册format-python基础_格式化输出(%用法和format用法)
- oracle cost cardinality,ORACLE 执行计划中cost cardinality bytes cpu_cost io_cost解释
- 强大的NVAE:以后再也不能说VAE生成的图像模糊了
- Bash脚本教程之脚本除错
- java的super_Java中this和super的用法总结
- VS 2008的JavaScript代码提示功能 (学习老赵视频的笔记)
- html5----圆形多角
- 数字后端基本概念介绍<Blockage Link>
- ngrok 代理访问
- 包导出Android升级ADT22后会报ClassNotFoundException的原因分析
- SpringBoot调优
- rpg人物制作软件_能够自己DIY角色的rpg游戏-可以自己DIY角色的rpg游戏大全_飞翔游戏专题...
- 程序员的人生——应届生北漂的第三天
- 德蕾莎修女---一个伟大的人
- 【电源设计】11变压器在开关电源中的应用
- 瑞典皇工学院计算机,瑞典规模最大的理工院校,皇家理工学院
- 前端入门学习笔记十九
- Hackable Projects (可拓展的项目)
热门文章
- Android源码 SettingsEnums路径
- (一)Python基础语法
- 获取中国银行网页中外汇率
- System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes”
- Twinmotion 2020 视频教程-学习笔记
- 计算机组成原理实验写出下列微指令编码,计算机组成原理实验三.doc
- android 高德地图录制视频,《高德地图》录制导航录音包方法教程
- 14-网关实战:网关层整合 Swagger 聚合API文档
- python爬取网页表格数据匹配_爬取表格类网站数据并保存为excel文件
- 高仿微信6.5.7(融云版)