讲师中心 微信公众号
AI工具推荐 视频效率加速

如何优化 Fast API 高频调用下的用户余额校验与短信发送性能

星涛君_6868

星涛君_6868

发布时间:2026-10-22 20:02:07

|

175人浏览过

|

来源于php中文网

原创

如何优化 Fast API 高频调用下的用户余额校验与短信发送性能

本文针对高频并发调用 sms api(尤其是 otp 场景)导致 mysql 查询积压、响应延迟的问题,提出索引优化、数据结构重构、事务化扣减及 api 限流四重解决方案,兼顾实时性、一致性与抗压能力。

本文针对高频并发调用 sms api(尤其是 otp 场景)导致 mysql 查询积压、响应延迟的问题,提出索引优化、数据结构重构、事务化扣减及 api 限流四重解决方案,兼顾实时性、一致性与抗压能力。

在高并发 SMS 接口(如 example.com/send_sms?apikey=...&contact=...&text=...)场景下,原始实现每次请求都执行 SELECT SUM(credit) 查询并依赖应用层判断余额,不仅引发大量重复全表扫描,更因多行记录累加设计+无索引+非原子操作,造成严重的性能瓶颈与竞态风险。以下是系统性优化方案:

✅ 1. 索引加速查询(立即生效)

为 apikey 字段添加 B-Tree 索引,将 O(n) 全表扫描降为 O(log n) 精准定位:

ALTER TABLE `users_credit` 
ADD INDEX `idx_apikey` (`apikey`);

⚠️ 注意:若 apikey 列存在大量重复值或为空,需先清洗数据;索引命名建议语义化(如 idx_apikey),避免使用反引号包裹关键字。

✅ 2. 重构数据模型:单行总余额 + 原子扣减(核心改进)

废弃“多行流水累加”模式,改为每个 API Key 对应唯一余额记录,并通过数据库事务保障扣减原子性:

-- 初始化(确保每 apikey 仅一行)
INSERT INTO `users_credit` (`apikey`, `credit`, `description`, `create_date`, `update_date`)
VALUES ('abcdef', 1000.00, 'Initial balance', NOW(), NOW())
ON DUPLICATE KEY UPDATE `credit` = VALUES(`credit`);

-- 扣减逻辑(在应用中执行)
START TRANSACTION;
UPDATE `users_credit` 
SET `credit` = `credit` - 1.50, `update_date` = NOW()
WHERE `apikey` = 'abcdef' AND `credit` >= 1.50; -- 条件前置校验
SELECT ROW_COUNT() AS `affected_rows`; -- 返回 1 表示扣减成功
COMMIT;

✅ 优势:

  • 消除 SUM() 聚合开销;
  • WHERE ... AND credit >= X 实现“查+扣”一步完成,天然防止超扣;
  • 单行更新性能远高于多行扫描+聚合;
  • 配合主键/唯一索引,彻底规避并发重复扣减(MySQL 行级锁自动生效)。

✅ 3. 强制 API 速率限制(防御性措施)

即使后端优化完成,仍需拦截恶意/缺陷客户端的无限重试。推荐分层限流:

  • Nginx 层(轻量级):按 IP 或 API Key 限速
    limit_req_zone $arg_apikey zone=api_limit:10m rate=5r/s;
    location /send_sms {
        limit_req zone=api_limit burst=10 nodelay;
    }
  • 应用层(精准控制):使用 Redis 记录请求时间戳,支持按用户维度动态调整(如 OTP 用户允许 3 次/分钟,普通短信 60 次/小时)。

✅ 4. 补充健壮性实践

  • 余额字段类型优化:将 DECIMAL(50,2) 改为 DECIMAL(12,2)(覆盖万亿级金额已足够,过大精度反而影响索引效率);
  • 添加唯一约束:ALTER TABLE users_credit ADD UNIQUE KEY uk_apikey (apikey); 防止脏数据;
  • 异步日志归档:将 description 等非核心字段移至独立日志表,主余额表保持极简;
  • 监控告警:对 users_credit 表的慢查询、锁等待、连接数突增设置 Prometheus+AlertManager 告警。

通过以上组合策略,可将单次 SMS 请求的 DB 延迟从数百毫秒降至 5ms 内,同时杜绝超发、重复扣减与服务雪崩风险——真正满足 OTP 场景“毫秒级响应+金融级准确”的双重要求。

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API

Python FastAPI 异步开发利用 async/await 关键字,通过定义异步视图函数、使用异步数据库库 (如 databases)、异步 HTTP 客户端 (如 httpx),并结合后台任务队列(如 Celery)和异步依赖项,实现高效的 I/O 密集型 API,显著提升吞吐量和响应速度,尤其适用于处理数据库查询、网络请求等耗时操作,无需阻塞主线程。

119

2025.12.22

Python 微服务架构与 FastAPI 框架
Python 微服务架构与 FastAPI 框架

本专题系统讲解 Python 微服务架构设计与 FastAPI 框架应用,涵盖 FastAPI 的快速开发、路由与依赖注入、数据模型验证、API 文档自动生成、OAuth2 与 JWT 身份验证、异步支持、部署与扩展等。通过实际案例,帮助学习者掌握 使用 FastAPI 构建高效、可扩展的微服务应用,提高服务响应速度与系统可维护性。

554

2026.02.06

Python Web框架FastAPI 全栈开发教程合集
Python Web框架FastAPI 全栈开发教程合集

以 FastAPI 为核心,讲解现代 Python Web API 的高效开发方式,涵盖路由定义与路径参数/查询参数/请求体绑定、Pydantic 模型的数据校验与序列化、依赖注入(Depends)系统的分层设计、中间件与 CORS 配置、OAuth2 + JWT 认证流程、后台任务(BackgroundTasks)、WebSocket 实时通信、SQLAlchemy 异步 ORM 集成、自动生成 OpenAPI/Swagger 交互文

616

2026.05.09

Python FastAPI异步微服务与高性能接口设计
Python FastAPI异步微服务与高性能接口设计

本专题聚焦 Python FastAPI 框架在高性能接口与微服务开发中的应用,讲解异步请求处理、依赖注入机制、路由设计、数据库异步操作以及接口性能优化策略。结合实际项目案例,帮助开发者构建高并发、低延迟的现代化后端服务架构。

519

2026.06.16

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

17553

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

433

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

308

2025.12.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

323

2026.03.06

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn