日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 常見的異常

沒有服務的提供者,啟動客戶端

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的nacos集成dubbo实现远程服务调用多服务端2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。