nacos集成dubbo实现远程服务调用多服务端2

文章目录

          • 一、版本选取、需求和项目简述
            • 1. 版本选取
            • 2. 项目模块说明
            • 2. 需求说明
          • 二、需求实战-依赖初始化
            • 2.1. 创建maven父工程EShopParent
            • 2.2. 创建子模块DubboApi
            • 2.3. 创建服务端Stock-serv
            • 2.4. 创建服务端product-serv
            • 2.5. 创建消费端端Order-serv
          • 三、需求实战-代码编写
            • 3.1. 创建公共接口
            • 3.2. 扣库存服务端编写
            • 3.3. 产品服务端编写
            • 3.5. 消费端编写
          • 四、需求实战-配置编写
            • 4.1. 扣库存服务端配置
            • 4.2. 产品服务端配置
            • 4.3.消费端配置
          • 五、需求测试实战
            • 5.1. 启动nacos
            • 5.2. 启动服务端
            • 5.3. 启消费端
            • 5.4. 查看nacos
            • 5.5. 项目模块分布结构
          • 六、测试实战
            • 6.1. 请求扣库存链路
            • 6.2. 请求产品链路
            • 6.3. 常见的异常

一、版本选取、需求和项目简述
1. 版本选取
框架版本说明
spring-cloud-alibaba2.2.6.RELEASE版本要对应
spring-boot2.3.2.RELEASE版本要对应
nacos1.4.2版本要对应
org.apache.dubbo2.7.8版本要对应
2. 项目模块说明
模块说明
EShopParent父工程
DubboApi接口子模块
Order-serv订单模块
Stock-serv扣库存模块
product-serv产品模块
2. 需求说明

订单模块调用扣库存模块完成库库存的业务

二、需求实战-依赖初始化
2.1. 创建maven父工程EShopParent
<?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"><modelVersion>4.0.0</modelVersion><groupId>com.gblfy</groupId><artifactId>EShopParent</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><modules><module>Order-serv</module><module>Stock-serv</module><module>DubboApi</module><module>product-serv</module></modules><description>父工程 所有子工程需要依赖此工程</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.2.RELEASE</version></parent><dependencies><!--springMVC启动器--><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组件--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId></dependency></dependencies><dependencyManagement><dependencies><!--spring-cloud-alibaba依赖版本控制--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><scope>import</scope><type>pom</type></dependency></dependencies></dependencyManagement>
</project>
2.2. 创建子模块DubboApi
<?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>EShopParent</artifactId><groupId>com.gblfy</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>DubboApi</artifactId></project>
2.3. 创建服务端Stock-serv
<?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>EShopParent</artifactId><groupId>com.gblfy</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>Stock-serv</artifactId><dependencies><dependency><groupId>com.gblfy</groupId><artifactId>DubboApi</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
2.4. 创建服务端product-serv
<?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>EShopParent</artifactId><groupId>com.gblfy</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>product-serv</artifactId><dependencies><dependency><groupId>com.gblfy</groupId><artifactId>DubboApi</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>
2.5. 创建消费端端Order-serv
<?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>EShopParent</artifactId><groupId>com.gblfy</groupId><version>1.0-SNAPSHOT</version></parent><groupId>com.gblfy</groupId><artifactId>Order-serv</artifactId><modelVersion>4.0.0</modelVersion><dependencies><dependency><groupId>com.gblfy</groupId><artifactId>DubboApi</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>
三、需求实战-代码编写
3.1. 创建公共接口

在DubboApi子模块中创建调用扣库存模块(Stock-serv)的接口IStockService

package com.gblfy.stock.api;public interface IStockService {public String reduce(Integer productId, Integer userId);
}

在DubboApi子模块中创建调用产品(product-serv)模块的接口

package com.gblfy.product.api;public interface IProductService {public String buyProduct(Integer productId, Integer userId);
}
3.2. 扣库存服务端编写

在Stock-serv子模块中实现接口实现类StockServiceimpl

package com.gblfy.service.impl;import com.gblfy.stock.api.IStockService;
import org.apache.dubbo.config.annotation.DubboService;@DubboService
public class StockServiceimpl implements IStockService {@Overridepublic String reduce(Integer productId, Integer userId) {return "用户编号:   " + userId + "产品编码:   " + productId + "减库存1个";}
}

启动类上添加@EnableDiscoveryClient注解

package com.gblfy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient
@SpringBootApplication
public class StockApplication {public static void main(String[] args) {SpringApplication.run(StockApplication.class);}
}
3.3. 产品服务端编写

在product-serv子模块中实现接口实现类ProductServiceImpl

package com.gblfy.service.impl;import com.gblfy.product.api.IProductService;
import org.apache.dubbo.config.annotation.DubboService;@DubboService
public class ProductServiceImpl implements IProductService {@Overridepublic String buyProduct(Integer productId, Integer userId) {return "用户编号:   " + userId + "产品编码:   " + productId + "购买PHONE SUCCESS";}
}

启动类添加@EnableDiscoveryClient注解

package com.gblfy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ProductApplication {public static void main(String[] args) {SpringApplication.run(ProductApplication.class);}
}
3.5. 消费端编写

在Order-serv子模块的启动类上添加@EnableDiscoveryClient开启服务发现扫描

package com.gblfy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class OrderAppliaction {public static void main(String[] args) {SpringApplication.run(OrderAppliaction.class);}
}

创建一个客户端类发起请求OrderController分别向扣库存模块和产品模块发起请求

package com.gblfy.controller;import com.gblfy.product.api.IProductService;
import com.gblfy.stock.api.IStockService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OrderController {@DubboReferenceprivate IStockService stockService;@DubboReferenceprivate IProductService productService;@GetMapping("/order/create")public String createOrder(Integer productId, Integer userId) {//调用扣库存模块服务return stockService.reduce(productId, userId);}//http://127.0.0.1:8080/order/create?productId=2&userId=8@GetMapping("/buyProduct")public String buyProduct(Integer productId, Integer userId) {//调用产品模块服务return productService.buyProduct(productId, userId);}// http://127.0.0.1:8080/buyProduct?productId=2&userId=8
}
四、需求实战-配置编写
4.1. 扣库存服务端配置
# 应用端口
server:port: 8082# nacos服务发现配置
spring:cloud:nacos:server-addr: 127.0.0.1:8848discovery:service: stock-servapplication:name: stock-serv# Dubbo服务配置
dubbo:scan:base-packages: com.gblfy.service.implprotocol:name: dubboport: -1registry:address: spring-cloud://127.0.0.1
4.2. 产品服务端配置
server:port: 8081
spring:cloud:nacos:server-addr: 127.0.0.1:8848discovery:service: product-servapplication:name: product-serv# Dubbo服务配置
dubbo:scan:base-packages: com.gblfy.service.implprotocol:name: dubboport: -1registry:address: spring-cloud://127.0.0.1
4.3.消费端配置
server:port: 8080
spring:application:name: order-servcloud:nacos:discovery:server-addr: http://127.0.0.1:8848config:server-addr: http://127.0.0.1:8848# Dubbo服务配置
dubbo:protocol:name: dubboport: -1registry:address: spring-cloud://127.0.0.1cloud:subscribed-services:- stock-serv- product-serv
五、需求测试实战
5.1. 启动nacos

在这里插入图片描述
在这里插入图片描述

5.2. 启动服务端

分别依次启动扣库存服务端和产品服务端
在这里插入图片描述
在这里插入图片描述

5.3. 启消费端

在这里插入图片描述

5.4. 查看nacos

在这里插入图片描述

5.5. 项目模块分布结构

在这里插入图片描述

六、测试实战
6.1. 请求扣库存链路

http://127.0.0.1:8080/order/create?productId=2&userId=8
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2. 请求产品链路

http://127.0.0.1:8080/buyProduct?productId=2&userId=8

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.3. 常见的异常

没有服务的提供者,启动客户端
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

避开这2个误区,测试目标 KPI 不再难设

阿里妹导读&#xff1a;好的开始是成功的一半&#xff01;工作中&#xff0c;目标的设置是最不能马虎的事情。今天&#xff0c;我们请来孙阳&#xff08;阿里巴巴测试开发专家&#xff09;&#xff0c;他从11年入职至今已有8年。在测试技术目标的KPI设置上&#xff0c;他有一些…

程序员工作3年只涨2千,你不知道程序员有多难!

最近在职业论坛看到这样一个热门的帖子&#xff1a;工作3年&#xff0c;薪资涨了2k。大家都在吐槽公司的不公&#xff0c;却忽略了从另一个角度看待问题&#xff1a;是不是因为我们本身做的不够好&#xff1f;越来越发现&#xff0c;很多人之所以很久没有涨薪&#xff0c;是因为…

蚂蚁金服OceanBase挑战TPCC丨TPC-C基准测试之链路层优化

导语 在 TPC-C 标准定义中&#xff0c;测试系统分为 RTE&#xff08;Remote Terminal Emulator&#xff09;和 SUT 两部分。在实际的 TPC-C 测试流程中&#xff0c;不只是对 DB 端能力的考验&#xff0c;对链路中的所有组件都存在极大的资源消耗和压力。以这次 6088万 tpmC 测…

由于找不到msvcp140.dll无法继续执行代码

下载安装微软常用运行库合集即可解决 https://www.cr173.com/soft/106037.html

知己知彼,百战百胜!如何做好干系人管理

作者|章冀灶(晟远) 出品|阿里巴巴新零售淘系技术部 众所周知&#xff0c;高效的沟通是项目成败重要的影响因素。沟通在项目管理过程中扮演了极其重要的作用&#xff0c;而沟通对象又是完整的基于项目干系人&#xff0c;所以在项目管理过程中干系人管理就显得尤为重要&#xff…

彻底弄懂为什么不能把栈上分配的数组(字符串)作为返回值

背景 最近准备一个教程&#xff0c;案例的过程中准备了如下代码碎片&#xff0c;演示解析http scheme #include <stdio.h> #include <stdlib.h> #include <string.h>char *parse_scheme(const char *url) {char *p strstr(url,"://");return st…

健壮F.T.+新裸金属重磅发布!全新升级版ZStack加速新基建!

6月2日&#xff0c;以“健壮F.T.新裸金属 新基建下的新IaaS”为主题的2020年ZStack新品线上超级发布会引爆了企业级云市场。面向新基建发展契机&#xff0c;致力于普惠云计算的ZStack与英特尔、阿里云等伙伴强势携手发布2大重磅新品&#xff1a;首个采用了F.T.技术的ZStack Min…

使用datax同步cassandra数据

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台&#xff0c;实现各种异构数据源之间高效的数据同步功能。最近&#xff0c;阿里云cassandra团队为datax提供了cassandra读写插件&#xff0c;进一步丰富了datax支持的数据源&#xff0c;可以很方便实现cassandra之间以…

整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划

作者 | IronmanJay责编 | 王晓曼出品 | CSDN博客Docker 基础介绍下图为 Docker 图标&#xff08;是一个鲸鱼上面是集装箱&#xff09;。1、我们为什么要使用Docker当我们在工作中&#xff0c;一款产品从开发设计到上线运行&#xff0c;其中需要开发人员和运维工程师&#xff0c…

阿里巴巴的云原生与开发者

摘要&#xff1a;利用云原生技术构建应用简便快捷&#xff0c;部署应用轻松自如&#xff0c;运行应用按需伸缩。如今&#xff0c;云原生已经成为下一代技术发展的趋势。在 2019 杭州云栖大会开发者峰会上&#xff0c;阿里巴巴资深技术专家李响就为大家分享了阿里巴巴的云原生技…

(企业案例)使用Nacos持久化规则,改造sentinel-dashboard

文章目录一、前言1. 版本选取2. 克隆代码3. 导入 IDEA二、全局修改2.1. 修改 POM2.2. 修改配置文件三、后端代码修改3.1. 包结构部分3.2. nacos 配置文件四、创建规则与 Nacos 交互类4.1. 创建授权规则与 Nacos 交互类4.2. 创建降级规则与 Nacos 交互类4.3. 创建流控规则与 Nac…

如何基于 Nacos 和 Sentinel ,实现灰度路由和流量防护一体化

Nepxion Discovery框架在实现灰度发布和路由功能前提下&#xff0c;结合Nacos和Sentinel&#xff0c;对流量再实施一层防护措施&#xff0c;更能达到企业级的流量安全控制的目的。它的功能包括&#xff1a; 封装远程配置中心和本地规则文件的读取逻辑&#xff0c;即优先读取远…

神操作!一行Python代码搞定一款游戏?给力!

来源&#xff1a;pypl编程榜一直以来Python长期霸占编程语言排行榜前三位&#xff0c;其简洁&#xff0c;功能强大的特性使越来越多的小伙伴开始学习Python 。甚至K12的同学都开始学习Python 编程。新手入门的时候趣味性其实最重要的。那么一行Python 代码到底能玩出什么花样&a…

详解阿里云数据中台,一篇文章全面了解大数据“网红”

一直想写一篇关于数据中台正面文章&#xff0c;现在有闲时做些总结&#xff0c;想充分诠释一下DT内部人如何看待数据中台。 数据中台的概念是最早由阿里巴巴首次提出&#xff0c;是为了应对内部众多业务部门千变万化的数据需求和高速时效性的要求而成长起来的&#xff0c;它既要…

云原生时代,蚂蚁金服公开了新的金融混合云架构

蚂蚁金服在过去十五年重塑支付改变生活&#xff0c;为全球超过十二亿人提供服务&#xff0c;这些背后离不开技术的支撑。在 2019 杭州云栖大会上&#xff0c;蚂蚁金服将十五年来的技术沉淀&#xff0c;以及面向未来的金融技术创新和参会者分享。我们将其中的优秀演讲整理成文并…

Python 薪资降温?不存在的

当你学习编程时&#xff0c;最先被困扰在哪一步&#xff1f;是不是很容易陷入在语法之类的细节而忽视基础概念&#xff1f;解决当前任务的最佳方法是什么&#xff1f;在多种编程语言之间来回切换&#xff0c;却感觉不到效率的提高&#xff1f;0 基础学习编程&#xff0c;最先入…

隐私与AI兼得,蚂蚁金服是如何做到的?

蚂蚁金服在过去十五年重塑支付改变生活&#xff0c;为全球超过十二亿人提供服务&#xff0c;这些背后离不开技术的支撑。在 2019 杭州云栖大会上&#xff0c;蚂蚁金服将十五年来的技术沉淀&#xff0c;以及面向未来的金融技术创新和参会者分享。我们将其中的优秀演讲整理成文并…

Nacos配置中心规范

文章目录一、版本选取和概念理解1. 版本选择2.Namespace3. 如何进行配置和服务的管理、隔离&#xff08;Group&#xff09;二、方案选取1. 命名空间创建2. Namespace实施方案三、nacos配置实战3.1. dev环境配置创建3.2. test环境配置创建四、代码coding实战4.1. 创建2项目4.2. …

干货|Flutter 原理与闲鱼深度实践

王康&#xff08;正物&#xff09;—— Flutter 官方成员 阿里巴巴技术专家&#xff0c;之前主要负责 Flutter 在闲鱼中的混合开发体系&#xff0c;目前重点关注 Flutter 深入度以及生态相关的工作。本文将分享三方面内容&#xff0c; Flutter 的原理、 Flutter 在闲鱼中的应用…

云计算,巨头们的背水一战

作者 | 马超责编 | 伍杏玲头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;最近国内各IT巨头技术布局都颇有看点&#xff0c;先是腾讯宣布将投入5000亿&#xff0c;用于新基建的进一步布局&#xff08;将重点投入云计算、人工智能、区块链…