SpringCloud神兽(四)之Hystrix

SpringCloud五大神兽03-Hystrix断路器(豪猪) 1.简介 雪崩:在微服务架构中,假如某个微服务无法正常运行就会形成阻塞,导致调用这个微服务的其他所有微服务都会阻塞。到达某个时间节点,服务器的并发量会达到峰值,这样的话,后续其他请求即使访问的不是当前被阻塞的微服务也会无法正常访问。这种由于一个微服务异常导致整个微服务架构都无法工作的情况称为雪崩。 熔断:监听服务提供者方请求的并发量、访问失败率,只要并发量或者失败率达到一定阈值,服务消费者和提供者之间的请求就会断开,称为熔断。 降级:当发生熔断现象时,服务提供者就不会有任何响应,这样对服务消费者来说体验很 阅读详情
一. Hystrix断路器概述
分布式系统面临的问题

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。

服务雪崩

多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.

对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。

备注:一般情况对于服务依赖的保护主要有3中解决方案:

(1)**熔断模式:**这种模式主要是参考电路熔断,如果一条线路电压过高,保险丝会熔断,防止火灾。放到我们的系统中,如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

(2)**隔离模式:**这种模式就像对系统请求按类型划分成一个个小岛的一样,当某个小岛被火少光了,不会影响到其他的小岛。例如可以对不同类型的请求使用线程池来资源隔离,每种类型的请求互不影响,如果一种类型的请求线程资源耗尽,则对后续的该类型请求直接返回,不再调用后续资源。这种模式使用场景非常多,例如将一个服务拆开,对于重要的服务使用单独服务器来部署,再或者公司最近推广的多中心。

(3)**限流模式:**上述的熔断模式和隔离模式都属于出错后的容错处理机制,而限流模式则可以称为预防模式。限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。这种模式不能解决服务依赖的问题,只能解决系统整体资源分配问题,因为没有被限流的请求依然有可能造成雪崩效应。

什么是Hystrix

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

Hystrix能干嘛

①服务降级

备注:Hystrix服务降级,其实就是线程池中单个线程障处理,防止单个线程请求时间太长,导致资源长期被占有而得不到释放,从而导致线程池被快速占用完,导致服务崩溃。

Hystrix能解决如下问题:

1.请求超时降级,线程资源不足降级,降级之后可以返回自定义数据

2.线程池隔离降级,分布式服务可以针对不同的服务使用不同的线程池,从而互不影响

3.自动触发降级与恢复

4.实现请求缓存和请求合并

②服务熔断

备注:熔断模式:这种模式主要是参考电路熔断,如果一条线路电压过高,保险丝会熔断,防止火灾。放到我们的系统中,如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

③服务限流

备注:限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。这种模式不能解决服务依赖的问题,只能解决系统整体资源分配问题,因为没有被限流的请求依然有可能造成雪崩效应。

④接近实时的监控

二. 服务熔断
什么是服务熔断:

熔断机制是应对雪崩效应的一种微服务链路保护机制。

当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand。

服务熔断步骤

①参考microservicecloud-provider-dept-8001新建microservicecloud-provider-dept-hystrix-8004

②修改dept-hystrix-8004的pom.xml文件

 <!-- hystrix -->
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-hystrix</artifactId>
  </dependency>

③修改yml文件

server:
  port: 8004

mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文件所在路径

  #  type-aliases-package: com.wanbangee.springcloud.entities    # 所有Entity别名类所在包

  mapper-locations:
    - classpath:com/nhkj/springcloud/dao/*.xml                       # mapper映射文件

spring:
  application:
    name: microservicecloud-dept #非常重要 对外暴露的微服务名称
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包
    url: jdbc:mysql://localhost:3306/cloudDB01?characterEncoding=utf-8&useUnicode=true              # 数据库名称
    username: root
    password: a123456
    dbcp2:
      min-idle: 5                                           # 数据库连接池的最小维持连接数
      initial-size: 5                                       # 初始化连接数
      max-total: 5                                          # 最大连接数
      max-wait-millis: 200                                  # 等待连接获取的最大超时时间
eureka:
  client:     #客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://127.0.0.1:7001/eureka,http://127.0.0.1:7002/eureka,http://127.0.0.1:7002/eureka
  instance: 
    instance-id: microservicecloud-dept8004		#服务列表显示的名称
    prefer-ip-address: true
info: 
  app.name: wanbangee-microservicecloud4
  company.name: www.wanbangee.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$

④修改dept-hystrix-8004的Controller

@RequestMapping("dept")
@RestController
public class DeptController {
	@Autowired
	private DeptService service;
	

    //这个方法是用来对服务熔断后的响应信息的设置
    public List<Dept> hystrixHandler(){
        Dept dept = new Dept();
        dept.setDname("服务调用出错");
        List<Dept> depts = new ArrayList<>();
        depts.add(dept);
        return depts;
    }
	
    //一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法
    @HystrixCommand(fallbackMethod="hystrixHandler")
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public List<Dept> list() {
        System.out.println(1/0);		//运行时异常
        return this.service.findAll();
    }

⑤修改主启动类

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient	//服务发现
@EnableCircuitBreaker//对hystrixR熔断机制的支持
public class DeptProvider8004_App {
    public static void main(String[] args) {
        SpringApplication.run(DeptProvider8004_App.class, args);
    }
}

⑥测试

先启动eureka集群,再启动服务熔断主启动类,然后启动80服务

三. 服务降级
什么是服务降级:

整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。

服务降级处理是在客户端实现完成的,与服务端没有关系

服务降级步骤

①修改microservicecloud-api工程,根据已有的DeptClientService接口新建一个实现了FallbackFactory接口的类DeptClientServiceFallbackFactory

@Component
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
@Override
public DeptClientService create(Throwable throwable) {
	return new DeptClientService() {
		
		@Override
		public List<Dept> selectAllDept() {
			Dept dept = new Dept();
			dept.setDname("没有没有对应的信息,Consumer客户端提供的降级信息,此刻服务Provider已经关闭");
			dept.setDb_source("no DataSource");
			List<Dept> depts = new ArrayList<>();
			depts.add(dept);
			return depts;
		}
	};
}
}

②修改api工程的DeptClientService接口,在注解@FeignClient中添加fallbackFactory属性值

@FeignClient(value = "MICROSERVICECLOUD-DEPT",fallbackFactory=DeptClientServiceFallbackFactory.class)
public interface DeptClientService {
@RequestMapping("/dept/list")
public List<Dept> selectAllDept();
}

③对api工程执行mvn clean,mvn install

④修改dept-feign工程的yml文件

# 客户端允许对降级的服务使用FallbackFactory处理

feign: 
  hystrix: 
    enabled: true

⑤测试

​ 启动eureka集群,启动微服务dept-8001,启动dept-feign-81

正常访问测试:http://localhost:81/customer/dept/list

故意关闭微服务dept-8001

再次测试。此时服务端已经down了,但是我们做了服务降级处理,让客户端在服务端不可用时也会获得提示信息而不会挂起耗死服务器

四. 服务监控hystrixDashboard

除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面。

服务监控步骤

①新建工程microservicecloud-consumer-hystrix-dashboard

②修改pom.xml文件

<dependencies>
<!-- 自己定义的api -->

	<dependency>
		<groupId>com.nhkj.springcloud</groupId>
		<artifactId>microservicecloud-api</artifactId>
		<version>${project.version}</version>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<!-- 修改后立即生效,热部署 -->

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>springloaded</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
	</dependency>

	<!-- Ribbon相关 -->

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-ribbon</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>

	<!-- feign相关 -->

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-feign</artifactId>
	</dependency>

	<!-- hystrix和 hystrix-dashboard相关 -->

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
	</dependency>

</dependencies>

③修改yml文件

server: 
 port: 9001

④添加主启动类

@SpringBootApplication
@EnableHystrixDashboard
public class DeptConsumer_DashBoard_App {
    public static void main(String[] args) {
        SpringApplication.run(DeptConsumer_DashBoard_App.class, args);
    }
}

⑤所有provider微服务提供类(8001/8002/8003)都需要监控依赖配置

  <!-- actuator监控信息完善 -->
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>

⑥测试:

Xiaojie雷达之路---毫米波雷达基础知识---中频信号的相位 本篇文章主要介绍毫米波雷达的基础知识中的中频信号的相位 文章目录傅里叶变换的快速回顾中频信号的相位中频信号对物体微小位移的灵敏度如何2个chirps来对一个物体的速度进行测量测量一个振动的物体 傅里叶变换的快速回顾 傅里叶变换是将一个信号从时域中转换到频域中,在时域中的一个正弦信号将在频域中产生一个峰值,在大多数情况下,在频域中的一个信号是一个复数(每个值是一个振幅和相位的向量),表示为AejθAe^{j\theta}Aejθ 在频域中峰值的相位等于正弦函数的初始相位 中频信号的相位 上一篇文章中提到, 阅读详情

相关推荐

Frida实战:如何逆向分析某电商App的doCommandNative函数(附完整Hook脚本)

本文详细介绍了如何使用Frida逆向分析电商App中的doCommandNative函数,涵盖动态注册识别、SO加固对抗及高级Hook脚本编写等实战技巧。通过完整Hook脚本示例,帮助安全研究人员深入理解JNICLibrary的关键函数逆向分析方法,提升移动应用安全研究能力。

weixin_29327977的博客 615

springcloud 入门(4) Hystrix

HystrixHystrix介绍 Hystrix介绍

做一个有思想的技术人 682

JHU ICBM DTI Atlas纤维束模板介绍

JHU ICBM DTI atlas 纤维束的定位与功能介绍

machinelearning_er的博客 6426

4.Spring Cloud 熔断 Hystrix使用入门

微服务雪崩效应 服务与服务之间相互通信(调用),随着业务扩展,客户端访问的服务(A)可能会调用多个服务(A调用B,B调用C…),如果其中被调用的某个服务©由于挂掉或超时等各种原因,不能再提供服务,那么B服务将处于阻塞状态,随着请求的增多(A的调用,B的重试),容器的线程资源会消耗完毕,B服务也挂掉了,接下来服务A也会重复B的操作,A资源耗尽也被挂掉,最终整个服务都无法再访问。 概括的来说,服务提供者的不可用导致服务消费者不可用,并将不可用逐渐放大的过程。从百度又偷了张图。 Hystrix Hystrix也

u012708900的博客 316

PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)

该篇是学习使用PYNQ开发板,实际上是对ZYNQ PL端AXI_CDMA 核的应用。实验步骤参照官网的教程,一步一步地做,但是由于在硬件资源布置方面与官方教程稍有出入,所以在SDK的源码里也进行了修改。 AXI_CDMA特性: 如果是使用ZYNQ 7系列芯片(可能其他Xilinx也是通用的),xilinx的AXI_CDMA 核有两种传输模式:轮询(poll)和中断(...

YGLeeeon的博客 3521

高分六号WFV预处理详细步骤(辐射校正、大气校正、几何校正)

高分六号WFV传感器获得的影像的预处理分为两个步骤:辐射校正和大气校正,辐射校正为了消除传感器的自身误差,大气校正为了消除大气的折射误差。 一、辐射校正 按照红框中信息进行更改。 辐射校正前地物光谱反射率: 校正后的地物光谱曲线的变化: 二、大气校正 ENVI中大气校正一般采用Flaash模型,但是这个模型需要设置许多的参数十分的麻烦,所以采用ENVI商店(app store,这个也需要下载的)里的Flaash Easy To Use 这个插件,可以快速地进行大气校正。 大气校正后的地物反射率 这

qq_41828818的博客 1万+

Hystrix生产环境线程池自动扩容与缩容的动态资源分配经验

Hystrix线程池动态调整

huiGod的博客 5109

Flowise智能调度系统设计与实现

本文深入探讨Flowise平台的智能调度系统设计与实现,包括调度模型、调度策略、调度优化、调度应用等方面。通过详细的设计方案和实现策略,帮助开发者构建智能的调度系统。本文详细介绍了Flowise平台的智能调度系统设计与实现,包括调度模型、调度策略、调度优化、调度应用等方面。通过详细的设计方案和实现策略,帮助开发者构建智能的调度系统。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1017

五、SpringCloud五大神兽之Hystrix

    Netflix的创造了一个调用的库Hystrix实现了断路器图案。在微服务架构中,通常有多层服务调用。 图1.微服务图 较低级别的服务中的服务故障可能导致用户级联故障。当对特定服务的呼叫达到一定阈值时(Hystrix中的默认值为5秒内的20次故障),电路打开,不进行通话。在错误和开路的情况下,开发人员可以提供后备。 图2. Hystrix回退防止级联故障 开放式电路会停止级...

Heaven丶的博客 1250

RT-DETR 模型剪枝优化:结构化剪枝对 R18/R50 性能的影响

本文提出分层结构化剪枝策略R18:参数量减少 42%(28M→16.2M),推理速度提升 35%(15→20.3 FPS@Jetson Nano),mAP@0.5 仅降 1.2%;R50:参数量减少 55%(170M→76.5M),推理速度提升 48%(42→62.2 FPS@T4),mAP@0.5 仅降 2.1%。核心价值:为 RT-DETR 提供“精度-效率-部署”平衡的轻量化方案,推动其在边缘设备、工业质检等场景的大规模落地。部署建议。

走向CTO的路上... 464

Codex 100个真实案例 - 用AI做股票K线分析工具(技术指标全自动)

本案例将用 Codex 从零搭建一个完整的股票 K 线分析工具。通过自然语言驱动,我们让 AI 自动完成股票数据获取(akshare)、K 线图绘制(mplfinance + ECharts)、技术指标计算(MA/EMA/MACD/RSI/KDJ/布林带)、买卖信号提示(金叉/死叉、超买超卖)、多股对比分析、Web 可视化界面(Flask + ECharts)、PDF 报告生成以及定时监控邮件推送等全套功能。全程用自然语言指令驱动 Codex,零手写代码实现专业级量化分析平台!

yueyeguzhuo的专栏 870

springcloud五大神兽之Hystrix介绍

① Hystrix是什么? Hystrix,英文意思是豪猪,全身是刺,刺是一种保护机制。Hystrix也是Netflix公司的一款组件。 ② Hystrix可以做什么? 实现服务熔断降级处理,保护微服务,防止雪崩效应发生。 ③ 雪崩效应 当单个服务出现问题,调用这个服务的请求就出现线程阻塞,此时若有大量的请求涌入,容器的线程资源就会被消耗完毕导致服务瘫痪。 1.微服务中,一个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路。 2.如果某服务出现异常,请求阻塞,用户得不到响应,容器中线程不会释放,于是

weixin_37957131的博客 313

《QT+PCL》点云的点选与框选

【代码】《QT+PCL》点云的点选与框选。

阁楼 3602

SpringCloud分布式开发五大神兽

SpringCloud分布式开发五大神兽 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config Eureka   一个RESTful服务,用来定位运行在AWS地区(Reg

javaxuexi123的博客 2709

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

springCloud五大神兽(思维导图)

SpringCloud的五大件 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config 1 基于Eureka(服务注册中心)的服务治理 Eureka它主要包括两个组件:Eureka Server 和 Eureka Client ...

Violet 1204

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringCloud的基本组件 五大神兽 SpringCloud和dubbo的区别

SpringCloud的基本认识 常用组件及解决的问题 SpringCloud是一系列主流框架的集合。是基于springBoot。 spring没有重复造轮子,将成熟的技术框架,组合起来封装。 springCloud基于springboot的开发便利性,实现了分布式系统基础设施的开发。 springCloud5大神兽:服务注册与发现 eureka,负载均衡ribbon feign,断路器 hystrix,网关 zuul,gateway,配置中心 config。还有消息总线,链路监控等。 服务网关:为微服务集

zwb的博客 567

SpringCloud核心组件概述(五大神兽)

(1)服务注册中心Eureka? (2)配置中心Config? (3)负载均衡器Ribbon和feign? (4)路由网关Zuul? (5)断路器Hystrix?

qq_41889508的博客 4万+

初识Spring Cloud 之 五大神兽

一览无遗初识Spring Cloud 之 五大神兽一、简介二、我所了解的五大神兽三、我所理解的五大神兽①、Spring Cloud Eureka(注册中心)原理图解代码步骤代码实现②、Spring Cloud Ribbon(客户端负载均衡)什么是Ribbon?代码步骤代码实现③、Spring Cloud Hystrix(熔断器)雪崩机制详解熔断器状态机有3个状态:熔断器的核心:线程隔离和服务降级。代码实现④、Spring Cloud Feign (伪装)概念特性代码实现⑤、Spring Cloud Gate

weixin_43811261的博客 1111

springcloud以及四大神兽面试涉及知识总结(持续更新)

什么是微服务? eureka是什么? eureka与zookeeper的区别? ribbon是什么? feign是什么? hystrix的熔断机制? hystrix的服务降级? zuul是什么?有什么用? springcloud配置中心是什么?有什么用?

qq_36252295的博客 257

SpringCloud五大神兽快速入门

它使编写Web服务客户端变得更容易。框架的发展起到一定的推广的作用,但是相比较于SpringCloud而言,dubbo由于易用性上和对程序员的要求都比Spring Cloud要高一些,因此目前很多互联网公司在做微服务组件开发的时候一般还是使用。Hystrix是一个延迟和容错库,旨在隔离对远程系统,服务和第三方库的访问点,停止级联故障,并在复杂的分布式系统中实现弹性,在这些系统中,故障是不可避免的。伴随着互联网的发展,人们对这种微服务的开发的呼声越来越大,在互联网的萌芽了两款重量级的SOA治理框架阿里巴巴。

pingguocu3的博客 720
上一篇: 解决“org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成”
下一篇: SpringCloud神兽(五)之Zuul
胖头鱼小子
博客等级 码龄6年 10粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值