news 2026/4/20 5:36:44

gte-base-zh部署成本优化:Spot实例+自动伸缩应对流量峰谷的弹性方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
gte-base-zh部署成本优化:Spot实例+自动伸缩应对流量峰谷的弹性方案

gte-base-zh部署成本优化:Spot实例+自动伸缩应对流量峰谷的弹性方案

1. 引言:当高可用遇上高成本

想象一下这个场景:你负责一个在线文档检索系统,核心是使用gte-base-zh模型为海量文本生成向量。白天用户活跃,每秒有上百个查询请求,模型实例必须火力全开;到了深夜,流量骤降,可能十分钟才有一个请求。如果按照白天的峰值流量来配置服务器资源,意味着深夜有大量的计算资源在“空转”,账单上的数字却不会休息。

这就是很多AI应用部署面临的现实困境——流量峰谷差异巨大,但资源成本却是固定的。gte-base-zh作为一款优秀的中文文本嵌入模型,在信息检索、语义匹配等场景表现优异,但它的推理服务同样需要应对这种不均衡的访问模式。

今天,我们就来探讨一个切实可行的解决方案:基于Spot实例和自动伸缩的弹性部署方案。这个方案的核心思想很简单:让资源使用量尽可能贴近实际需求曲线,高峰时扩容,低谷时缩容,同时利用价格更低的Spot实例来进一步降低成本。

通过本文,你将了解到:

  • 为什么传统的固定资源部署在成本上不划算
  • 如何利用云平台的Spot实例节省高达70%的计算成本
  • 怎样配置自动伸缩策略,让服务能力随流量自动调整
  • 一套完整的、可落地的gte-base-zh弹性部署架构

无论你是运维工程师、算法工程师,还是技术负责人,这套方案都能帮助你在保证服务可用性的前提下,显著降低AI模型服务的运营成本。

2. 理解gte-base-zh与Xinference部署

在深入成本优化方案之前,我们先快速回顾一下gte-base-zh的基本部署方式,这是后续所有优化工作的基础。

2.1 gte-base-zh模型简介

gte-base-zh是由阿里巴巴达摩院研发的文本嵌入模型,基于BERT框架专门针对中文场景优化训练。简单来说,它的核心能力是把一段文本(比如一个问题、一篇文章)转换成一个固定长度的数字向量(通常是768维)。这个向量就像是文本的“数字指纹”,包含了文本的语义信息。

它能做什么?

  • 语义搜索:输入“如何学习Python编程”,它能找到“Python入门教程”、“编程学习指南”等相关内容,而不只是关键词匹配
  • 文本分类:根据内容自动给文章打标签
  • 聚类分析:把相似的文档自动归为一类
  • 推荐系统:根据用户历史行为推荐相似内容

模型的本地存储路径通常是:

/usr/local/bin/AI-ModelScope/gte-base-zh

2.2 使用Xinference部署基础服务

Xinference是一个开源的模型推理服务框架,它让模型部署变得简单。对于gte-base-zh,基本的启动流程如下:

启动Xinference服务

# 在服务器上启动Xinference,监听9997端口 xinference-local --host 0.0.0.0 --port 9997

通过脚本启动模型服务: 通常我们会有一个专门的启动脚本,比如:

/usr/local/bin/launch_model_server.py

这个脚本的核心作用是调用Xinference的接口,把gte-base-zh模型加载起来,对外提供API服务。

验证服务是否正常: 启动后,查看日志确认服务状态:

cat /root/workspace/model_server.log

看到模型加载成功的日志信息,就说明服务已经就绪。

通过Web界面测试: Xinference提供了友好的Web界面,你可以:

  1. 在浏览器中打开对应的地址
  2. 找到gte-base-zh模型对应的测试界面
  3. 输入文本,点击“相似度比对”按钮
  4. 查看模型生成的向量或相似度计算结果

这种部署方式简单直接,适合开发和测试环境。但在生产环境中,我们需要考虑更多:如何应对流量波动?如何保证高可用?如何控制成本?这就是接下来要解决的问题。

3. 传统部署的成本痛点分析

在讨论优化方案之前,我们先来看看如果不做任何优化,传统的部署方式会面临哪些成本问题。

3.1 固定资源部署的浪费

大多数团队在首次部署AI服务时,会采用这种模式:

  • 根据预估的峰值流量(比如每秒100个请求)
  • 选择足够强大的服务器实例(比如8核32G的GPU实例)
  • 部署固定数量的实例(比如2个,用于容灾)
  • 7×24小时运行,按月或按年付费

这种模式的问题很明显:

资源利用率低下

时间 | 00:00-08:00 | 08:00-12:00 | 12:00-18:00 | 18:00-24:00 请求量/秒 | 5-10 | 80-120 | 50-80 | 20-40 资源使用率 | 5%-10% | 80%-100% | 50%-80% | 20%-40%

可以看到,一天中只有少数时间段资源被充分利用,大部分时间资源处于闲置状态,但费用照付不误。

成本结构不合理

  • 计算资源成本:占总成本60%-80%,但利用率可能只有30%-40%
  • 存储成本:相对固定,占比约10%-15%
  • 网络成本:随流量变化,占比约5%-10%
  • 运维成本:人工监控、维护、备份等

3.2 流量峰谷带来的挑战

AI服务的流量模式往往有很强的规律性:

工作日 vs 周末

  • 工作日:企业应用访问量大,白天高峰明显
  • 周末:流量可能下降50%以上

时段性波动

  • 上班时间(9:00-12:00,14:00-18:00):访问高峰
  • 午休时间(12:00-14:00):小幅下降
  • 夜间(20:00-次日8:00):流量低谷

季节性/活动性峰值

  • 促销活动期间:流量可能是平时的3-5倍
  • 新产品上线:短期内访问量激增
  • 内容爆发传播:突发的大流量访问

3.3 手动调整的局限性

有些团队可能会尝试手动调整:

  • 高峰期前手动扩容
  • 低谷期手动缩容
  • 根据经验预测流量变化

但这种做法问题很多:

  • 响应延迟:从发现流量增长到手动扩容完成,可能需要30分钟以上
  • 操作风险:手动操作容易出错,可能导致服务中断
  • 人力成本:需要专人7×24小时监控,运维成本高
  • 预测不准:突发流量无法提前预测

正是这些痛点,催生了我们需要一个自动化的、智能的弹性伸缩方案。

4. 核心优化方案:Spot实例 + 自动伸缩

现在进入正题,看看如何用Spot实例和自动伸缩来解决上述问题。这个方案的核心是“弹性”和“经济性”的结合。

4.1 什么是Spot实例?

Spot实例是云平台提供的一种竞价实例,价格通常比按需实例低60%-90%。它的工作原理类似于“机票竞价”——你出价购买闲置的计算资源,当资源紧张或市场价格高于你的出价时,实例可能会被回收。

Spot实例的特点

  • 价格极低:通常为按需实例价格的30%-40%
  • 可能被中断:云平台提前2分钟通知,给你时间保存状态
  • 适合无状态或可中断的工作负载:比如批处理任务、渲染作业、AI推理服务

为什么Spot实例适合AI推理服务?

  1. 成本敏感:AI推理服务通常需要大量计算资源,成本占比高
  2. 可中断性:单个推理请求通常很快(毫秒到秒级),即使实例中断,新的请求可以被其他实例处理
  3. 无状态:gte-base-zh模型服务本身是无状态的,请求之间相互独立
  4. 有弹性架构兜底:配合自动伸缩,即使部分Spot实例中断,服务仍可用

4.2 自动伸缩如何工作?

自动伸缩(Auto Scaling)是云平台的核心服务之一,它可以根据预设的策略自动调整计算资源的数量。

核心组件

  • 伸缩组:一组相同配置的实例集合
  • 启动配置:实例的模板(镜像、实例类型、存储等)
  • 伸缩策略:决定何时扩容、何时缩容的规则

常见的伸缩策略

  1. 基于监控指标的伸缩

    • CPU使用率 > 70% → 扩容
    • CPU使用率 < 30% → 缩容
    • 请求数量 > 阈值 → 扩容
  2. 基于时间的伸缩

    • 工作日 8:00 → 扩容到5个实例
    • 工作日 20:00 → 缩容到2个实例
    • 周末全天 → 保持1个实例
  3. 基于预测的伸缩

    • 机器学习预测未来流量
    • 提前扩容应对预期高峰

4.3 两者结合的优势

当Spot实例遇上自动伸缩,就产生了“1+1>2”的效果:

成本大幅降低

传统方案:2个按需实例 × 24小时 × 30天 = 1440实例小时 混合方案:1个按需实例(始终运行) + 1-4个Spot实例(按需启动) 成本估算:节省40%-70%

弹性应对流量

  • 流量增长时,自动启动更多Spot实例
  • 流量下降时,自动终止部分Spot实例
  • 始终保持“刚好够用”的资源水平

高可用保障

  • 始终保留至少1个按需实例作为基础保障
  • Spot实例中断时,自动伸缩会启动新的实例替代
  • 多可用区部署,避免单点故障

5. 实战部署:构建弹性gte-base-zh服务

理论讲完了,现在我们来实际操作。这里以主流云平台为例,展示如何搭建这套弹性架构。

5.1 架构设计

首先看整体架构图:

用户请求 → 负载均衡器 → 自动伸缩组 → gte-base-zh实例集群 ↑ 监控告警系统 ↑ 伸缩策略引擎

组件说明

  • 负载均衡器:分发请求到后端实例,健康检查自动剔除异常实例
  • 自动伸缩组:管理一组相同配置的实例,负责扩容缩容
  • 实例集群:混合使用按需实例和Spot实例
  • 监控系统:收集CPU、内存、请求量等指标
  • 策略引擎:根据指标触发伸缩动作

5.2 准备基础镜像

我们需要创建一个包含gte-base-zh和Xinference的定制化镜像,这样新的实例启动后就能直接提供服务。

创建启动脚本setup_model.sh

#!/bin/bash # 安装基础依赖 apt-get update && apt-get install -y python3-pip # 安装Xinference pip3 install xinference # 下载gte-base-zh模型(如果镜像中未预置) # 这里假设模型已经预置在/usr/local/bin/AI-ModelScope/gte-base-zh # 创建模型启动脚本 cat > /usr/local/bin/launch_model_server.py << 'EOF' import subprocess import time import sys def start_model_server(): # 启动Xinference服务 xinference_cmd = ["xinference-local", "--host", "0.0.0.0", "--port", "9997"] # 这里可以添加模型加载逻辑 # 实际生产中可能需要更复杂的启动流程 process = subprocess.Popen(xinference_cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # 等待服务启动 time.sleep(30) # 检查服务是否正常 # ... 健康检查逻辑 return process if __name__ == "__main__": start_model_server() EOF # 设置开机自启动 echo "@reboot root python3 /usr/local/bin/launch_model_server.py" >> /etc/crontab # 启动服务 python3 /usr/local/bin/launch_model_server.py &

创建健康检查脚本health_check.py

#!/usr/bin/env python3 import requests import sys def check_health(): try: # 检查Xinference服务是否正常 response = requests.get("http://localhost:9997", timeout=5) if response.status_code == 200: print("Service is healthy") return True else: print(f"Service returned status: {response.status_code}") return False except Exception as e: print(f"Health check failed: {e}") return False if __name__ == "__main__": if check_health(): sys.exit(0) # 健康,返回0 else: sys.exit(1) # 不健康,返回1

5.3 配置自动伸缩组

以某云平台为例,配置自动伸缩组:

1. 创建启动配置

# 使用刚才创建的自定义镜像 # 选择实例类型:根据gte-base-zh的资源需求选择 # CPU密集型:选择计算优化型实例 # 内存要求:gte-base-zh需要约2-4GB内存 # 建议:c6i.xlarge (4vCPU, 8GB内存) 或类似规格

2. 创建伸缩组

{ "伸缩组名称": "gte-base-zh-cluster", "最小实例数": 1, // 始终保留1个按需实例 "最大实例数": 10, // 最大扩展到10个实例 "期望实例数": 2, // 平时保持2个实例 "混合实例策略": { "按需实例基础": 1, // 至少1个按需实例 "Spot实例占比": 70, // 70%使用Spot实例 "实例类型多样性": ["c6i.xlarge", "c6a.xlarge", "c5.xlarge"] // 多种实例类型提高Spot可用性 }, "多可用区": true // 跨可用区部署提高可用性 }

3. 配置伸缩策略

# 基于CPU使用率的策略 # 当平均CPU > 70%持续5分钟,扩容1个实例 # 当平均CPU < 30%持续10分钟,缩容1个实例 # 基于请求量的策略 # 当每分钟请求数 > 1000持续3分钟,扩容2个实例 # 当每分钟请求数 < 200持续10分钟,缩容1个实例 # 基于时间的策略 # 工作日 8:00: 扩容到5个实例 # 工作日 20:00: 缩容到2个实例 # 周末全天: 保持1个实例

5.4 配置负载均衡和健康检查

负载均衡器配置

监听器配置: 协议: HTTP 端口: 80 后端端口: 9997 健康检查: 协议: HTTP 路径: /health # 需要Xinference提供健康检查端点 端口: 9997 间隔: 30秒 超时: 5秒 健康阈值: 2 不健康阈值: 3 会话保持: 启用 持续时间: 3600秒

在Xinference中添加健康检查端点: 我们需要修改Xinference的启动,添加一个简单的健康检查接口:

# 在启动脚本中添加Flask应用提供健康检查 from flask import Flask import threading app = Flask(__name__) @app.route('/health') def health_check(): return {'status': 'healthy', 'service': 'gte-base-zh'}, 200 def start_health_server(): app.run(host='0.0.0.0', port=8080) # 在新线程中启动健康检查服务 health_thread = threading.Thread(target=start_health_server) health_thread.daemon = True health_thread.start()

6. 成本效益分析与优化建议

部署完成后,我们需要量化这个方案到底能省多少钱,以及如何进一步优化。

6.1 成本对比分析

假设我们有一个gte-base-zh服务,流量模式如下:

传统方案(固定2个按需实例)

实例类型: c6i.xlarge (4vCPU, 8GB内存) 按需价格: $0.17/小时 月成本: 2实例 × $0.17 × 24小时 × 30天 = $244.80 年成本: $244.80 × 12 = $2,937.60

弹性方案(1个按需 + Spot实例弹性伸缩)

基础实例: 1个按需实例,始终运行 按需实例成本: 1 × $0.17 × 24 × 30 = $122.40/月 Spot实例使用(估算): - 工作日白天(10小时/天): 平均2个Spot实例 - 其他时间: 平均0.5个Spot实例 Spot价格: $0.06/小时(按需价格的35%) Spot实例月成本: 工作日: 20天 × 10小时 × 2实例 × $0.06 = $24.00 其他时间: 20天 × 14小时 × 0.5实例 × $0.06 = $8.40 周末: 8天 × 24小时 × 0.5实例 × $0.06 = $5.76 总Spot成本: $24.00 + $8.40 + $5.76 = $38.16 总月成本: $122.40 + $38.16 = $160.56

成本节省

月节省: $244.80 - $160.56 = $84.24 节省比例: 34.4% 年节省: $84.24 × 12 = $1,010.88

这还只是保守估计,实际中如果流量波动更大,或者Spot实例价格更低,节省可能达到50%以上。

6.2 性能与成本平衡点

在实际运营中,我们需要在性能和成本之间找到平衡:

关键指标监控

  1. 响应时间P95:95%的请求在多少毫秒内完成
  2. 错误率:请求失败的比例
  3. 实例中断率:Spot实例被回收的频率
  4. 扩容延迟:从触发扩容到实例就绪的时间

优化建议

1. 选择合适的实例类型

gte-base-zh的资源需求分析: - CPU: 中等需求,4核足够 - 内存: 模型加载后约2-3GB,建议8GB以上 - 网络: 中等,主要传输文本和向量 - 存储: 模型文件约500MB,建议SSD 推荐实例类型: - 计算优化型: c6i.xlarge, c6a.xlarge - 通用型: m6i.xlarge (如果内存需求更高) 避免: 内存优化型、存储优化型(成本高,不匹配需求)

2. 设置合理的伸缩阈值

扩容策略: - 指标: CPU使用率 - 阈值: 65% (留出缓冲时间) - 持续时间: 3分钟 (避免瞬时峰值误触发) - 冷却时间: 5分钟 (避免频繁伸缩) 缩容策略: - 指标: CPU使用率 - 阈值: 25% (确保有足够冗余) - 持续时间: 10分钟 (确认流量确实下降) - 冷却时间: 10分钟

3. 混合实例策略优化

{ "按需实例比例": "20%-30%", // 保证基础可用性 "Spot实例多样性": [ "c6i.xlarge", // 主要类型 "c6a.xlarge", // 备选类型1 "c5.xlarge" // 备选类型2 ], "Spot最大价格": "按需价格的60%", // 平衡成本和中断风险 "容量优化策略": "最低价格优先" // 优先选择最便宜的实例类型 }

6.3 高级优化技巧

1. 预测性伸缩: 使用历史流量数据训练简单的预测模型,提前扩容应对预期高峰:

# 简化的预测逻辑示例 def predict_traffic(historical_data, current_trend): # 基于时间序列分析预测未来流量 # 工作日模式、周末模式、季节性趋势等 pass # 在流量高峰前30分钟提前扩容 schedule_scaling(action='scale_out', instance_count=+2, execute_time='08:30') # 在9:00高峰前准备好

2. 分级响应策略: 根据请求优先级采取不同的处理策略:

  • 高优先级请求:实时处理,保证响应时间
  • 中优先级请求:可以短暂排队(<1秒)
  • 低优先级请求:可以延迟处理或批量处理

3. 冷启动优化: Spot实例启动后需要加载模型,这需要时间。优化方法:

  • 使用预热的自定义镜像(模型已部分加载)
  • 实施渐进式流量切换(新实例先接收少量流量)
  • 保持最小数量的“热”实例

7. 监控、告警与故障处理

弹性架构带来了成本优势,也增加了运维复杂度。完善的监控和故障处理机制至关重要。

7.1 关键监控指标

资源层面监控

CPU使用率: 告警阈值: >80%持续5分钟 优化建议: 考虑扩容或优化代码 内存使用率: 告警阈值: >85%持续5分钟 优化建议: 检查内存泄漏,考虑使用更大内存实例 磁盘IO: 告警阈值: 读写延迟 >100ms 优化建议: 使用更高性能的存储

业务层面监控

请求量(QPS): 正常范围: 根据业务特点设定 突然下降: 可能服务异常 突然上升: 可能需要扩容 响应时间(P95): 告警阈值: >500ms 优化建议: 优化模型或代码,增加实例 错误率: 告警阈值: >1% 优化建议: 检查日志,定位问题

成本监控

Spot实例中断率: 正常范围: <5% 过高: 考虑调整竞价策略或使用更多按需实例 资源利用率: 目标: 40%-70% 过低: 考虑缩容或使用更小规格实例 过高: 考虑扩容或优化

7.2 告警配置

配置关键告警,及时发现和处理问题:

紧急告警(需要立即处理)

1. 服务完全不可用 - 条件: 所有实例健康检查失败 - 动作: 自动重启实例,通知运维人员 2. Spot实例大规模中断 - 条件: 5分钟内超过50%的Spot实例中断 - 动作: 自动增加按需实例比例,通知运维人员 3. 响应时间严重恶化 - 条件: P95响应时间 > 1秒持续5分钟 - 动作: 自动扩容,通知开发人员

预警(需要关注)

1. 资源使用率持续偏高 - 条件: CPU > 70%持续15分钟 - 动作: 发送预警邮件,准备手动干预 2. 成本异常增长 - 条件: 日成本比平时高30% - 动作: 分析原因,调整策略 3. Spot实例价格波动 - 条件: Spot价格 > 按需价格的80% - 动作: 考虑切换到按需实例

7.3 故障处理预案

即使有完善的监控,故障仍可能发生。准备好处理预案:

Spot实例中断处理

def handle_spot_interruption(instance_id, interruption_notice): """ 处理Spot实例中断 """ # 1. 记录中断事件 log_interruption(instance_id, interruption_notice) # 2. 从负载均衡器移除该实例 elb.deregister_instance(instance_id) # 3. 检查是否需要启动新实例 current_capacity = asg.get_current_capacity() desired_capacity = asg.get_desired_capacity() if current_capacity < desired_capacity: # 自动伸缩组会自动启动新实例 pass else: # 手动触发扩容 asg.set_desired_capacity(desired_capacity + 1) # 4. 发送通知 send_notification(f"Spot实例 {instance_id} 被中断,已触发替换")

服务降级策略: 当资源严重不足时,可以考虑服务降级:

  1. 降低向量维度:从768维降到384维(如果模型支持)
  2. 缓存热门查询:对常见查询结果缓存
  3. 限制非关键功能:暂停后台批量处理任务
  4. 返回简化结果:在极端情况下返回近似结果

灾难恢复计划

  1. 多区域部署:在另一个区域部署备用集群
  2. 定期备份:备份模型文件、配置和数据
  3. 一键切换:准备好切换到备用区域的脚本
  4. 演练测试:定期进行故障切换演练

8. 总结

通过Spot实例和自动伸缩的结合,我们为gte-base-zh模型服务构建了一个既经济又弹性的部署方案。让我们回顾一下这个方案的核心价值:

成本效益显著

  • 节省30%-70%的计算成本,具体取决于流量模式和Spot实例价格
  • 资源利用率从可能低于30%提升到40%-70%
  • 按实际使用付费,避免资源闲置浪费

弹性应对流量

  • 自动应对日常的峰谷波动
  • 快速响应突发流量,保证服务稳定性
  • 智能缩容,在低谷期进一步降低成本

运维自动化

  • 减少人工干预,降低运维负担
  • 基于监控的智能决策,比人工更及时准确
  • 完善的处理机制,保障服务高可用

实施建议

  1. 从小规模开始:先在一个非关键服务上试点,验证方案可行性
  2. 逐步优化:根据实际监控数据调整伸缩策略和实例配置
  3. 建立预警机制:设置合理的监控告警,及时发现和处理问题
  4. 定期评估:每月分析成本效益,持续优化策略

最后的重要提醒

  • Spot实例虽然便宜,但有中断风险,关键业务需要保留足够的按需实例
  • 自动伸缩不是“设置完就忘”,需要持续监控和优化
  • 成本优化不能以牺牲稳定性为代价,找到合适的平衡点
  • 不同的业务场景可能需要不同的优化策略,本文方案需要根据实际情况调整

gte-base-zh作为一个优秀的文本嵌入模型,在很多业务场景中都能发挥重要作用。通过合理的部署架构优化,我们不仅能发挥它的技术价值,还能控制好运营成本,让技术投入产生更大的业务回报。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 5:35:18

Nanbeige 4.1-3B 科研利器:MATLAB数据分析脚本自动生成

Nanbeige 4.1-3B 科研利器&#xff1a;MATLAB数据分析脚本自动生成 1. 引言 做科研或者工程的朋友&#xff0c;估计都经历过这样的时刻&#xff1a;面对一堆实验数据&#xff0c;心里清楚要做什么分析——比如做个线性拟合&#xff0c;画个趋势图&#xff0c;或者算个统计指标…

作者头像 李华
网站建设 2026/4/20 5:29:15

Nano Banana MCP 集成指南

MCP (Model Context Protocol) 是由 Anthropic 推出的模型上下文协议&#xff0c;它允许 AI 模型&#xff08;如 Claude、GPT 等&#xff09;通过标准化接口调用外部工具。借助 AceData Cloud 提供的 Nano Banana MCP 服务器&#xff0c;您可以直接在 Claude Desktop、VS Code、…

作者头像 李华
网站建设 2026/4/20 5:25:49

【Linux】进程(1)基础

目录 一、进程的基本概念 二.描述进程(PCB) 1.基本概念&#xff1a; 2.task_struct&#xff08;操作系统中的先描述&#xff0c;再组织&#xff09; &#xff08;1&#xff09;task_struct里的一些重要内容的&#xff1a; &#xff08;2&#xff09;组织进程 &#xff0…

作者头像 李华
网站建设 2026/4/20 5:25:33

一招解决 H5 远程收款:动态支付链接优势

解决 H5 远程收款问题&#xff0c;H5 动态支付链接是较为理想的方案之一。它是移动端应用或网页端的一种支付方式&#xff0c;通过调用第三方支付平台接口生成专属支付链接&#xff0c;用户无需离开当前应用或网页即可完成付款&#xff0c;能有效解决远程异地收款难题&#xff…

作者头像 李华
网站建设 2026/4/20 5:22:45

SQL 多表查询综合练习 50 题

查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数分析&#xff1a;首先需要查询满足以下条件的学生&#xff1a;该学生同时选修了"01"课程和"02"课程该学生的"01"课程成绩 > "02"课程成绩最终输出内容…

作者头像 李华