金融级云原生探索实践系列 - 开篇

K8S学习之基础一:k8s基本介绍 1、k8s基本介绍 2、k8s架构 3、k8s组件 4、k8s资源 4、k8s功能 阅读详情
由蚂蚁金服主办的 SOFAStack Cloud Native Workshop 将在 6月24日于 KubeCon + CloudNativeCon + Open Source Summit China 大会的同场活动中进行,欢迎报名参与,更多信息可点击“阅读原文”进行查看。 
欢迎加入 SOFA 钉钉互动群(钉钉搜索群号):23195297

640?wx_fmt=png

本文作者:蚂蚁金服 卿祤、 首仁

| 楔子

为支撑业务高速发展并积极拥抱主流技术,蚂蚁金服从 2017 年开始探索并构建以Kubernetes 为核心的云原生应用 PaaS 平台。在 2018 年,已在网商银行顺利落地了 K8S 容器引擎,并顺利支撑了 2018 年双十一。2019 年伊始,国泰产险作为互金行业的典型代表,正基于 SOFAStack [1] 容器应用服务和监控分析产品探索云原生架构转型。时至今日,已完成了关键业务 SOFABoot [2] 应用的容器化改造,在开发、测试乃至灰度生产环境践行云原生的运维实践。

这是一系列技术分享文章的开端,基于在实际金融机构和场景中落地的云原生产品项目经验,我们希望和大家一起分享从中获得的洞察和总结,探讨产品观点、技术实现,并非常期待大家的建议和指点,欢迎一起交流共创。

| 云原生容器产品的金融机构落地挑战

从去年开始,云原生、Kubernetes、容器这些关键字逐渐从社区走向金融科技圈,越来越多的金融机构客户开始向我们咨询,云原生技术是什么,能够给企业带来什么价值,对现有业务有什么影响?落地的路径可能会是哪些?

我们的观点是,金融场景下的云原生,绝对不止是 12Factors [3],亦不止是 CNCF TOC 所定义的 5 大件 [4],我们不仅要提供标准、通过一致性认证的 Kubernetes 产品,还需要满足更多金融场景需求,创造实际业务价值。

经过很长一段时间的产品研发实践、深挖内外容器平台落地诉求,金融客户的关注点可能包括但不限于以下几点:

  • 业务采用了云原生能否节省资源,提升工程效率?

  • 发现问题后如何做到快速止损,甚至线上零故障?

  • 如何在云原生下做到业务同城双活甚至异地多活的高可用容灾能力?

  • 能否和现有业务能无缝集成,如何做平滑升级?

  • 采用了云原生平台能否保证和现有云上一致的安全性?

  • 云原生能否支撑大规模分布式系统的架构?

  • ...

而基于以上实际场景下的落地挑战,我们对自身容器平台产品的设计和实施,提出了以下六大关键价值主张。

| 云原生容器产品的价值主张

一 使用 Immutable Infrastructure 的思想进行设计

在 PaaS 平台中,核心是应用。在之前的经典运维体系中,要对应用打一个全量快照不是件容易的事情,但在云原生世界中,会方便许多。从描述流量接入层的 Service 到描述应用配置和代码包的 Pod template,这些已是 kubernetes 的标准 Resources。

为了解决应用管理需求,我们定义了一个 CafeAppService 对象,用于整体描述上述内容,并通过 Revision 对象属性作版本控制(和 Knative 中的 Revision 类似)。用户每次的修改都是一个 Revision,发布一个应用本质上是发布该应用的一个 Revision,故可做到快速的弹性扩缩容,并且可以方便回滚到之前发布成功过的 Revision。相比之前基于包的经典发布运维体系,效率有极大提升。

640?wx_fmt=png
图一 容器应用服务与版本

二 可审计和无损应用发布的能力

发布变更是 PaaS 平台提供的重要能力。对于金融客户来说,每次发布必须要有据可查,而且要保证安全无损。这里,我们将蚂蚁的安全生产理念融入其中,在产品层面上提供“可灰度,可回滚(应急),可监控”的能力。

为了做到上述能力,我们提供了发布单的概念,并定义了一个原生的 CRD:CafeDeployment。接下来逐一介绍。

发布单

主要两个用途:做应用发布的审查记录,用于统计分析,故障复盘回顾等;协调多个应用的发布顺序,这是由于金融业务对系统的可靠性要求高,尤其在涉及资金的主链路,另外,不少系统由于业务原因,存在依赖关系,必须做有序发布。

CafeDeployment

在这里只做简单介绍,后续会有专题介绍。该 CRD 拥有三种能力:

  • 原地升级(InplaceSet):升级过程中 Pod 的 IP 保持不变,可和经典的运维监控体系做无缝集成。

  • 替换升级(ReplicaSet):和社区版本的 ReplicaSet 能力保持一致。

  • 有状态应用(StatefulSet):和社区版本的 StatefulSet 能力保持一致。

除此之外,相比社区的 deployment,还具备 beta 验证,自定义分组策略,分组暂停,引流验证(配合 ServiceMesh)的能力。

640?wx_fmt=png
图二 CafeDeployment 图示

三 具有高可用容灾能力的工作负载

金融业由于监管的要求对系统可用性和容灾能力具有很高的要求。从应用的生命周期来看,最主要有两个状态:发布态 和 运行态。

对于发布态,由于存在 Pod 上下线的过程,线上有抖动不可避免,要做的是尽可能的降低抖动幅度以及降低系统报错率。kubernetes 的 deployment 在发布一个 pod 时,pod 里容器的 kill 和对应 endpoint 的销毁是异步的,这就意味着可能出现 pod 里应用容器已经 kill 了,但仍然会有流量打到该 Pod,导致出现报错,甚至故障。为了防止这种情况,我们采用 finalizer 的机制,保证在南北流量和东西流量(7 层协议)都切断的情况下才对 Pod 进行更新。

同时,还通过 CafeDeployment 里的灰度发布策略,保证发布态时线上系统的水位不会过低,防止出现流量过载,造成系统异常。

对于运行态,要考虑以下几个方面:Pod 异常退出后的重新上线,Node 故障后的 Pod 的迁移,机房级故障后系统仍然可用。对于第一点,Kubernetes 本身已经有了较好的机制;第二点,我们做了增强,使用自定义的 NodeLifecycle Controller 结合更加详细的监控信息来判断Node是否出现故障,然后做 Pod 迁移;第三点,从 Scheduler 方面进行保障,CafeDeployment 可以定义相应的高可用拓扑结构,以同城双活为例,在创建 Pod 时,调度器会根据定义好的拓扑信息尽量将 Pod 均分到不同的可用区,达到同城双活的状态。

四 一致的验证授权体验

蚂蚁金服 PaaS 平台在近 4 年的时间里,已经有了一套完整的 IAM 体系,并且许多客户已经基于此定义了许多的角色,用做安全防护。我们从两方面来提供一致性的体验:

首先,在产品上的操作上提供和原先一样的验证授权机制。只要客户将 K8S 内预先定义好的角色或者权限分配相应的用户或用户组,那该用户或者属于该用户组的用户就能在产品上做相应的操作。

其次,IAM 的权限和角色与 Kubernetes 的 RBAC 做映射。根据用户在 IAM 所具备的角色,在 Kubernetes 集群中创建相应的 ClusterRole,并生成访问 Kubernetes 集群的 token,创建 ClusterRoleBinding 与 token 绑定。这样用户使用 kubectl 操作集群时也可以具备相同的权限,保证权限的一致性。

五 经典到云原生的过渡能力

目前互金行业的应用的运行时绝大部分仍然以虚拟机为主,并且以传统的应用包方式进行部署和日常升级运维。对于向云原生的转型一定不是一蹴而就的,会有过渡期,在这段时间内,就面临着需要同时在经典与云原生下两种模式下同时做运维管理。

针对这种场景,APaaS 平台提供以下能力帮助客户解决痛点。

第一,支持经典与云原生的互访,拉齐两种模式的基础网络、应用层流量和接入层流量。在基础网络层面,采用VPC  Router 或者 ENI 方式,在几乎没有额外网络开销的前提下保证虚拟机和 Pod 可以互通;在应用层,虚拟机和Pod可以使用同一套中间件做服务注册与发现,并且可以相互调用;在接入层,虚拟机可通过 loadbalancer 类型的 Service 访问后端的 Pod,甚至不在 VPC 内的 on permise 应用也可通过公网类型 loadbalancer Service 访问到 Pod。

640?wx_fmt=png
图三 经典与云原生的互访

第二,提供两种模式的混合发布能力。可以同时对经典虚拟机模式和云原生模式的应用进行发布运维,保持体验一致性。

第三,采用原地升级方式(InplaceSet)进行发布的云原生应用可和经典监控系统无缝对接,接入原有的监控与报警体系。直到所有应用做完云原生改造后,再迁移到云原生生态中主流的 metrics 监控体系。

六 支撑跨集群发布运维的能力

这是一个高阶话题,需要结合具体的业务场景来看。从实践经验来看,这会是一个架构演进路线:一开始采用一个集群管理多个可用区,在碰到容量瓶颈或者需要异地多活场景时,再开始考虑进行集群划分,采用多集群方式。以网商银行的业务为例,首先采取同城双活,然后到两地三中心,最后演进到现在的异地多活单元化架构。

在云原生架构下,我们需要解决两个问题。

第一,在架构演进过程中,如何保证上层接入产品少感知甚至不感知集群数量的变化。这类上层产品(比如发布运维、资源管理等),我们称为一方产品,通常具有“上帝”视角,需要获取到集群中的所有资源信息,当集群从一个演进到多个后,还需要能够分别出资源属于不同的集群,并作出相应的处理。我们从以下方面解决该问题。

  • 定义一个模型来标明资源所属的集群,并且该模型需要和现有模型建立联系,以便集群扩展后做准确路由。

  • 提供一个统一接入层来路由对不同集群的访问。

  • 一方产品使用该模型和统一接入层来访问集群。

第二,在演进到多集群之后,如何提供跨集群资源的统一视图。这点参考社区Federation对象的设计,需要将不同集群里的资源状态进行同步,之说以没有直接采取社区Federation方案,首先社区这块目前还是alpha版本,还不成熟,另外,我们定义的模型和涉及到的业务场景很复杂。这部分内容正在建设中,后续将继续更新。

| 展望

金融级云原生之路才刚刚开始,将沉淀多年的技术积累与云原生紧密结合并开放给整个行业,是一个持续探索的过程。本文仅做是一个概览性介绍,其中的每一块内容都可作为一个专题来深度讲述,后面会持续更新,和大家分享我们最佳实践,欢迎关注。

文章涉及相关链接

[1] SOFAStack:

https://www.sofastack.tech/

[2] SOFABoot:

https://www.sofastack.tech/sofa-boot/docs/Home

[3] 12Factors:

https://12factor.net/zh_cn/

[4] 5 大件(CNCF 云原生定义):

https://github.com/cncf/toc/blob/master/DEFINITION.md

| 关于我们

随着蚂蚁金融科技开放战略和国际化的业务背景,时至今日蚂蚁金服SOFAStack 已经服务了许多家国内外金融机构作分布式架构技术转型升级,过程中也逐渐打磨和丰富了大规模运维监控产品体系,即金融分布式架构-云应用引擎(SOFAStack-CAFE,  Scalable Open Financial Architecture - Cloud Application Fabric Engine),其中容器应用服务(AKS, Application Kubernetes Service) 则是基于 K8S 打造的核心容器服务产品,致力于满足机房级高可用、安全、弹性、可观测性、发布变更管控策略等方面的要求,并力求降低复杂新兴技术带来的门槛和应用风险。

最后打个广告,欢迎加入 SOFAStack 产品研发团队,共建金融级云原生产品!目前产品经理、架构师 、前后端研发和质量等多个岗位开放招聘中,简历请投递:ranger.yrj@antfin.com 。

640?wx_fmt=png

金融级IT架构-数字银行的云原生架构解析 最近断断续续花了差不多2到3周的时间阅读完由电子工业出版社出版的《金融级IT架构:数字银行的云原生架构解密》的这本书,作者是作者是网商银行技术编委会。 本书契合了当前银行业分布式架构转型趋势,内容是经过实践检验的领先技术介绍了网商银行IT技术架构演进路线,涵盖了分布式、单元化、弹性混合云、云原生多个基础架构领域,同时介绍了技术风险、安全可信、业务架构等多方面的技术实践经验。 对于这本书实际很早搜索云原生相关书籍的时候就搜索到,但是一看标题是金融IT架构方面的因此没有引起太多的重视,后面由华章... 阅读详情

相关推荐

蚂蚁金服金融级容器引擎实践之路

小蚂蚁说: 在金融级分布式架构中使用容器,许多企业的开发者都面临许多挑战。在2018年ATEC蚂蚁金服技术探索大会上,蚂蚁金服高级技术专家盛延敏在演讲中分析了容器与云原生技术的本质,为容器在分布式架构上的使用带来了实用高效的解决方案。 关于蚂蚁金服科技开放其他的技术产品,你还可以参考阅读: 《独家 | 蚂蚁金服TRaaS技术风险防控平台解密》; 《深度|蚂蚁金服分布式金融核心套件:金融核心...

阿里云云栖号 2308

【岗位又增了】蚂蚁金服云原生团队招聘~欢迎加入我们

蚂蚁金服核心技术团队又招人啦~期待你的加入。蚂蚁金服中间件团队 - 消息系统研发工程师/专家base:杭州 / 北京蚂蚁金服数据中间件团队 - 研发工程师/专家base:杭州 / 北京 / 成都蚂蚁金服数据中间件团队 - 数据传输系统研发工程师/专家base:杭州 / 北京 / 成都蚂蚁金服 PaaS 团队 - 研发技术专家/研发工程师/产品经理base:上海 / 杭州蚂蚁金服应用网络团队 - 网...

金融级分布式架构 1564

Robocup 仿真2D 学习笔记(二) 球队代码编译和上场

环境的一些问题 最近在使用rcssserver 和 rcssmonitor时可能会遇到./configure失败的问题,可以检查一下文件夹是否有makefile文件,如果是编译后的包直接sudo make install,如果还不行,还可以源码下载编译 rcssserver: https://sourceforge.net/projects/sserver/files/rcssserver/...

markchalse的博客 6014

云原生架构-阿里白皮书

“业务代码指实现业务逻辑的代码; “三方软件”是业务代码中依赖的所有三方库,包括业务库和基础库; “处理非功能性的代码”指实现高可用、安全、可观测性等非功能性能力的代码。 敏捷、弹性、可移植性Kubernetes的控制平面包含四个主要的组件:APlServer、Controller、Scheduler以及etcd。 设计历理念:声明式API、可扩展性架构、可移植性 布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。 Dapr(Distributed Application Runtime ,分布式应用

潇峰的博客 3568

MacBook用户必看:用Homebrew一键搞定frp内网穿透(含阿里云配置模板)

本文为MacBook用户提供基于Homebrew的frp内网穿透实战指南,详细介绍了从环境准备到阿里云服务器配置的全过程。通过Homebrew一键安装frp客户端,结合阿里云配置模板,实现高效稳定的内网穿透,适用于远程开发、IoT设备调试等多种场景。

weixin_28692817的博客 321

HDLBits答案汇总

前言 该博客为本人做HDLBits习题时的心得记录总结,欢迎大家一起交流进步。 HDLBits网站链接 Verilog Language Basics Vectors Modules:Hierarchy Procedures More Verilog Features Circuits Combinational Logic Basic gates Multiplexers Arithmetic Circuits Karnaugh Map to Circuit Sequential Logic Latche

谦豫 9万+

什么是云原生架构?云原生和应用上云不是一码事!

你知道的越多,不知道的就越多,业余的像一棵小草!成功路上并不拥挤,因为坚持的人不多。编辑:业余草blog.youkuaiyun.com/gavinchen1985推荐:https://www.xttb...

xmt1139057136的专栏 6537

大语言模型在构建UNSPSC 分类数据中的应用

UNSPSC 是联合国标准产品和服务代码。本文研究如何利用大语言模型生成分类系统的分析

姚家湾博客 1865

总结:云原生架构理解

一、 为什么需要云原生架构? 企业内部 IT 建设如果都基于最底层 IDC 设施独自向上构建,都需要单独分配硬件资源,这就造成资源被大量占用且难以被共享。 但是上云之后,由于云厂商提供了统一的 IaaS 能力和云服务,大幅提升了企业 IaaS 层的复用程度,使资源、产品可被不断复用,从而能够进一步降低企业运营成本。 二、 云原生架构定义 应用的开发人员不用在其代码中处理节点宕机前如何把本地保存的内容同步到远端(云存储,如对象存储,文件存储,块存储等)的问题,也不用处理当业务峰值到来时如何对存储节点进

w2009211777的专栏 1万+

王珊数据库系统概论第5版视频教材

目录 隐藏 说明:本课程共包括1种电子书、84个高清视频(共68课时)、1种纸质书(赠品)。 网授课程 王珊《数据库系统概论》(第5版)网授精讲班【共68课时】 序号 名称 课时 1 第1章 绪 论(1) 00:32:25 2 第1章 绪 论(2) 00:17:03 3 第1章 绪 论(3) 00:50:19 4 第1章 绪 论(4) 00:20:37 5 第1章 绪 论(5) 00:24:47 6 第2章 关系数据库(1) 00:47:23 7 第2章 关系数据库(2) 00:14:48 8 第2章 关系

mrtaoy96的博客 1147

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 394

阿里云刘伟光:2万字解读金融级云原生

文 | 刘伟光 刘伟光,阿里云智能新金融&互联网行业总裁、中国金融四十人论坛常务理事,毕业于清华大学电子工程系前言2015年云原生理念提出的时候,彼时全球金融百年发展形成的信息化到数字化的背后,金融级的技术服务水准经过长时间的打磨已经形成行业共识的标准。8年前的云原生经典理念是聚焦在容器化、DevOps、持续开发持续集成、微服务架构这些软件开发层面的新范式。而金融级要求诸如高可...

优快云资讯 5135

PyTorch深度学习实战(24)——使用U-Net架构进行图像分割

图像分割 (Image segmentation) 是计算机视觉领域中的一个重要任务,旨在将图像划分为具有语义信息的不同区域或对象。与目标检测任务不同,图像分割要求像素级别的精确定位和分类,将每个像素标记为属于哪个类别或属于哪个区域。在本节中,我们将介绍图像分割的基本概念,并训练一个基于 U-Net 架构的图像分割模型。

盼小辉丶的博客 1万+

探索SOFAStack™:构建云原生金融级分布式系统的利器

探索SOFAStack™:构建云原生金融级分布式系统的利器 SOFAStackSOFAStack™ (Scalable Open Financial Architecture Stack) is a collection of cloud native middleware components, which are designed to build distributed systems w...

gitblog_00050的博客 1116

树莓派 Raspberry Pi 使用 YOLOv8 YOLOv10 YOLOv11进行目标检测及推理加速,Run YOLOv8 YOLOv10 YOLOv11 on Raspberry Pi

libcamera 是 linux 新增加用于访问 camera 的 API。树莓派参与了 libcamera 的开发,并且在新的摄像头软件中开始从依赖于固件的摄像头图像处理管道(Image processing pipeline, ISP)迁移到更加开放的 libcamera。当然这块用USB 摄像头应该也是可以的。

shiter编写程序的艺术 5568

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

网商银行是如何建设金融级云原生分布式架构的?

网商银行从诞生之日起就是一家将核心系统架构在云上的银行,经过多年建设,逐步完成了两地三中心架构到异地多活云单元架构的升级。中国人民银行出台的《金融科技(Fin-Tech)发展规划(201...

金融级分布式架构 1668

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

阿里云刘伟光:2 万字解读金融级云原生

经过长时间的探索实践,我们提出一个全新的概念:金融级云原生,其核心思想就是让云原生从狭义变成广义,让云原生的先进思想从只覆盖应用开发扩展到系统物理部署架构这样的完整技术链路,从单纯的开发态转向设计态+研发态+运行态+运维态+容灾态,同时在每个范畴中都结合金融级的高可用、高性能、业务连续性等特征,总结和定义成金融级的全栈式的云原生架构的范式。

阿里巴巴云原生的博客 1596

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

什么是云原生?

最近有些工作和云计算相关,同事提供了阿里云上的一篇文章,可以做个知识的普及,https://help.aliyun.com/document_detail/312367.html数字金融时代的云原生架构转型步入数字金融时代,“云原生架构”作为金融 IT 架构的关键发展趋势已经成为业界共识,但 IT 架构转型绝不是一蹴而就的,在积极探索和应用以“云原生”为代表的新兴技术的同时,必须考虑与传统模式和技...

bisal的专栏 209

探索华为云CCE敏捷版金融级高可用方案实践案例

作为容器混合云在线下的延伸,CCE 敏捷版提供了高性能可扩展的容器服务,快速构建高可靠的容器集群,兼容 Kubernetes 及 Docker 容器生态。

华为云官方博客 1726

云原生之:蚂蚁Service Mesh大规模落地实践与展望

云原生的理念正如火如荼,然而真正大规模落地的公司依然屈指可数,蚂蚁作为国内比较早进行尝试的公司,经过了 2 年多的探索,沉淀出了一套切实可行的方案并最终通过了双十一的考验。 一、为什么需要 Service Mesh? 我们为什么需要Service Mesh,它对业务的价值在哪里,我们总结了三点: 1. 微服务治理与业务逻辑解耦。 2. 异构系统的统一治理。 3. 金融级的网络安全。 下面分别进行阐述。 1. 微服务治理与业务逻辑解耦 在 Serv...

Java0258的博客 463

五小时构建云原生电商平台 | KubeCon SOFAStack Workshop 详解

本文根据 KubeCon China 2019 同场活动 SOFAStack Cloud Native Workshop 内容整理, 文末包含文档、PPT 地址,欢迎试用和提出建议。 2019 年 6 月 25 日,在 KubeCon China 2019,全球知名开源组织云原生计算基金会...

221

「活动报名」SOFAMeetup 成都站-云原生专场

活动简介SOFAStack 社区 2022 年第二场 Meetup 来啦!本次SOFAMeetup 将于成都开启,由 SOFAStack 社区和KubeSphere 社区联合 KubeSphere 社区成都用户委员会发起,主题为「云原生技术交流」。此次 Meetup 将汇聚开源与云原生领域的最终用户、贡献者和技术专家,进行沟通、学习交流及经验的分享。活动组织方本次活动由...

金融级分布式架构 201

倒计时 3 天|一起看云原生 Meetup 的六大议题

SOFAStack & KubeSphere(云原生 Meetup)2022 年下半年首场SOFAMeetup 来啦~本次 Meetup 我们来到了广州,携手 KubeSphere 社区一起为大家带来云原生相关的技术内容分享。此次 Meetup 将汇聚云原生领域的最终用户、贡献者和技术专家,进行沟通、学习交流及经验的分享。SOFAStack 社区是第一次来到...

金融级分布式架构 276
上一篇: 蚂蚁金服轻量级监控分析系统 SOFALookout 服务端开源
下一篇: SOFA Weekly | 每周精选【6/3 - 6/7】
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值