dubbo简介及部分特性使用

Dubbo原理和机制详解(非常全面) 最全图文详解Dubbo的原理机制,彻底搞懂吃透Dubbo核心功能、Dubbo核心组件、Dubbo的架构设计、Dubbo调用流程等重要核心知识点,可以让我们更好地掌握和使用 Dubbo。。 阅读详情

dubbo官网

官网地址:https://cn.dubbo.apache.org/zh-cn/overview/home/
上面是官网地址,想找什么东西可以进去看看
在这里插入图片描述

什么是dubbo?

Dubbo是Alibaba内部使用的一个分布式服务治理框架,可以和spring无缝衔接。
有服务远程调用、服务自动注册与发现、负载均衡、集群容错等功能特性。
好多好多…

为什么使用dubbo?

为什么会有dubbo,先从架构演化说起。

架构演化

单体架构

开始时用户量很小,代码都写在一个项目里,部署在一个服务器上。
缺点:

  • 大家都维护一个项目,不能解耦,上线一起上,容易出问题。
  • 一个机器流量有限,性能不行。

优点:大家都在一个项目上开发,用户服务调用订单服务,直接调用即可,不需要远程调用。

在这里插入图片描述

单体架构部署到多个服务器

随着用户量增加,用nginx做负载均衡,将请求分发到某个服务器上。多个服务器处理客户端的请求,压力会小很多。

本质上依然是单体项目,依然不需要远程调用。
但是有Nginx做负载均衡,nginx需要维护个服务列表,根据负载均衡策略将请求分发到某个服务器上。
在这里插入图片描述

单体项目拆分成多个微服务,每个微服务部署到多个服务器。

随着用户量增加,服务器压力越来越大,需要将单体项目拆分成多个微服务项目,并部署到多个服务器。

  • 图片等学完了再补充

  • 这时候用户服务调用订单服务,就需要远程调用。

  • 每个微服务项目部署到多个服务器,需要负载均衡,将请求分发到某个服务器。

  • 每个微服务项目部署到多个服务器,某个服务器挂掉了,或者某个服务器新加入,负载均衡需要感知。(服务动态注册与发现)

  • 服务之间进行调用的时候,如果出现网络故障、或者服务故障导致
    调用失败,需要集群容错

这个时候dubbo就能满足需求。

dubbo整体架构

在这里插入图片描述
上述节点说明如下:

  • Provider 暴露服务的服务提供方
  • Consumer 调用远程服务的服务消费方
  • Registry 服务注册与发现的注册中心
  • Monitor 统计服务的调用次数和调用时间的监控中心
  • Container 服务运行容器

Springboot集成dubbo实例

参考:https://blog.youkuaiyun.com/ludkjava/article/details/134630024

dubbo部分特性的使用

这里的测试代码都是基于https://blog.youkuaiyun.com/ludkjava/article/details/134630024中的项目添加的代码。

服务注册与发现

注册中心的原理简介
  • 首先B服务启动时会向注册中心注册自己的服务;
  • 当A服务调用B服务的IAPIService接口时,A会从注册中心获取服务地址,并通过负-载均衡策略调用某个服务;
  • 注册中心通过心跳感知B服务集群中的某个服务上下线,并更新注册中心中的服务列表;
  • A服务不能每次都从注册中心获取服务列表,因此本地有缓存服务列表的机制;
  • A服务的本地服务列表要及时更新,通过pull、push两种方式实现,pull是主动轮询注册中心,push是注册中心通过长连接主动推送;
    在这里插入图片描述
dubbo注册中心

dubbo天然就支持服务注册与发现,官方建议使用zookeeper作为注册中心。
从dubbo2.7.x开始,支持的注册中心有很多

  • Consul
  • Etcd
  • Nacos
  • Sofa
  • Zookeeper
  • Eureka
  • Redis

注册中心是个解决方案,根据上面组件的某些特性,来实现注册中心这一解决方案。
上面的组件并不是注册中心,是可以用来实现注册中心。
如分布式锁也是个解决方案,不是中间件。

多注册中心支持

dubbo支持同一服务向多个注册中心注册服务,或者不同服务分别注册到多个注册中心,可以同时引用注册在不同注册中心上的同名服务。

理论上没必要支持多种服务注册中心,都是历史原因导致的,随着项目的迭代、升级,总会出现各种场景、各种问题。

如图所示,公司在早期快速发展的时候,因为业务的野蛮增长导致对基础平
台缺少规划,技术团队也没什么精力去做这些治理,就有可能出现不同的系
统或者技术团队会选择不同的注册中心来治理自己的服务。这种情况下,就
会出现跨注册中心的服务通信。

在这里插入图片描述

多注册中心注册

一个服务注册在多个注册中心,如IAPIService服务同时注册在zookeeper、nacos注册中心上。

pom.xml

在原来的基础上,加上nacos的依赖

<dependency>
   <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-registry-nacos</artifactId>
    <version>${dubbo.version}</version>
</dependency>
application.properties

将原来的单注册中心,改为多注册中心
原来:


#注册中心
dubbo.registry.address=zookeeper://localhost:2181

现在:同时支持zookeeper和nacos


#多注册中心,zookeeper、nacos
dubbo.registries.zk-registry.id=zk-registry
dubbo.registries.zk-registry.address=zookeeper://localhost:2181
dubbo.registries.zk-registry.use-as-config-center=false
dubbo.registries.zk-registry.use-as-metadata-center=false

dubbo.registries.nacos-registry.id=nacos-registry
dubbo.registries.nacos-registry.address=nacos://localhost:8848
dubbo.registries.nacos-registry.username=nacos
dubbo.registries.nacos-registry.password=nacos
dubbo.registries.nacos-registry.use-as-config-center=false
dubbo.registries.nacos-registry.use-as-metadata-center=false
被注册的服务类ProviderServiceImpl

在@DubboService注解中加入属性registry = {“zk-registry”,“nacos-registry”},表示该服务同时注册在zookeeper、nacos中。其中"zk-registry、nacos-registry分别是上面application.properties文件中对应的id:

  • dubbo.registries.zk-registry.id=zk-registry
  • dubbo.registries.nacos-registry.id=nacos-registry
package com.ludk.dubboprovider.service;

import com.ludk.service.IAPIService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

/**
 * @author ludengke
 * @title: ProviderServiceImpl
 * @projectName study
 * @description: TODO
 * @date 2023/11/2123:44
 */
@Component

@DubboService(interfaceClass = IAPIService.class,version = "2.6.0" ,timeout = 15000,registry = {"zk-registry","nacos-registry"})
public class ProviderServiceImpl implements IAPIService {
    @Override
    public String test(String from) {
        return "from"+from;
    }
}

消费端

消费端依然采用之前从zookeeper注册中心中获取服务,也可以参考服务端的形式。

测试

启动消费端,观察两个服务注册中心。可以发现IAPIService服务同时注册到两个注册中心上。

  • zookeeper

在这里插入图片描述

  • nacos
    在这里插入图片描述
不同服务使用不同注册中心

不同服务使用不同的注册中心,也就是在同一个dubbo应用中,多个不同的
接口注册到不同的注册中心。
比如,在一个系统里面,如果存在多个站点,比如国际站点和中文站点,那
么一个某些服务为国际站点设计,有些服务为中文站点设计,那这个时候就
可以使用不同注册中心来进行隔离。
在这里插入图片描述

清空zookeeper、nacos下的节点

清空注册中心的数据,方便看效果
在这里插入图片描述

在这里插入图片描述

api模块添加接口IAPI2Service
package com.ludk.service;

/**
 * @author ludengke
 * @title: IAP2Service
 * @projectName study
 * @description: TODO
 * @date 2023/12/314:03
 */
public interface IAPI2Service {
    String test2(String param);
}
provider模块添加实现类ProviderService2Impl

通过registry = {“nacos-registry”}配置指定注册中心为nacos

package com.ludk.dubboprovider.service;

import com.ludk.service.IAPI2Service;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

/**
 * @author ludengke
 * @title: ProviderService2Impl
 * @projectName study
 * @description: TODO
 * @date 2023/12/314:05
 */
@Component
@DubboService(interfaceClass = IAPI2Service.class,version = "2.6.0" ,timeout = 15000,registry = {"nacos-registry"})
public class ProviderService2Impl implements IAPI2Service {
    @Override
    public String test2(String param) {
        return param;
    }
}

修改provider模块的ProviderServiceImpl

通过registry = {“zk-registry”}指定注册中心为zookeeper

package com.ludk.dubboprovider.service;

import com.ludk.service.IAPIService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

/**
 * @author ludengke
 * @title: ProviderServiceImpl
 * @projectName study
 * @description: TODO
 * @date 2023/11/2123:44
 */
@Component
@DubboService(interfaceClass = IAPIService.class,version = "2.6.0" ,timeout = 15000,registry = {"zk-registry"})
public class ProviderServiceImpl implements IAPIService {
    @Override
    public String test(String from) {
        return "from"+from;
    }
}

测试

启动provider模块,查看两个注册中。

  • IAPIService注册在zookeeper注册中心上
    在这里插入图片描述
  • IAPI2Service注册在nacos注册中心上
    在这里插入图片描述
应用级服务注册与发现

Dubbo3以前,一直以来都是面向 RPC 方法去定义服务的,并且这也是 Dubbo 开发友好性、治理功能强的基础。

当然这种方式也带来了很多的不足,

  • 注册中心上存储的数据更多了,增加了数据推送压力。
  • 业内主流的微服务模型(Spring Cloud、Kubernetes Native Service),都是基于应用纬度的服务注册发现。如果Dubbo要拥抱云原生,就必然需要和这些模型对齐。

因此在Dubbo3开始,增加了应用级别的服务注册发现,默认情况下,服务端会自动开启接口级和应用级的双重注册,这也是为了兼容Dubbo2.x版本考虑。

但是如果生产者和消费者都升级到了Dubbo3,就建议开启应用级别的注册
以后关闭接口级的订阅。
可以通过下面这个配置来设置

# 双注册
dubbo.application.register-mode=all
# 仅应用级注册
dubbo.application.register-mode=instance

还可以通过注册中心地址上配置参数registry-type=service来显示指定该注
册中心为应用级服务发现的注册中心,带上此配置的注册中心将只进行应用
级服务发现

dubbo.registry.address="zookeeper://192.168.8.133:2181?registrytype=
service"

注意:服务端配置该注册中心为应用级服务发现的注册中心,服务端与消费端端下面两个配置需要为true。

  • 具体原因后面再研究
dubbo.registries.zk-registry.use-as-config-center=true
dubbo.registries.zk-registry.use-as-metadata-center=true

服务接口的版本支持

可以通过version这个属性设置接口或者方法的版本。

当我们在进行功能迭代,可能存在新的功能对老版本不兼容的时候,就可以通过版本号来过度。如果不需要区分版本号,可以使用version=“*”。

上面的代码有用到:

@DubboService(interfaceClass = IAPIService.class,version = "2.6.0" ,timeout = 15000,registry = {"zk-registry"})

启动检查

在Dubbo服务中,难免会出现循环依赖的情况,如下图所示。
在这里插入图片描述
而Dubbo在启动的时候,会默认去检查依赖的服务状态,并且建立通信连接。就会导致服务无法启动的问题。
Dubbo里面提供了一个check参数,可以通过这个参数来关闭启动检查。

这个参数可以修饰在三个层面:

  • @DubboReference ,直接关闭某个服务的启动检查
  • dubbo.consumer.check=false,关闭消费端所有服务的启动检查
  • dubbo.registry.check=false,关闭注册中心启动时检查

负载均衡

dubbo不想SpringCloud,需要引入ribbon、LoadBalancer组件来实现负载均衡,dubbo默认集成了负载均衡。

  • Random LoadBalance:权重随机算法,根据权重值进行随机负载
  • RoundRobin LoadBalance:加权轮询算法
  • ConsistentHash LoadBalance:一致性hash算法
  • LeastActive LoadBalance:最少活跃调用数算法
  • shortestresponse LoadBalance:最短响应时间负载均衡算法

用法:

    @DubboReference(version ="2.6.0" ,registry = {"zk-registry"},loadbalance = "roundrobin")

其他特性

其他特性可以参考官方文档:

  • 集群容错
  • 服务降级
  • 接口异步调用
  • 调用链路隐式传参
  • 调用信息记录
  • 多协议支持
  • 序列化
  • 请求参数校验
Web自动化神操作:如何用OpenCV 破解滑块验证码? 验证码作为一种安全机制,可以有效防止暴力破解密码、发帖、灌水、刷票等,大家在做 Web 自动化的时候应该有碰到验证码这个难题,一般我们可以和开发沟通请求他们的帮助:去掉验证码或者设置一个万能验证码,而如果开发不帮忙我们该如何去解决呢? 本篇文章以 Java 语言为例教你怎么破解验证码。 现在大多数网址会采用滑块验证码的方式,下面以腾讯的滑块验证码为例,先来看看破解的效果: 要破解滑块验证码,我们一般采取的思路如下: 获取滑块到背景缺口图的距离 通过 selenium 的 Actio 阅读详情

相关推荐

拆解汽车T-Box:从4G模块到MCU,手把手教你理解车联网的‘黑匣子’

本文深入拆解汽车T-Box,揭示其作为车联网‘黑匣子’的核心架构与工作原理。从4G模块、MCU主控到外设接口,详细解析各组件功能及协同机制,并通过实战案例展示故障诊断与性能优化技巧,帮助读者全面理解T-Box在智能汽车中的关键作用。

weixin_30955617的博客 492

Dubbo简介

一、简介 Dubbo官网为http://dubbo.apache.org/zh-cn/。该官网是Dubbo正式进入Apache开源孵化器后改的 Dubbo原官网为:http://dubbo.io 二、RPC RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术...

kevin 5844

用于可靠的钙钛矿薄膜瞬时光致发光模拟的拟合程序

简介 对光激发后的电荷载流子动态的研究对于确定太阳能电池的几个特性至关重要,例如,体和界面重组的数量以及向电荷传输层转移过程的速度。 瞬态光致发光(trPL)是用于研究这些特性的最流行的表征方法之一。 该实验是通过在样品上照射几纳秒的激光脉冲,并记录一段时间内的发光情况来进行的。辐射性重组的光生电荷载流子将引起太阳能电池的光子发射,而非辐射性重组的电荷载流子将不会对发光作出贡献。因此,可以测量到强度随时间递减的光致发光瞬态。(见图1表示trPL的测量和它的输出)。 图1. 一...

FluximAG的博客 2362

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 缺点:单一的系统架构,使得在开发过程中,占用的资源越来越多,而且随着流量的增加越来越难以维护 垂直应用框架(MVC) 垂直应用架构解决了单一应用架构所面临的扩容问题,流量能够分散到各个子系统当中,且

noaman_wgs的博客 51万+

工业激光器核心参数详解与选型实战:从理论到产线落地(五)

本文深入解析了脉冲激光加工的三大核心参数——脉宽、重复频率和脉冲能量的协同作用机制。通过公式推导和产线案例,揭示了参数设置对加工良率的关键影响:1. 脉宽决定热影响区大小,缩短脉宽可显著提升加工精度;2. 重复频率影响加工速度和热积累效应,需平衡效率与质量;3. 脉冲能量决定材料去除量,过大易导致加工缺陷。文中以ABS塑料打标、模具清洗和微孔钻孔为例,展示了参数优化如何将良率从65%提升至99%,并提供了不同应用场景的参数选型表和调试技巧,强调峰值功率比平均功率更具决定性作用。

weixin_44520581的博客 2421

从4A架构的角度出来 帮我分析一下:数字化转型深水区:企业架构如何成为价值重构的核心引擎?

4A 架构的本质是构建企业的数字神经系统,通过业务感知、数据传输、决策执行、技术支撑的闭环,实现从效率提升到生态重构的质变。正如华为通过该架构实现全球研发资源统一调度,某零售集团借此打造线上线下融合的新零售体系,当业务、数据、应用、技术四个维度形成共振时,企业将获得持续进化的数字免疫力,在不确定的市场环境中保持韧性生长。这一过程不仅需要技术工具的升级,更依赖组织文化的变革 —— 从 “部门墙” 到 “能力网” 的转型,才是数字化转型深水区的终极挑战。

金牌架构师 1044

dubbo 中文官网

https://dubbo.gitbooks.io/dubbo-user-book/content/demos/async-call.html

m0_54850825的博客 5359

通过傅里叶变换进行音频变声变调

在游戏或者一些特殊场景下为了提高娱乐性或者保护声音的特征,我们会对音频进行变声变调处理。

yang1fei2的博客 1815

dubbo中文官网地址

和大家分享一下:dubbo的中文官网迁移到了githup上地址:之前的不能用了。

m0_67394360的博客 2109

【即插即用模块】Transformer篇 | ICCV 2025 | MALA :注意力分布神似Softmax,告别线性注意力性能短板!

MALA(Magnitude-Aware Linear Attention)是一种改进的线性注意力机制,通过引入缩放因子和偏移项,解决了传统线性注意力忽视查询幅度的问题,使其分布更接近Softmax Attention。该模块具有线性复杂度(O(n)),结合RoPE和LEPE编码实现全局-局部位置信息混合,通过z值调制平衡信息权重。实验表明MALA在轻量级视觉任务中能有效平衡效率与精度,注意力可视化显示其分布与Softmax Attention高度相似。代码提供完整的RoPE位置编码和线性注意力

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1106

【Python爬虫教程】第3篇-解决使用reqeusts遇到的ProxyError异常

Python request代理错误提示“HTTPSConnectionPool, Cannot connect to proxy, no such file or directory”

分享技术,记录思考和感悟 1507

面试官:Dubbo是什么,他有什么特性?

面试官:Dubbo是什么,他有什么特性?

真正的大师永远怀着一颗学徒的心 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Dubbo 简介

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。Dubbo3 定义为面向云原生的下一代 RPC 服务框架。

DreamSun的博客 1407

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

DUBBO简介及使用

1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者

an_tao的专栏 863

Dubbo知识【高级特性】

dobbo的高级特性:超时与重试,启动检查,多版本,负载均衡,序列化,地址缓存,集群容错,服务降级

日常学习总结 2082

Dubbo部分常用特性

Dubbo部分特性

LMR1314的博客 736

Dubbo简介和配置

Dubbo一个高性能rpc框架,用于构建分布式微服务架构Dubbo具有高性能和低延迟的特点,适合于大规模的分布式系统。OpenFeign一个基于Java的声明式HTTP客户端框架可以与Spring Cloud等微服务框架无缝集成。

qq_52030824的博客 4934

dubbo高级特性介绍

首先是支持事务的,但与关系型数据库的事务有区别。

SevenCoding的博客 1020

【夯实Dubbo】Dubbo的核心特性

本文属于【夯实Dubbo】系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习 Dubbo 技术,希望能给读者带来一些干货。系列目录如下(可能随着写作的进行,会做一些调整): 【夯实Dubbo】什么是 RPC 框架? 【夯实Dubbo】Dubbo 的核心特性 【夯实Dubbo】Dubbo 架构和 zookeeper 注册中心的搭建和配置 【夯实Dubbo】Dubbo 和 Spring Boot...

3389

Dubbo高级特性

Dubbo框架提供了对服务调用结果进行缓存的特性,用于加速热门数据的访问速度,Dubbo 提供声明式缓存,以减少用户加缓存的工作量。为了使 Dubbo 能够识别你的自定义缓存工厂,你需要在 `META-INF/dubbo` 目录下创建一个文件,文件名为 `org.apache.dubbo.cache.CacheFactory`,并在文件中指定你的实现类。最后,你需要在 Dubbo 的配置文件中指定使用自定义的缓存工厂。这个接口定义了缓存的基本操作,如 `put`、`get` 和 `remove`。

qq_34922830的博客 889

精通Dubbo——Dubbo支持的协议的详解

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。dubbo协议缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。 连接个数:单连接 连接方式:长连接 传输协议

路漫漫,水迢迢 7万+

Dubbo详细介绍与安装使用过程

1 Dubbo介绍1.1 dubbox简介随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。 垂直应用架构 当访问量逐渐增大,单一应用

徐刘根的博客 19万+

Dubbo+Zookeeper使用

Dubbo+Zookeeper使用

小何的博客 4977

Dubbo的简介

转载:http://blog.youkuaiyun.com/ichsonx/article/details/39008519 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需

蓝天之枫 849

Dubbo部分高级特性

Failover Cluster:失败重试 失败自动切换:当我们在调用Dubbo服务时出现失败,容错策略会重试其它服务器 。一般用于幂等性操作,可以通过配置retries="?"设置重试次数。 Failfast Cluster:快速失败 当服务消费方调用服务提供者失败后,立即报错,也就是只调用一次。通常用于非幂等性的写操作。 Failsafe Cluster:安全失败 当服务消费者调用服务出现异常时,直接忽略异常。通常用于写入日志等操作。 Failback Cluster:失败自动恢复 服务消费端调用服务出

qq_45756124的博客 411
上一篇: springboot集成dubbo实例
下一篇: Windows 下Nacos安装启动
ludkjava
博客等级 码龄11年 173粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值