Spring Cloud Alibaba【OpenFeign实现服务降级、Dubbo实现服务生产者、 Dubbo消费者调用接口 】(三)

news2024/11/28 14:35:13

目录

服务调用_OpenFeign实现服务降级

服务调用_Dubbo实现服务生产者 

服务调用_Dubbo消费者调用接口 


服务调用_OpenFeign实现服务降级

引入降级依赖 

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

开启openfeign对sentinel支持

feign:
 sentinel:
   enabled: true
 client:
   config:
     default:
        # ⽹络连接阶段1秒超时 7
       connectTimeout: 1000
        # 服务请求响应阶段2秒超时
       readTimeout: 2000

编写降级类

@Component
public class PaymentServiceFallback implements PaymentService {
    @Override
    public String index() {
        return "系统繁忙请稍后再试一试~~~~";
   }
}

设置降级

/**
* 支付远程调用类
*/
@Service
@FeignClient(value = "provider-payment",fallback = PaymentServiceFallback.class)
public interface PaymentService {
    @GetMapping("/payment/index")
    String index();
}

测试

关闭服务生产者服务请求http://localhost:80/order/index

服务调用_Dubbo实现服务生产者 

创建接口服务工程cloud-service-api 

创建公共支付接口 

public interface IPaymentService {
   String index();
}

创建支付生产者工程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.tong</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>
        </dependency>
    </dependencies>

编写主启动类

@EnableDiscoveryClient
@SpringBootApplication
@Slf4j
public class ProviderDubboMain8001 {
    public static void main(String[] args) {
        SpringApplication.run(ProviderDubboMain8001.class,args);
        log.info("**************ProviderDubboMain8001 *********");
   }
}

编写配置文件YML

server:
 port: 8001
spring:
 main:
   allow-bean-definition-overriding: true
 application:
   name: provider-dubbo-payment
 cloud:
   nacos:
     discovery:
       server-addr: 192.168.66.101:8848
#dubbo配置
dubbo:
 scan:
   base-packages: com.tong.service
 registry:
   address: nacos://192.168.66.101:8848
   timeout: 10000
 protocol:
   name: dubbo
   port: -1

支付接口实现 

@DubboService(timeout = 5000,version = "1.0",methods = {@Method(name = "index",retries = 2)})
public class PaymentServiceImpl implements IPaymentService {
    @Override
    public String index() {
        return "hello dubbo payment";
   }
}

测试

启动支付生产者服务

服务调用_Dubbo消费者调用接口 

创建订单服务消费者工程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>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.tong</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>
    </dependencies>

编写主启动类

@EnableDiscoveryClient
@SpringBootApplication
@Slf4j
public class OrderConsumerDubboMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderConsumerDubboMain80.class, args);
        log.info("**************OrderConsumerDubboMain80 *********");
   }
}

编写配置文件YML

server:
 port: 80
spring:
 main:
   allow-circular-references: true
    #在 Spring Boot 2.1 以及更高的版本增加该设定,因为 Spring Boot 默认调整了 Bean 定义覆盖行为。
   allow-bean-definition-overriding: true
 application:
    #应用名字
   name: consumer-dubbo-order
 cloud:
   nacos:
     discovery:
        #Nacos地址
       server-addr: 192.168.66.101:8848
#dubbo配置
dubbo:
 cloud:
    #dubbo.cloud.subscribed-services:表示要订阅服务的服务名,可以配置'*',代表订阅所有服务,不推荐使用。若需订阅多应用,使用 "," 分割。
   subscribed-services: "*"
 registry:
    # 注册至Nacos
   address: nacos://192.168.66.101:8848
    # 超时时间
   timeout: 10000
 protocol:
    # 协议Dubbo
   name: dubbo
    # 端口号
   port: -1
 consumer:
   check: false

实现接口调用

@Service
public class PaymentServiceImpl {
    @DubboReference(version = "1.0")
    IPaymentService iPaymentService;
   
     public String index() {
        return iPaymentService.index();
   }
}

注意: @Reference 的包路径,不要导错包。

编写订单控制层 

@RestController
@RequestMapping("order")
public class OrderController {
    @Autowired
    private PaymentServiceImpl paymentService;
    @GetMapping("index")
    public String index(){
        String index = paymentService.index();
        System.out.println(index);
        return index;
   }
}

测试 请求http://localhost:80/order/index

 Spring Cloud Alibaba简介

 什么是Spring Cloud Alibaba

Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。 此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

 为什么要推出SpringCloud Alibaba呢?

 问题: 但近几年来呢,许多的微服务组件已经闭源或者已经停止维护了 。

SpringCloudAlibaba 微服务组件内容与功能对比

Spring Cloud Alibaba是阿里巴巴结合自身的微服务实践开源的微服务全家桶。

 SpringCloud 和 Spring Cloud Alibaba的功能对比

 更换组件后微服务架构图

 1.Spring Cloud Alibaba提供_____解决方案。微服务开发的一站式

 2. 为什么要推出SpringCloud Alibaba____。已经闭源或者已经停止维护

Spring Cloud Alibaba版本与兼容性 

 https://github.com/alibaba/spring-cloud-alibaba/wiki/ 版本说明

 Spring Cloud维护主线版本

 Spring Cloud Alibaba维护主线版本

 组件版本关系

下表为按时间顺序发布的 Spring Cloud Alibaba 以及对应的适配 Spring Cloud 和 Spring Boot 版本关系(由于 Spring Cloud 版本 命名有调整,所以对应的 Spring Cloud Alibaba 版本号也做了对应变化) 

 SpringCloud与SpringBoot版本选型

https://github.com/alibaba/spring-cloud-alibaba/wiki/

 下表为按时间顺序发布的 Spring Cloud Alibaba 以及对应的适配 Spring Cloud 和 Spring Boot 版本关系(由于 Spring Cloud 版本 命名有调整,所以对应的 Spring Cloud Alibaba 版本号也做了对应 变化)

 1.通过查看____信息可以发现某个版本是Spring Cloud维护主线版本。GA

 2.Spring Cloud Hoxton.SR9版本对应SpringCloud Alibaba的版 本是__。2.2.6.RELEASE

 分布式服务治理_什么是Nacos

 Nacos是阿里巴巴开源的服务注册中心以及配置中心,致力于给开 发者提供一款便捷、简单上手的开源框架。

 为什么Nacos这么受欢迎

Nacos官方文档的介绍中有这么一句话,如下:

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范 式、云原生范式) 的服务基础设施。

 

 Eureka 、 Config 这两个组件相信大家都用过,有什么感受?

 Nacos主要提供以下四大功能

1、服务发现和服务健康测

Nacos 使服务更容易注册,并通过DNS或HTTP接口发现其他服务, Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。

2、动态配置服务

动态配置服务允许您在所有环境中以集中和动态的方式管理所有服 务的配置。Nacos消除了在更新配置时重 新部署应用程序, 这使配置的更改更加高效和灵活。

3、动态 DNS 服务

Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服 务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便查阅及发现。

4、服务及其元数据管理

Nacos能让您从微服务平台建设的视觉管理数据中心的所有服务及 元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、 服务的健康状态、服务的流量管理、路由及安全策略。

 Nacos名字由来

 1.Spring Cloud Alibaba中Nacos组件是___。服务注册中心以及配置中心

2. Spring Cloud Alibaba中Nacos组件干掉了Spring Cloud哪三 个组件,分别是____。

Eureka、Bus、Config

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

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

相关文章

基于 Nginx 实现一个灰度上线系统

目录 前言 原理 实现 项目版本准备 用 nginx 实现灰度 跑一个 nginx 服务 修改下配置文件 重新跑个 nginx 容器 实现流量控制的功能 流量染色 总结 前言 灰度系统可以将流量分成多份&#xff0c;一部分走新版本代码&#xff0c;一部分走老版本代码&#xff0c;从而降…

Java虚拟机——字节码指令简介

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字&#xff08;称为操作码&#xff09; 以及 跟随其后的零至多个代表此操作所需的参数&#xff08;称为操作数&#xff09;构成。大多数指令都不包括操作数&#xff0c;只有一个操作码&#xff0c;指令参数都存放…

ACL论文-系列2

文章目录 关系抽取——OD-RTE: A One-Stage Object Detection Framework for Relational Triple Extraction目标函数1——object 四个顶点概率目标函数2——span的概率总目标函数 Revisiting Relation Extraction in the era of Large Language ModelsCan NLI Provide Proper I…

TCP 协议简记 01 - TCP 包格式 连接管理

最近对 TCP 协议做了一次系统性的学习&#xff0c;种巨复杂的知识&#xff0c;只有系统性的总结归纳并且不断的实践才能够真正的掌握。后续会分为几篇文章来对 TCP 协议进行系统性的总结&#xff0c;帮助自己更好的理解 TCP 协议&#xff0c;也希望能够帮助到和我一样被 TCP 弄…

STM32MP157驱动开发——LED驱动(设备树)

文章目录 设备树驱动模型如何使用设备树写驱动程序设备树节点要与 platform_driver 能匹配设备树节点指定资源&#xff0c;platform_driver 获得资源 LED 模板驱动程序的改造&#xff1a;设备树驱动模型修改设备树&#xff0c;添加 led 设备节点修改 platform_driver 的源码编译…

【论文阅读】聚集多个启发式信号作为监督用于无监督作文自动评分

摘要 本文提出一个新的无监督的AES方法ULRA&#xff0c;它不需要真实的作文分数标签进行训练&#xff1b;ULRA的核心思想是使用多个启发式的质量信号作为伪标准答案&#xff0c;然后通过学习这些质量信号的聚合来训练神经自动评分模型。为了将这些不一致的质量信号聚合为一个统…

springboot 多数据源配置

1.引入相关pom文件 <!-- spring boot 启动 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><artifactId>log4j-api</artifactId&…

7.5Java EE——Bean的装配方式

一、基于XML的装配 两种基于XML的装配方式 在基于XML的装配就是读取XML配置文件中的信息完成依赖注入&#xff0c;Spring容器提供了两种基于XML的装配方式&#xff0c;属性setter方法注入和构造方法注入。下面分别对这两种装配方式进行介绍。 a.属性setter方法注入 属性sett…

Vuex 数据共享

文章目录 前言Vuex项目的创建state 配置项getters 配置项mutations 配置项actions 配置项 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 体现数据共享的概念 所有组件都可以使用那数据 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可…

时序数据库 TDengine 与金山云两大产品完成兼容互认证

万物互联时代&#xff0c;企业数字化转型和政企上云如火如荼。在云计算迎来重大发展机遇的同时&#xff0c;数据库在企业数字化转型中也扮演着重要的角色——随着业务量的激增&#xff0c;数据库的弹性扩容、容灾备份等需求逐渐显现&#xff0c;在此挑战下&#xff0c;时序数据…

前端学习记录~2023.7.17~CSS杂记 Day9

前言一、浮动1、使盒子浮动起来2、清除浮动3、清除浮动元素周围的盒子&#xff08;1&#xff09;clearfix 小技巧&#xff08;2&#xff09;使用 overflow&#xff08;3&#xff09;display: flow-root 二、定位1、定位有哪些2、top、bottom、left 和 right3、定位上下文4、介绍…

jupyter notebook更换虚拟环境(内核)

jupyter notebook更换虚拟环境&#xff08;内核&#xff09; 创建一个新的虚拟环境 # stk_env 虚拟环境的名字&#xff0c;任取。 conda create -n stkenv python3.9激活虚拟环境 conda activate stkenv安装ipykernel # 为该虚拟环境&#xff0c;安装内核。 conda install -c a…

rabbitmq模块启动报java.net.SocketException: socket closed的解决方法

问题 最近在接手一个项目时&#xff0c;使用的是spring-cloud微服务构架&#xff0c;mq消息消费模块是单独一个模块&#xff0c;但启动这个模块一直报如下错误&#xff1a; java.net.SocketException: socket closed 这个错误是这个模块注册不到nacos报的错&#xff0c;刚开…

FCOS 论文学习

1. 解决了什么问题&#xff1f; 之前的目标检测器如 RetinaNet、SSD、YOLOv3 都依赖于 anchors。基于 anchors 的检测器有如下三个缺点&#xff1a; 检测表现对于 anchors 的大小、宽高比和数量等超参数很敏感&#xff1b;即使精心设计了 anchors&#xff0c;但由于大小和宽高…

架构训练营学习笔记:4-2 存储架构模式之复制架构

高可用的关键指标 问题&#xff1a;分为故障跟灾难。不是有了多活架构就不在用复制架构 &#xff0c;还是之前的合适原则&#xff1a;多活架构的技术复杂度 跟成本都比复制架构高。 高可用的关键指标 恢复时间目标(RecoveryTimeObjective&#xff0c;RTO)指为避免在灾难发生后…

rabbitmq部署(docker方式)

前言&#xff1a;rabbitmq一旦有漏洞&#xff0c;版本升级麻烦&#xff0c;于是改为docker部署 环境&#xff1a;centos7 #停掉之前的服务 systemctl stop rabbitmq-server systemctl disable rabbitmq-server 查了官网&#xff0c;当前3.11.x 最高版本是3.11.19, 虽然3.12…

【开源分享】在线客服系统源代码-thinphp网站在线客服系统源码(附源码完整搭建教程)...

本文的核心是一个多国语言在线客服聊天系统源码。我们将在这里保持非常简单。 这是一款旧版本的PHP客服源码。 基于ThinkPHP5 workerman&#xff0c;整体架构比较老&#xff0c;PHP客服端以及界面等需要在php-fpm下运行&#xff0c;即时通讯websocket服务端需要命令行执行。 源…

N-gram模型学习

网上有很多比较细节比较复杂比较清晰的介绍&#xff0c;我这里就不再细细的描述了&#xff0c;之前看文献的时候看到了这个模型&#xff0c;脑子里又没有印象&#xff0c;结果发现是python的学习范畴。 总的来说&#xff0c;这是一种文字&#xff0c;甚至可以上升到符号关联性…

基于Python的工业图像异常检测基础技术详解

引言 博文字数7000&#xff0c;建议阅读时间20分钟。 这篇博客对当前几种典型的图像异常检测算法进行了比较&#xff0c;包括Kmeans、Kmeans以及大津法&#xff08;OTSU&#xff09;&#xff0c;并给出了相关的代码实现与测试方法。总结的比较结果如下表所示&#xff1a; 方…

cocosCreator 3.6以上接入腾迅Bugly 捕捉JS错误 Android

cocosCreator3.6以上接入Bugly上报其实很简单&#xff0c;不需要网上那么多弯弯绕&#xff0c;三须三步走。 1. 按照官网方式接入android的bugly 2. android端写一个Bugly上报管理类 3. 修改你工程目录下native\engine\common\Classes\目录下的Game.h, Game.cpp两个文件&…