软件开发进阶技能之分布式与高并发(五)

简介: 教程来源本节详解高并发秒杀系统设计与可观测性实践:通过CDN静态化、Redis原子扣减、MQ异步下单、唯一键防重等实现抗洪峰、零超卖;并集成Prometheus监控、SkyWalking链路追踪、ELK日志分析,构建完整可观测体系。

第十一部分:高并发实战案例 —— 秒杀系统设计

将前面各部分知识点综合运用,设计一个高并发秒杀系统。

11.1 需求
商品库存有限,例如 100 件。

瞬时洪峰流量(例如 10 万人同时抢购)。

要求不超卖,不重复下单,系统不崩溃。

11.2 核心思路
流量层层削峰:

页面静态化 + CDN。

客户端随机延时发起请求(防集中冲击)。

API 网关限流(令牌桶)。

库存预热与扣减:

秒杀开始前将库存加载到 Redis 中。

使用 Redis 的 DECR 原子操作扣减库存,扣减成功才进入后续流程。

请求排队异步化:

扣减成功后,将下单请求写入消息队列,立即返回“排队中”。

后端 worker 串行或小并发消费队列创建订单,避免数据库死锁。

订单防重:

用户 ID + 商品 ID 作为唯一键,保证同一用户只能秒杀一次。

兜底降级:

若 Redis 或 MQ 压力过大,直接返回“活动火爆,请重试”。

11.3 伪代码实现

@RestController
public class SeckillController {
    @Autowired
    private RedisTemplate redis;
    @Autowired
    private RocketMQTemplate mq;

    @PostMapping("/seckill")
    public String seckill(Long userId, Long productId) {
        // 1. 限流(使用 Sentinel)
        // 2. 校验是否已秒杀过(Redis Set)
        Boolean already = redis.opsForSet().isMember("seckill:user:"+productId, userId);
        if (Boolean.TRUE.equals(already)) {
            return "您已参与过该活动";
        }
        // 3. 原子扣减库存
        Long stock = redis.opsForValue().decrement("seckill:stock:"+productId);
        if (stock == null || stock < 0) {
            // 库存不足,恢复库存(decrement 后为负,需加回)
            redis.opsForValue().increment("seckill:stock:"+productId);
            return "已抢光";
        }
        // 4. 记录用户参与(避免重复扣减)
        redis.opsForSet().add("seckill:user:"+productId, userId);
        // 5. 发送消息异步创建订单
        SeckillOrderMsg msg = new SeckillOrderMsg(userId, productId);
        mq.syncSend("seckill_order_topic", msg);
        return "排队中,请稍后查询结果";
    }
}

@RocketMQMessageListener(topic = "seckill_order_topic", consumerGroup = "order-group")
public class OrderConsumer implements RocketMQListener<SeckillOrderMsg> {
    @Autowired
    private OrderService orderService;

    @Override
    public void onMessage(SeckillOrderMsg msg) {
        // 幂等:使用唯一键约束(userId+productId)
        orderService.createSeckillOrder(msg.getUserId(), msg.getProductId());
    }
}

11.4 数据库设计

CREATE TABLE `seckill_order` (
    `id` bigint NOT NULL AUTO_INCREMENT,
    `user_id` bigint NOT NULL,
    `product_id` bigint NOT NULL,
    `status` tinyint DEFAULT 0,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_user_product` (`user_id`,`product_id`)  -- 防重
);

第十二部分:高并发系统的可观测性 —— 监控、追踪、日志

分布式系统出了故障,如何快速定位?需要构建可观测性(Observability)三大支柱:指标(Metrics)、链路追踪(Tracing)、日志(Logging)。

12.1 指标监控(Prometheus + Grafana)
每个微服务暴露 /metrics 端点,Prometheus 定期拉取,存储时序数据,Grafana 可视化。

常用指标:QPS、延迟(P99)、错误率、CPU/内存/GC、线程池活跃数、MQ 积压量。

12.2 分布式链路追踪(SkyWalking、Jaeger)
通过为每个请求生成全局唯一的 Trace ID,记录调用链(Span)。可以查看请求经过哪些服务、耗时多久、在哪一步失败。

Spring Cloud Sleuth 集成示例:

spring:
  zipkin:
    base-url: http://zipkin:9411
  sleuth:
    sampler:
      probability: 1.0  # 采样率

在日志中自动注入 Trace ID,方便聚合查询。

12.3 日志收集(ELK Stack)
Filebeat 采集日志 → Logstash 过滤 → Elasticsearch 存储 → Kibana 搜索分析。

告警:基于 Prometheus Alertmanager 或 Kibana 的 Watcher,当错误率飙升或队列积压超过阈值时发送钉钉/邮件。
来源:
https://yvyus.cn/

相关文章
|
18天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
6835 30
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
3天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
605 138
|
3天前
|
人工智能 弹性计算 运维
阿里云发布堡垒机智能运维Agent,运维交互进入自然语言新时代
支持自然语言运维,提升效率与安全双保障。
1145 0
|
10天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
1171 1
|
13天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1272 3
|
11天前
|
人工智能 弹性计算 安全
阿里云618活动时间、活动入口、优惠活动详细解读
2026年阿里云618创新加速季已全面开启,作为年度力度最大的云产品促销活动,本次大促覆盖轻量应用服务器、ECS云服务器、GPU云服务器、数据库、AI算力、安全服务、CDN等全品类产品,推出5亿元算力补贴、新用户限时秒杀、普惠满减、企业专享、免费试用、云大使返佣等多重福利,个人开发者、中小企业、AI团队均可享受专属低价。本文将系统梳理2026年阿里云618活动的完整时间节点、官方参与入口、各类优惠细则、使用规则、热门产品推荐及实操代码,帮助用户精准参与、高效省钱,以最低成本完成上云部署。
982 5
|
9天前
|
人工智能 自然语言处理 安全
Vibe Coding 实战:别盲目跟风,先分清 vibe coding 适合什么场景
本文系统总结vibe coding实战经验:明确其适用场景(原型、小工具、标准化模块),剖析5步落地流程(场景判定→结构化提示词→目录初始化→分模块生成→自动化校验),指出四大常见误区,并推荐适配工具Trae。强调“场景匹配+规则前置”是提效关键,避免盲目套用。
806 1