国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網(wǎng)站下載到本地合肥seo按天收費

網(wǎng)站下載到本地,合肥seo按天收費,徐州營銷網(wǎng)站建設,wordpress主題設置文章目錄 一、搭建Nacos服務1、Nacos2、安裝Nacos3、Docker安裝Nacos 二、OpenFeign和Dubbo遠程調(diào)用Nacos的服務1、搭建SpringCloudAlibaba的開發(fā)環(huán)境1.1 構(gòu)建微服務聚合父工程1.2 創(chuàng)建子模塊cloud-provider-payment80011.3 創(chuàng)建子模塊cloud-consumer-order80 2、遠程服務調(diào)用O…

文章目錄

  • 一、搭建Nacos服務
    • 1、Nacos
    • 2、安裝Nacos
    • 3、Docker安裝Nacos
  • 二、OpenFeign和Dubbo遠程調(diào)用Nacos的服務
    • 1、搭建SpringCloudAlibaba的開發(fā)環(huán)境
      • 1.1 構(gòu)建微服務聚合父工程
      • 1.2 創(chuàng)建子模塊cloud-provider-payment8001
      • 1.3 創(chuàng)建子模塊cloud-consumer-order80
    • 2、遠程服務調(diào)用OpenFeign
      • 2.1 Dubbo和OpenFeign的區(qū)別
      • 2.2 創(chuàng)建子模塊cloud-consumer-openfeign-order80
      • 2.3 OpenFeign實現(xiàn)服務降級
    • 3、遠程服務調(diào)用Dubbo
      • 3.1 創(chuàng)建接口服務工程cloud-service-api
      • 3.2 創(chuàng)建支付生產(chǎn)者工程cloud-dubbo-provider-payment8001
      • 3.3創(chuàng)建消費者cloud-dubbo-consumer-order80
      • 3.4 Dubbo實現(xiàn)服務降級
  • 總結(jié)

一、搭建Nacos服務

1、Nacos

  1. Nacos是阿里巴巴開源的服務注冊中心以及配置中心,致力于給開發(fā)者提供一款便捷、簡單上手的開源框架。
    Nacos包含了SpringCloud的注冊中心Eureka、服務配置Config、服務總線Bus。
  2. Nacos提供四大功能,分別是服務發(fā)現(xiàn)和服務健康監(jiān)測、動態(tài)配置服務、動態(tài)DNS服務、服務及其元數(shù)據(jù)管理。
    1)服務發(fā)現(xiàn)和服務健康監(jiān)測
    Nacos使服務更容易注冊,并通過DNS或HTTP接口發(fā)現(xiàn)其他服務,Nacos還提供服務的實時健康檢查,以防止向不健康的主機或服務實例發(fā)送請求。
    2)動態(tài)配置服務
    動態(tài)配置服務允許在所有環(huán)境中以集中和動態(tài)的方式管理所有服務的配置。Nacos消除了在更新配置時重新部署應用程序,這使得配置的更改更加高效和靈活。
    3)動態(tài)DNS服務
    Nacos提供基于DNS協(xié)議的服務發(fā)現(xiàn)能力,旨在支持異構(gòu)語言的服務發(fā)現(xiàn),支持將注冊在Nacos上的服務以域名的方式暴露端點,讓第三方應用方便查閱及發(fā)現(xiàn)。
    4)服務及其元數(shù)據(jù)管理
    Nacos能讓你從微服務平臺建設的視覺去管理數(shù)據(jù)中心的所有服務及元數(shù)據(jù),包括管理服務的描述、生命周期、服務的靜態(tài)依賴分析、服務的健康狀態(tài)、服務的流量管理、路由及安全策略。

2、安裝Nacos

  1. 在官網(wǎng)下載Linux的Nacos安裝包:https://github.com/alibaba/nacos/releases
  2. 通過mobax將安裝包上傳到虛擬機的/opt目錄下
  3. 解壓到/usr/local目錄下:tar -zxvf nacos-server-2.2.3.tar.gz -C /usr/local
  4. 需要在虛擬機上配置JDK8以上的環(huán)境:https://blog.csdn.net/weixin_49076273/article/details/126636650
  5. 進入到nacos的bin目錄下,啟動單機模式的nacos服務器:sh startup.sh -m standalone
  6. 在瀏覽器訪問:http://192.168.126.32:8848/nacos/
    在這里插入圖片描述

3、Docker安裝Nacos

  1. 安裝Docker:https://blog.csdn.net/weixin_49076273/article/details/126532188

  2. 使用Docker拉取鏡像:docker pull nacos/nacos-server:v2.2.0

  3. 單機版部署:docker run --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone -e NACOS_SERVER_IP=192.168.126.32 nacos/nacos-server:v2.2.0

  4. 在瀏覽器訪問:http://192.168.126.32:8848/nacos/
    在這里插入圖片描述帳號密碼都是nacos

    使用docker容器搭建nacos,如果是nacos2.x需要把9848,9849這兩個端口開放出來即可,這樣就可以使用IDEA連接上Nacos。如果是1.x則直接使用8848端口即可

二、OpenFeign和Dubbo遠程調(diào)用Nacos的服務

1、搭建SpringCloudAlibaba的開發(fā)環(huán)境

1.1 構(gòu)建微服務聚合父工程

  1. 創(chuàng)建父工程springcloudalibaba
    在這里插入圖片描述

  2. 配置注解生效激活
    在這里插入圖片描述

  3. Java編譯版本選擇
    在這里插入圖片描述

  4. 父工程的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"><modelVersion>4.0.0</modelVersion><groupId>com.zzx</groupId><artifactId>springcloudalibaba</artifactId><version>1.0-SNAPSHOT</version><!-- 統(tǒng)一管理jar包版本 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><spring-cloud.version>2021.0.0</spring-cloud.version><spring-boot.version>2.6.3</spring-boot.version></properties><!-- 子模塊繼承之后,提供作用:鎖定版本+子modlue不用寫groupId和version  --><dependencyManagement><dependencies><!--spring boot 2.6.3--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 2021.0.0--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>
    
  5. IDEA開啟Dashboard
    1)修改配置文件.idea/workspace.xml
    2)添加如下配置

     <component name="RunDashboard"><option name="ruleStates"><list><RuleState><option name="name" value="ConfigurationTypeDashboardGroupingRule" /></RuleState><RuleState><option name="name" value="StatusDashboardGroupingRule" /></RuleState></list></option><option name="configurationTypes"><set><option value="SpringBootApplicationConfigurationType" /></set>
    </option>
    </component>
    
  6. 刪除src目錄

1.2 創(chuàng)建子模塊cloud-provider-payment8001

  1. 在父工程下,右鍵創(chuàng)建子模塊cloud-provider-payment8001
    在這里插入圖片描述

  2. 在cloud-provider-payment8001的POM文件中添加如下依賴

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
    </dependencies>
    
  3. 創(chuàng)建cloud-provider-payment8001的主啟動類

    package com.zzx;import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** 主啟動類*/// 注解開啟注冊發(fā)現(xiàn)服務功能
    @EnableDiscoveryClient
    @SpringBootApplication
    @Slf4j
    public class PaymentMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentMain8001.class,args);log.info("******  PaymentMain8001 啟動成功   ******");}
    }
  4. 在cloud-provider-payment8001的com.zzx.controller包下,創(chuàng)建PaymentController

    package com.zzx.controller;import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;/*** 支付控制層*/
    @RestController
    @RequestMapping("payment")
    public class PaymentController {@GetMapping("index")public String index(){return "payment success";}
    }
    
  5. 在cloud-provider-payment8001的resources中,創(chuàng)建application.yml文件

    server:port: 8001
    spring:application:name: payment-providercloud:nacos:discovery:# Nacos服務的地址server-addr: 192.168.126.32:8848
    
  6. 啟動payment8001項目后,在Nacos中的服務管理的服務列表中會出現(xiàn)該服務
    在這里插入圖片描述

1.3 創(chuàng)建子模塊cloud-consumer-order80

  1. 在父工程下,右鍵創(chuàng)建子模塊cloud-consumer-order80
    在這里插入圖片描述

  2. 在cloud-consumer-order80的POM文件中添加如下依賴

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
    </dependencies>
    
  3. 創(chuàng)建cloud-consumer-order80的主啟動類

    package com.zzx;import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** 主啟動類*/// 注解開啟注冊發(fā)現(xiàn)服務功能
    @EnableDiscoveryClient
    @SpringBootApplication
    @Slf4j
    public class OrderMain80 {public static void main(String[] args) {SpringApplication.run(OrderMain80.class,args);log.info("******  OrderMain80 啟動成功   ******");}
    }
  4. 在cloud-consumer-order80的resources中,創(chuàng)建application.yml文件

    server:port: 80
    spring:application:name: order-consumercloud:nacos:discovery:# Nacos服務的地址server-addr: 192.168.126.32:8848
    
  5. 啟動order80項目后,在Nacos中的服務管理的服務列表中會出現(xiàn)該服務
    在這里插入圖片描述

2、遠程服務調(diào)用OpenFeign

2.1 Dubbo和OpenFeign的區(qū)別

  1. Apache Dubbo是一款微服務開發(fā)框架,他提供了RPC通信與微服務治理兩大關(guān)鍵能力。這意味著使用Dubbo開發(fā)的微服務,將具備相互之間的遠程發(fā)現(xiàn)和通信能力,同時利用Dubbo提供的豐富服務治理能力,可以實現(xiàn)諸如服務發(fā)現(xiàn)、負載均衡、流量調(diào)控等服務治理訴求。
  2. SpringCloud的通信采用OpenFeign組件。Feign基于Http傳輸協(xié)議,底層實現(xiàn)是Rest。從OSI7層模型上來看Rest屬于應用層。
    OpenFeign在高并發(fā)場景下性能不夠理想,成為性能瓶頸。
    使用場景:并發(fā)不高,性能要求也不高
  3. Dubbo框架的通信協(xié)議采用RPC協(xié)議,屬于傳輸層協(xié)議,性能上自然比rest高。提升了交互的性能,保持了長連接,高性能。
    Dubbo性能更好,比如支持異步調(diào)用、Netty性能更好。
    使用場景:數(shù)據(jù)小,并發(fā)高

2.2 創(chuàng)建子模塊cloud-consumer-openfeign-order80

  1. 在父工程下,右鍵創(chuàng)建子模塊cloud-consumer-openfeign-order80
    在這里插入圖片描述

  2. 在cloud-consumer-openfeign-order80的POM文件中添加如下依賴

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- 引入openfeign依賴包 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- 引入負載均衡器依賴包 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
    </dependencies>
    
  3. 創(chuàng)建cloud-consumer-openfeign-order80的主啟動類

    package com.zzx;import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.openfeign.EnableFeignClients;/*** 主啟動類*/// 注解開啟注冊發(fā)現(xiàn)服務功能
    @EnableDiscoveryClient
    // 開啟feign掃描
    @EnableFeignClients
    @SpringBootApplication
    @Slf4j
    public class OrderOpenFeignMain80 {public static void main(String[] args) {SpringApplication.run(OrderOpenFeignMain80.class,args);log.info("******  OrderOpenFeignMain80 啟動成功   ******");}
    }
  4. 在cloud-consumer-openfeign-order80的com.zzx.service包中,創(chuàng)建IPaymentFeignService接口

    package com.zzx.service;import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.stereotype.Service;
    import org.springframework.web.bind.annotation.GetMapping;/*** OpenFeign遠程調(diào)用*/
    @Service
    @FeignClient(value = "payment-provider")
    public interface IPaymentFeignService {@GetMapping("/payment/index")String index();
    }
  5. 在cloud-consumer-openfeign-order80的com.zzx.controller包中,創(chuàng)建OrderController

    package com.zzx.controller;import com.zzx.service.IPaymentFeignService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;/*** 訂單微服務*/
    @RestController
    @RequestMapping("order")
    public class OrderController {@Autowiredprivate IPaymentFeignService iPaymentFeignService;/*** 測試OpenFeign* @return*/@GetMapping("index")public String index(){return iPaymentFeignService.index();}
    }
  6. 在cloud-consumer-openfeign-order80的resources中,創(chuàng)建application.yml文件

    server:port: 80
    spring:application:name: order-consumer-openfeigncloud:nacos:discovery:# Nacos服務的地址server-addr: 192.168.126.32:8848
    
  7. 啟動openfeign-order80項目后,在Nacos中的服務管理的服務列表中會出現(xiàn)該服務
    在這里插入圖片描述

  8. 在瀏覽器上測試使用OpenFeign進行遠程服務調(diào)用,輸入:http://localhost/order/index
    此時返回payment success即調(diào)用成功

2.3 OpenFeign實現(xiàn)服務降級

  1. 在cloud-consumer-openfeign-order80的POM文件中,引入服務降級的依賴

    <!-- 引入服務降級依賴包 -->
    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    
  2. 在cloud-consumer-openfeign-order80的resources下的application.yml文件中,添加如下配置開啟openfeign對sentinel的支持

    feign:sentinel:enabled: true
    
  3. 在cloud-provider-payment8001的PaymentController中添加如下超時方法

    @GetMapping("timeout")
    public String timeout(){try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {throw new RuntimeException(e);}return "payment success";
    }
    
  4. 在cloud-consumer-openfeign-order80的OrderController中添加如下超時方法

    @GetMapping("timeout")
    public String timeout(){return iPaymentFeignService.timeout();
    }
    
  5. 在cloud-consumer-openfeign-order80的IPaymentFeignService中添加如下超時方法

    @GetMapping("/payment/timeout")
    String timeout();
    
  6. 在瀏覽器上測試使用OpenFeign進行遠程服務調(diào)用,輸入:http://localhost/order/timeout
    此時返回報500錯誤,控制臺顯示讀取超時
    在這里插入圖片描述

  7. 實現(xiàn)服務降級的回調(diào)方法

  1. 需要在cloud-consumer-openfeign-order80的IPaymentFeignService接口中指定服務降級回調(diào)類

    @FeignClient(value = "payment-provider",fallback = PaymentServiceFallback.class)
    

    2)在cloud-consumer-openfeign-order80的com.zzx.fallback包下,創(chuàng)建PaymentServiceFallback服務降級回調(diào)類

    package com.zzx.fallback;import com.zzx.service.IPaymentFeignService;
    import org.springframework.stereotype.Component;@Component
    public class PaymentServiceFallback implements IPaymentFeignService {@Overridepublic String index() {return null;}/*** 服務降級方法* @return*/@Overridepublic String timeout() {return "系統(tǒng)繁忙,請稍后再試";}
    }
  1. 在瀏覽器訪問:http://localhost/order/timeout
    此時會進行服務降級,回調(diào)服務降級類對應的方法
    在這里插入圖片描述

3、遠程服務調(diào)用Dubbo

3.1 創(chuàng)建接口服務工程cloud-service-api

  1. 在父工程下,右鍵創(chuàng)建子模塊cloud-service-api
    在這里插入圖片描述

  2. 創(chuàng)建一個公共支付接口

    package com.zzx.service;/*** 支付接口*/
    public interface IPaymentService {String index();
    }
    

3.2 創(chuàng)建支付生產(chǎn)者工程cloud-dubbo-provider-payment8001

  1. 在父工程下,右鍵創(chuàng)建子模塊cloud-dubbo-provider-payment8001
    在這里插入圖片描述

  2. 在cloud-dubbo-provider-payment8001的POM文件中,添加如下依賴

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.zzx</groupId><artifactId>cloud-service-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2021.0.1.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>
    </dependencies>
    
  3. 在cloud-dubbo-provider-payment8001中創(chuàng)建主啟動類PaymentDubboMain8001

    package com.zzx;import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** 主啟動類*/
    @SpringBootApplication
    @Slf4j
    @EnableDiscoveryClient
    public class PaymentDubboMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentDubboMain8001.class,args);log.info("********** PaymentDubboMain8001 啟動成功  ***********");}
    }
  4. 在cloud-dubbo-provider-payment8001的resources中,創(chuàng)建application.yml,添加如下配置

    server:port: 8001
    spring:main:allow-bean-definition-overriding: trueallow-circular-references: trueapplication:# 應用名name: payment-provider-dubbocloud:nacos:discovery:# Nacos服務地址server-addr: 192.168.126.32:8848
    # dubbo配置
    dubbo:# dubbo 服務實現(xiàn)類掃描包scan:base-packages: com.zzx.serviceregistry:# 注冊地址address: nacos://192.168.126.32:8848timeout: 10000# Dubbo服務暴露協(xié)議的配置protocol:name: dubbo# port為協(xié)議端口,(-1表示自增端口,從20880開始)port: -1
    
  5. 在cloud-dubbo-provider-payment8001中,創(chuàng)建支付業(yè)務層PaymentServiceImpl

    package com.zzx.service.impl;import com.zzx.service.IPaymentService;
    import org.apache.dubbo.config.annotation.DubboService;
    import org.apache.dubbo.config.annotation.Method;/*** 支付業(yè)務層*/
    //以下是只將index方法注冊到dubbo中
    @DubboService(timeout = 5000,methods = {@Method(name="index",retries = 2)})
    public class PaymentServiceImpl implements IPaymentService {@Overridepublic String index() {return "dubbo payment";}
    }
  6. 啟動該服務后,查看該服務是否在Nacos中注冊
    在這里插入圖片描述

3.3創(chuàng)建消費者cloud-dubbo-consumer-order80

  1. 在父工程下,右鍵創(chuàng)建子模塊cloud-dubbo-consumer-order80在這里插入圖片描述

  2. 在cloud-dubbo-consumer-order80的POM文件中,添加如下依賴

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>com.zzx</groupId><artifactId>cloud-service-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-dubbo</artifactId><version>2021.0.1.0</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency></dependencies>
    
  3. 創(chuàng)建cloud-dubbo-consumer-order80的主啟動類

    package com.zzx;import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
    @Slf4j
    @EnableDiscoveryClient
    public class OrderDubboMain80 {public static void main(String[] args) {SpringApplication.run(OrderDubboMain80.class,args);log.info("*******  OrderDubboMain80 啟動成功  ******");}
    }
  4. 在cloud-dubbo-consumer-order80的resources中,創(chuàng)建application.yml配置文件,添加如下配置

    server:port: 80
    spring:main:allow-circular-references: true#在 Spring Boot 2.1 以及更高的版本增加該設定,因為 Spring Boot 默認調(diào)整了 Bean 定義覆蓋行為。allow-bean-definition-overriding: trueapplication:#應用名字name: order-consumer-dubbocloud:nacos:discovery:#Nacos地址server-addr: 192.168.126.32:8848#dubbo配置
    dubbo:cloud:#dubbo.cloud.subscribed-services:表示要訂閱服務的服務名,可以配置'*',代表訂閱所有服務,不推薦使用。若需訂閱多應用,使用 "," 分割。subscribed-services: "*"registry:# 注冊至Nacosaddress: nacos://192.168.126.32:8848# 超時時間timeout: 10000protocol:# 協(xié)議Dubboname: dubbo# 端口號port: -1consumer:check: false
  5. 在cloud-dubbo-consumer-order80中創(chuàng)建訂單業(yè)務層OrderService

    package com.zzx.service;import org.apache.dubbo.config.annotation.DubboReference;
    import org.springframework.stereotype.Service;/*** 訂單業(yè)務層*/
    @Service
    public class OrderService {//支付服務遠程調(diào)用@DubboReferenceprivate IPaymentService iPaymentService;public String index(){return iPaymentService.index();}
    }
  6. 在cloud-dubbo-consumer-order80中創(chuàng)建訂單控制層OrderController

    package com.zzx.controller;import com.zzx.service.OrderService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;/*** 訂單控制層*/
    @RestController
    @RequestMapping("/order")
    public class OrderController {@Autowiredprivate OrderService orderService;/*** 測試Dubbo遠程調(diào)用服務* @return*/@GetMapping("/index")public String index(){return orderService.index();}
    }
  7. 啟動該服務后,在瀏覽器訪問:http://localhost/order/index
    在這里插入圖片描述

3.4 Dubbo實現(xiàn)服務降級

  1. 在cloud-dubbo-provider-payment8001的PaymentServiceImpl實現(xiàn)類中,設置服務生產(chǎn)者集群容錯模式cluster

    @DubboService(timeout = 5000,methods = {@Method(name="index",retries = 2)},cluster = "failfast")
    

    1)Failfast Cluster模式:這種模式稱為快速失敗模式,調(diào)用只執(zhí)行一次,失敗則立即報錯。
    2)Failsafe Cluster模式:失敗安全模式,如果調(diào)用失敗, 則直接忽略失敗的調(diào)用,而是要記錄下失敗的調(diào)用到日志文件。
    3)Failback Cluster模式:失敗自動恢復,后臺記錄失敗請求,定時重發(fā)。通常用于消息通知操作。
    4)Forking Cluster模式:并行調(diào)用多個服務器,只要一個成功即返回。通常用于實時性要求較高的讀操作,但需要浪費更多服務資源。
    5)Broadcast Cluster模式:配置值為broadcast。廣播調(diào)用所有提供者,逐個調(diào)用,任意一臺報錯則報錯(2.1.0開始支持)。通常用于通知所有提供者更新緩存或日志等本地資源信息。

  2. 在cloud-dubbo-consumer-order80中,創(chuàng)建服務降級的回調(diào)類PaymentServiceFallback

    package com.zzx.service.fallback;import com.zzx.service.IPaymentService;/*** 支付服務降級處理*/
    public class PaymentServiceFallback implements IPaymentService {@Overridepublic String index() {return "服務繁忙,請稍后再試!";}
    }
  3. 在cloud-dubbo-consumer-order80的OrderService中,在DubboReference注解中添加一個mock指定回調(diào)類

    @DubboReference(mock = "com.zzx.service.fallback.PaymentServiceFallback")
    
  4. 先將dubbo的生產(chǎn)者跟消費者啟動,然后關(guān)閉生產(chǎn)者,再訪問:http://localhost/order/index
    在這里插入圖片描述
    即配置了訪問服務生產(chǎn)者失敗后,立刻調(diào)用服務降級類的對應方法。

總結(jié)

  1. 在高并發(fā)場景下使用Dubbo,因為Dubbo長連接,如果不是高并發(fā)會浪費資源;低并發(fā)或者性能要求不高使用OpenFeign,因為OpenFeign不是長連接并且便于使用。
http://aloenet.com.cn/news/42454.html

相關(guān)文章:

  • 網(wǎng)站推廣渠道seo專業(yè)培訓班
  • 重慶做網(wǎng)站的網(wǎng)絡公司域名注冊好了怎么弄網(wǎng)站
  • 哪個網(wǎng)站可以做水果銷售代理免費seo快速排名工具
  • 有什么網(wǎng)站做熱圖代寫文章價格表
  • 做感恩網(wǎng)站的圖片廣州網(wǎng)頁seo排名
  • 一臺vps兩個wordpress網(wǎng)站營銷型網(wǎng)站建設套餐
  • 寧波網(wǎng)站建設設計公司信息上海百度公司總部
  • 建網(wǎng)站買空間seo高端培訓
  • 做視頻網(wǎng)站的備案要求優(yōu)化服務是什么意思
  • 成都品牌網(wǎng)站建設域名注冊萬網(wǎng)
  • 坪山網(wǎng)站開發(fā)軟件外包公司有前途嗎
  • 中央最新指示停止核酸檢測東莞seo軟件
  • 很長的網(wǎng)站域名怎么做短注冊安全工程師
  • 電子商務是電商嗎seo服務商
  • 個人網(wǎng)站建設收費標準營銷策略有哪幾種
  • 做外匯看的網(wǎng)站谷歌seo公司
  • 長春建站平臺靜態(tài)網(wǎng)站模板
  • 上海網(wǎng)站建設升級開發(fā)做一個網(wǎng)站需要多少錢
  • 上門做指甲哪個網(wǎng)站百度seo工作室
  • dw做網(wǎng)站一般設為什么樣浙江網(wǎng)站建設制作
  • 國外網(wǎng)站怎么上合肥seo管理
  • 經(jīng)過開發(fā)建設 網(wǎng)站上線了長尾關(guān)鍵詞排名工具
  • 網(wǎng)站建設以推廣外貿(mào)seo推廣
  • 做網(wǎng)站只用php不用html溫州seo
  • 給朋友做網(wǎng)站警察開找西安競價托管
  • 浙江建設職業(yè)繼續(xù)教育學院網(wǎng)站如何搭建網(wǎng)站平臺
  • 大學生兼職網(wǎng)站開發(fā)畢設論文上海服務政策調(diào)整
  • 個人做短視頻網(wǎng)站東莞百度seo
  • 手機如何做微商城網(wǎng)站成都推廣系統(tǒng)
  • 網(wǎng)站設置了刷新限制關(guān)鍵詞代發(fā)排名首頁