文章目录

  • 引言
  • 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(实现数据消费者服务调用数据生产者服务)相关推荐

  1. spring整合dubbo实现简单分布式接口调用

    随着微服务,分布式的概念越来越火,越来越多的互联网公司开始尝试使用分布式进行项目开发,分布式开发的好处毋庸置疑,分工明确,团队协作高效,安全,解耦分离等,其中以springcloud为代表的新分布式微 ...

  2. 微服务调用数据出现415错误 Content type ‘application/xml;charset=UTF-8‘ not supported

    1. 问题: 在微服务项目时,通过LoadBlance + restTemplate 完成 Consumer 与 Provider 交互时,发生 415 数据格式错误.但是,归根结底,其实就是MVC部 ...

  3. dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)

    通过之前的学习了解了dubbo的常规的使用,下面我们看看特殊情况或者说真实环境下使用dubbo的一些配置实例. 一.一个接口有多个实现时可以使用group来区分 1.服务提供者配置 <?xml ...

  4. zookeeper 密码_「附源码」Dubbo+Zookeeper 的 RPC 远程调用框架

    技术博文,及时送达 作者 | 码农云帆哥 链接 | blog.csdn.net/sinat_27933301 上一篇:从零搭建创业公司后台技术栈 这是一个基于Dubbo+Zookeeper 的 RPC ...

  5. 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)

    文章目录 SpringCloud 1. 认识微服务 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 1.5 总结 2. 服务拆分和远程调用 2.1 服务拆分原则 ...

  6. 深入浅出 gRPC 04:gRPC 服务调用原理

    目录 1. 常用的服务调用方式 1.1 同步服务调用 1.2 并行服务调用 1.3 异步服务调用 2. 服务调用的一些误区和典型问题 2.1 理解误区 2.1.1 I/O 异步服务就是异步 2.1.2 ...

  7. Vue与服务端数据交互 [ axios ]

    Vue生命周期 每个Vue实例在被创建到销毁要经过一系列的过程,这整个过程称为Vue实例的生命周期 Vue在生命周期不同的阶段点会自动运行一些函数, 这些函数称为Vue生命周期的钩子(hook)函数 ...

  8. SpringCloudAlibaba学习-加入Dubbo

    前言 上次学习了SpringCloudAlibaba的注册中心+配置中心Nacos,写了一个小Demo,对SpringCloudAlibaba有了一个基本的认知.这次将引入Dubbo,实现服务间的调用 ...

  9. SpringCloudAlibaba学习系列(2)dubbo集成

    一.简介 Apache Dubbo 是一个高性能.基于 Java 的开源 RPC 框架.大家可以通过访问官网(http://dubbo.apache.org/)查看快速入门指南和文档. dubbo的特 ...

最新文章

  1. phpstrom配置svn/git提交
  2. SQL效率低下原因主要有
  3. python基础语法手册format-python基础_格式化输出(%用法和format用法)
  4. oracle cost cardinality,ORACLE 执行计划中cost cardinality bytes cpu_cost io_cost解释
  5. 强大的NVAE:以后再也不能说VAE生成的图像模糊了
  6. Bash脚本教程之脚本除错
  7. java的super_Java中this和super的用法总结
  8. VS 2008的JavaScript代码提示功能 (学习老赵视频的笔记)
  9. html5----圆形多角
  10. 数字后端基本概念介绍<Blockage Link>
  11. ngrok 代理访问
  12. 包导出Android升级ADT22后会报ClassNotFoundException的原因分析
  13. SpringBoot调优
  14. rpg人物制作软件_能够自己DIY角色的rpg游戏-可以自己DIY角色的rpg游戏大全_飞翔游戏专题...
  15. 程序员的人生——应届生北漂的第三天
  16. 德蕾莎修女---一个伟大的人
  17. 【电源设计】11变压器在开关电源中的应用
  18. 瑞典皇工学院计算机,瑞典规模最大的理工院校,皇家理工学院
  19. 前端入门学习笔记十九
  20. Hackable Projects (可拓展的项目)

热门文章

  1. Android源码 SettingsEnums路径
  2. (一)Python基础语法
  3. 获取中国银行网页中外汇率
  4. System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes”
  5. Twinmotion 2020 视频教程-学习笔记
  6. 计算机组成原理实验写出下列微指令编码,计算机组成原理实验三.doc
  7. android 高德地图录制视频,《高德地图》录制导航录音包方法教程
  8. 14-网关实战:网关层整合 Swagger 聚合API文档
  9. python爬取网页表格数据匹配_爬取表格类网站数据并保存为excel文件
  10. 高仿微信6.5.7(融云版)