当前位置: 首页 > news >正文

架构-微服务-服务调用Dubbo

文章目录

  • 前言
  • 一、Dubbo介绍
    • 1. 什么是Dubbo
  • 二、实现
    • 1. 提供统一业务api
    • 2. 提供服务提供者
    • 3. 提供服务消费者


前言

服务调用方案--Dubbo

  
基于 Java 的高性能 RPC分布式服务框架,致力于提供高性能和透明化的
RPC远程服务调用方案,以及SOA服务治理方案。


一、Dubbo介绍

1. 什么是Dubbo

  Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

  Spring-cloud-alibaba-dubbo 是基于Spring Cloud Alibaba技术栈对dubbo技术的一种封装,目的在于实现基于RPC的服务调用等。

服务调用示意图

二、实现

1. 提供统一业务api

public interface ProductService {Product findByPid(Integer pid);
}

2. 提供服务提供者

1 添加依赖

<!--dubbo-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>

2 添加dubbo配置

dubbo:scan:base-packages: com.itheima.service.impl # 开启包扫描protocols:dubbo:name: dubbo # 服务协议port: -1 # 服务端口registry:address: spring-cloud://localhost # 注册中心

3 编写并暴露服务

//暴露服务:注意这里使用的是dubbo提供的注解@Service,而不是Spring的
@Service
public class ProductServiceImpl implements ProductService {@Autowiredprivate ProductDao productDao;@Overridepublic Product findByPid(Integer pid) {return productDao.findById(pid).get();}
}

3. 提供服务消费者

1 添加依赖

<!--dubbo-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency

2 添加dubbo配置

dubbo:registry:address: spring-cloud://localhost # 注册中心cloud:subscribed-services: service-product # 订阅的提供者名称

3 引用服务

@RestController
@Slf4j
public class OrderController {@Autowiredprivate OrderService orderService;//引用服务@Referenceprivate ProductService productService;@RequestMapping("/order/prod/{pid}")public Order order(@PathVariable Integer pid) {log.info("接收到{}号商品的下单请求,接下来调用商品微服务查询此商品信息", pid);//调用商品微服务,查询商品信息Product product = productService.findByPid(pid);log.info("查询到{}号商品的信息,内容是:{}", pid, JSON.toJSONString(product));//下单(创建订单)Order order = new Order();order.setUid(1);order.setUsername("测试用户");order.setPid(pid);order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(1);orderService.createOrder(order);log.info("创建订单成功,订单信息为{}", JSON.toJSONString(order));return order;}
}

4 服务调用测试

服务调用测试


本文的引用仅限自我学习如有侵权,请联系作者删除。
参考知识
传智教育·黑马程序员


http://www.lryc.cn/news/494222.html

相关文章:

  • 【SpringBoot问题】IDEA中用Service窗口展示所有服务及端口的办法
  • OpenCV 图像轮廓查找与绘制全攻略:从函数使用到实战应用详解
  • 电机驱动MCU介绍
  • 人工智能学习框架详解及代码使用案例
  • 修改Textview中第一个字的字体,避免某些机型人民币¥不显示
  • 彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法
  • Python时间序列优化之道滑动与累积窗口的应用技巧
  • Buffered 和 BuffWrite
  • 【娱乐项目】基于cnchar库与JavaScript的汉字查询工具
  • 泷羽sec-蓝队基础之网络七层杀伤链 (下)学习笔记
  • FPGA 开发工程师
  • 【Leetcode 每日一题】3250. 单调数组对的数目 I
  • 较类中的方法和属性比较
  • nVisual可视化资源管理工具
  • 自动类型推导(auto 和 decltype)
  • 新型大语言模型的预训练与后训练范式,谷歌的Gemma 2语言模型
  • 基于投影寻踪博弈论-云模型的滑坡风险评价
  • WRF-Chem模式安装、环境配置、原理、调试、运行方法;数据准备及相关参数设置方法
  • Spring中每次访问数据库都要创建SqlSession吗?
  • 力扣刷题TOP101:6.BM7 链表中环的入口结点
  • 浅谈telnet和ping
  • P4-3【应用数组进行程序设计 | 第三节】——知识要点:字符数组
  • 彻底理解微服务配置中心的作用
  • SpringBoot开发——详细讲解 Spring Boot 项目中的 POM 配置
  • pyspark实现基于协同过滤的电影推荐系统
  • 视觉语言模型(VLM)学习笔记
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.11.29)
  • 文档加密怎么做才安全?
  • 使用Setup Factory将C#的程序打包成安装包
  • 解决 java -jar 报错:xxx.jar 中没有主清单属性