尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

场景设计专项:营销短信推送系统设计

场景设计专项:营销短信推送系统设计 营销短信推送系统业务定位与整体设计框架核心知识点项目业务定位面向 B 端商户提供短信营销服务支持即时批量推送、定时人群推送支撑单日千万条短信下发。系统完整设计分层框架需求分析 → 业务模块分层 → 技术架构选型 → 核心推送流程 → 高并发 / 幂等 / 容错专项设计 → 数据存储方案 → 监控运维体系 → 系统扩容演进。系统设计核心目标高并发承载、消息不丢失、无重复短信、多通道故障自动切换、全链路数据可追溯。生活化举例可以把这套短信系统理解为一家大型短信代发服务商线下各类门店商户可以来后台创建营销活动既能立刻给客户发短信也能设定固定时间自动发送同时设置发送上限防止骚扰客户多家短信运营商备用某一家服务商故障自动切换每条发送记录完整留存方便核对。整体框架流程图系统需求拆解功能需求 非功能需求核心知识点系统需求分为两大类别功能性需求系统能做什么业务操作、非功能性需求系统运行质量标准功能性需求围绕商户、人群、活动、推送、通道、日志、运营看板七大业务域划分非功能性需求定义并发、可用性、延迟、一致性、扩展性、可观测六大运行约束。生活化举例以短信代发门店举例功能需求 门店能提供的全部服务商家入驻、筛选客户、定时发活动短信、多家短信渠道备用、查询发送记录非功能需求 门店服务标准高峰期一次性处理百万条短信、渠道坏了不影响发消息、客户操作页面响应快、所有发送记录不会丢失、后续可以新增短信服务商、出问题能快速查到原因。需求分类明细表格表 1 功能性需求清单业务模块包含功能商户管理商户入驻、短信额度配置、第三方通道密钥加密存储人群管理客户标签管理、多条件人群筛选、黑名单过滤活动管理创建即时活动、创建定时活动、绑定短信模板推送能力手动即时批量下发、定时自动批量下发通道管理多服务商通道接入、主通道故障自动切换备用通道流量防护商户总额度限制、单手机号发送频次限制、IP 访问限制消息容错消息自动重试、死信兜底补发、失败号码人工补发日志追溯按手机号 / 活动 / 时间查询完整发送记录运营看板推送总量、成功率、失败率、各通道数据统计展示表 2 非功能性需求清单性能维度约束标准高并发单日支撑千万条短信下发瞬时可承载百万条消息流量高可用单通道、单服务节点故障整体推送业务不中断低延迟批量任务分发速度快接口响应控制在 100ms 以内数据一致定时任务、消息消费保证消息不重复、不丢失可扩展新增短信服务商通道无需修改核心业务代码可观测全链路日志留存异常自动告警故障可快速定位五层业务代码分层架构设计核心知识点采用标准后端五层分层架构控制层、业务层、工具层、中间件封装层、存储层职责单一、代码解耦每层只处理自身职责范围内逻辑禁止跨层直接调用便于后期维护、迭代、单元测试中间件统一封装层是项目扩展关键点后续更换 Redis、MQ 等组件仅改动封装层不侵入业务代码。生活化举例类比快递网点分工前台接待控制层只负责接待客户、核对信息、收寄快递不处理分拣运输分拣班组业务层根据目的地、快递类型做分拣、安排配送路线核心业务处理通用工具组工具层称重设备、打印面单机器、信息脱敏工具全网点通用物流合作商对接组中间件封装层统一对接多家运输公司对外只提供一套标准发货接口仓库台账组存储层只负责录入、查询快递入库出库记录不参与分拣。分层职责明细表格分层名称核心职责内部包含模块控制层 Controller接收前端请求参数校验、鉴权、统一返回封装、全局异常捕获商户接口、活动接口、定时任务配置接口、推送触发接口、数据看板接口、通道配置接口业务层 Service实现全部核心业务逻辑业务规则判断、数据组装、多组件协同调用商户服务、人群筛选服务、活动调度服务、消息推送服务、统计看板服务工具层 Util通用静态工具无业务耦合全项目复用JWT 鉴权、密码加密、手机号脱敏、全局 MsgId 生成、Excel 导入导出、Lua 脚本工具、文件上传工具中间件封装层统一封装各类中间件操作对外提供标准工具方法Nacos 配置工具、Redis 缓存 / 锁工具、RabbitMQ 消息工具、Sentinel 限流熔断工具、ES 日志读写工具存储层 Mapper仅负责数据库、对象存储的数据 CRUD无业务逻辑MySQL 表操作、ES 日志操作、MinIO 素材文件操作分层调用流程图整体分布式技术架构选型核心知识点整体技术栈分为五大板块基础开发框架、微服务治理、缓存体系、消息队列、调度 / 存储 / 监控运维每个中间件对应解决系统特定问题选型完全匹配前文功能、非功能需求采用微服务分布式架构支持水平扩容、多组件协同完成千万级短信推送能力。生活化举例类比大型物流中心整套配套设施基础框架 园区通用办公系统Nacos 园区总调度台统一登记所有网点、同步配送规则Sentinel 园区安检闸机限制货物流量、异常线路临时封闭二级缓存 园区临时周转货架减少仓库反复调取RabbitMQ 货物中转分拣流水线削峰缓冲大批量货物Quartz 定时配送班车定点发车MySQLES 纸质台账 电子档案库冷热数据分开存放Docker、ELK 标准化货车、全程监控摄像头。完整技术栈明细表格技术分类组件解决的业务问题基础开发框架SpringBoot、SpringCloud、MyBatis、QLExpress、Quartz项目基础开发、数据库操作、人群筛选规则解析、定时任务执行微服务治理Nacos、Sentinel、Seata (可选)注册中心、动态配置热更新、限流熔断、分布式事务缓存体系Caffeine 本地缓存 Redis 分布式缓存减轻 DB 压力、分布式锁、幂等标记、限流、过滤无效手机号消息队列RabbitMQ异步削峰、消息重试、死信兜底避免高并发压垮服务分层存储MySQL、Elasticsearch、MinIO热业务数据、海量明细日志、批量人群文件 / 素材存储监控运维ELK、SkyWalking、Docker Compose全链路日志、链路追踪、本地标准化开发环境分布式架构分层流程图缓存体系设计CaffeineRedis 二级缓存核心知识点二级缓存分层逻辑进程内本地缓存 Caffeine 作为一级缓存Redis 分布式缓存作为二级兜底缓存Caffeine 优势纯内存操作、无网络 IO读写性能远高于 Redis采用 LRU 淘汰策略Redis 承担分布式场景能力分布式锁、布隆过滤器、滑动窗口限流、幂等标记、额度计数器配套缓存优化方案布隆过滤器防穿透、分布式锁防击穿、过期时间随机偏移防雪崩。生活化举例线下便利店双层储物区收银台手边小货架Caffeine 本地缓存热销商品随手可取不用去仓库速度极快门店后方大仓库Redis存放全部商品全门店所有收银台共用门口黑名单告示布隆过滤器顾客要不存在的商品直接拒绝不用翻仓库限量爆款限购锁分布式锁同一时间只允许一人调取库存防止超卖击穿仓库商品保质期错开随机过期时间不会所有商品同一天过期仓库瞬间查询拥堵。二级缓存工作流程Redis 各类业务用途对照表Redis 功能模块业务场景作用说明分布式锁Quartz 定时任务集群调度保证同一定时任务仅单个节点执行避免重复生成短信布隆过滤器手机号校验提前过滤黑名单、无效空号减少 MySQL 无效查询Lua 滑动窗口限流流量防护控制单手机号、商户、IP 每日短信发送上限防刷防骚扰MsgId 幂等标记MQ 消息消费记录已下发短信唯一标识避免重复推送同一营销短信额度计数器商户管理统计商户当日已发送短信数量到达阈值停止下发会话存储商户后台登录存储商户登录 Token实现登录态维持RabbitMQ 消息队列设计异步削峰 重试 死信核心知识点引入 RabbitMQ 核心目的同步下发转异步处理实现流量削峰填谷避免批量活动压垮服务线程池队列分层设计业务正常推送队列 死信重试队列两套队列隔离消息可靠性三重保障生产者确认、消息持久化、消费者手动 ACK重试机制分级消费本地最多 5 次重试多次失败转入死信队列死信任务定时 3 轮兜底重试全局唯一 MsgId 作为幂等标识所有消息携带该标识杜绝重复下发。生活化举例快递中转站分拣流水线前台下单窗口业务接口客户一次性寄上千件快递不会当场分拣主分拣流水线业务队列快递统一堆放分拣员匀速处理不会瞬间拥堵派送失败包裹存放区死信队列地址错误、电话打不通的包裹单独存放不占用主线派送规则同一包裹最多上门派送 5 次5 次没人签收放到失败存放区每晚统一再试 3 轮联系收件人快递单号MsgId每件快递唯一编号避免重复派送同一包裹。消息完整流转流程图RabbitMQ 功能场景对照表队列类型使用场景设计作用业务推送队列正常待下发短信消息承载异步削峰平缓处理批量营销活动流量死信重试队列本地 5 次下发失败消息存储不阻塞主线业务统一兜底重试可靠性机制实现方式解决问题生产者确认 confirm投递消息后等待 MQ 返回 ACK防止消息投递中途丢失消息持久化队列、消息均开启持久化存储MQ 服务宕机消息不会清空消费者手动 ACK下发成功后再确认删除消息消费过程服务崩溃消息自动重回队列分布式定时调度方案Quartz 持久化任务 Redis 分布式锁核心知识点SpringTask 原生缺陷内存级任务、集群多节点会重复执行、服务重启任务丢失、无法可视化管理Quartz 核心能力任务持久化到 MySQL、支持动态增删改任务、多维度定时规则配置Redis 分布式锁作用集群环境下保证同一个定时任务同一时间仅单个节点执行锁超时 TTL 机制防止服务宕机导致死锁保障调度持续可用与业务联动定时任务执行完成后批量生成短信消息投递 RabbitMQ。生活化举例连锁门店统一定时大扫除计划旧方案SpringTask每家分店单独设置闹钟到点所有分店同时打扫同一批客户活动数据重复劳动门店关机后打扫计划直接消失新方案Quartz 台账所有打扫计划统一登记在总台账MySQL 持久化店长后台随时修改打扫时间、新增计划分布式锁专属钥匙打扫前必须领取唯一钥匙拿到钥匙的分店执行人群筛选生成短信其余分店直接跳过钥匙过期机制分店打扫中途断电关门钥匙超时自动归还不会锁住任务导致当天不执行。定时任务完整流转流程图方案对比表格方案集群重复执行任务丢失动态修改任务原生 SpringTask会重复执行服务重启丢失必须重启服务生效Quartz Redis 分布式锁完全杜绝重复执行MySQL 持久化永不丢失后台实时修改无需重启服务Sentinel 限流熔断 多短信通道故障切换设计核心知识点Sentinel 两大核心能力流量限流、服务熔断降级三层限流维度单手机号发送频次、商户每日短信总额度、客户端 IP 访问限流熔断机制逻辑统计第三方短信通道错误率、超时率达到阈值自动熔断隔离多通道路由策略Nacos 配置维护多服务商通道权重、优先级通道熔断后自动切换备用线路半开探测熔断冷却周期结束后少量流量试探通道恢复正常则重新启用。生活化举例外卖多配送服务商调度限流规则单个顾客一天最多收 5 条营销短信、单商家每日有固定配送上限、恶意高频访问 IP 限制下单避免资源被占用通道熔断某配送团队大量订单超时、丢单系统暂时不再派单给该团队多备用渠道同时对接多家配送商主渠道故障自动分流订单给其他团队半开探测暂停派单一段时间后少量订单测试该配送商是否恢复运力正常后恢复使用。流量校验与通道路由流程图方案对比表方案存在问题优化后效果无 Sentinel 单通道爬虫刷接口、单通道故障全体业务阻塞三层限流拦截恶意流量通道故障自动切换Sentinel 多通道无备用线路熔断后业务中断多服务商通道无感切换不中断推送冷热分层存储设计 MySQL Elasticsearch核心知识点冷热数据划分标准 热数据业务高频查询、需要实时更新的简短状态数据 冷数据海量完整明细日志检索频次低、数据量大无需频繁更新。MySQL 只承载热业务数据避免大表海量日志拖垮数据库 IOElasticsearch 专门存储短信全量下发明细依靠倒排索引实现多条件快速检索采用独立日志 MQ 异步批量写入 ES和短信下发主业务完全解耦不阻塞推送流程ES 配置索引生命周期管理按天分索引自动清理过期日志控制磁盘占用。生活化举例商铺记账分层存档前台小账本MySQL 热数据只记录订单号、手机号、发送结果等简短信息日常快速查询是否发送成功仓库档案柜ES 冷数据存放每条短信完整回执、错误码、调用耗时等详细记录档案按日期分盒子存放超过 7 天的档案自动清理专职归档员日志 MQ店铺营业结束后统一整理单据存入档案柜不影响前台接待顾客。数据写入与查询流转流程图存储分工对照表存储组件存储内容适用场景核心优势MySQL商户、活动、人群、短信精简推送记录、黑名单日常业务状态查询、商户额度统计、活动管理支持事务、稳定可靠适合高频更新短字段数据Elasticsearch每条短信完整下发明细、渠道回执、报错详情故障排查、批量明细导出、多维度模糊检索海量数据检索毫秒级响应支持复杂多条件筛选MinIO人群批量导入 Excel、短信营销图片模板文件上传下载、素材存储对象存储不占用数据库磁盘支持大文件优化前后对比优化前日志全量存 MySQL 单表优化后冷热分层存储单表千万级数据多条件检索耗时 40s 以上多条件明细检索 20ms 左右每日日志新增 12G 磁盘磁盘持续告警MySQL 磁盘占用减少 90%日志同步写入主业务链路瞬间打满数据库 IO日志异步写入 ES完全不影响短信下发性能无法自动清理历史数据需手动删表ES 索引生命周期自动清理过期日志Nacos 配置中心热更新设计核心知识点Nacos 两大核心能力注册中心、配置中心本模块聚焦配置管理能力统一托管全业务可变配置短信通道信息、限流阈值、推送额度、重试次数、ES 索引过期时间等SpringBootRefreshScope注解实现 Bean 动态刷新修改配置无需重启服务Namespace 环境隔离dev 开发、test 测试、prod 生产三套环境配置完全隔离互不干扰敏感配置加密存储短信通道 API 密钥加密存放避免明文泄露风险。生活化举例连锁奶茶店统一价目后台所有门店统一线上电子价目表Nacos 配置包含单品价格、每日限购数量、供应商联系方式总部后台修改价格、限购规则所有门店收银设备实时同步生效不用每家门店重启机器门店区分测试样板间、正式营业区Namespace测试修改价格不会影响线上顾客供应商对接密码加密保存门店员工看不到原始密钥。配置托管内容清单表配置分类存放内容短信通道配置通道地址、加密密钥、权重、熔断阈值、备用通道列表流量限流配置单手机号日发送上限、商户总额度、IP 限流阈值消息重试配置本地最大重试次数、死信每日兜底轮次存储运维配置ES 日志自动清理天数、缓存随机过期偏移时长优化前后对比改造前硬编码 / 本地 yml 配置改造后Nacos 动态配置修改参数需要重新打包、重启服务耗时 30 分钟左右控制台一键发布1 秒全服务生效无需停机开发 / 测试 / 生产共用一份配置容易误改线上参数Namespace 隔离三套环境配置完全独立密钥明文写在配置文件上传代码仓库存在泄露风险Nacos 支持配置加密密钥不透明文多服务实例需要逐个修改本地配置维护成本高一处修改所有集群实例同步更新JVM 堆内存参数调优方案核心知识点JVM 堆核心参数 Xms、XmxXms 为堆初始内存Xmx 为堆最大内存XmsXmx 可消除运行时堆扩容带来的 STW 停顿。堆分区划分Eden 区、Survivor 区、老年代短期业务对象优先分配 Eden长期存活对象晋升老年代。GC 分类与影响Minor GC 回收新生代、Full GC 回收整个堆Full GC 会产生长时间全局暂停直接造成接口卡顿。配套排查能力开启 GC 日志持久化、OOM 自动 dump 堆快照用于离线分析内存泄漏、频繁 GC 问题。监控老年代内存水位提前发现内存持续上涨隐患避免服务卡死宕机。生活化举例办公储物间规划XmsXmx储物间一开始就给到固定最大面积不用中途扩建扩建时全员停工等待的卡顿现象消失Eden 区临时快递、短期单据存放区占储物间 1/3 空间频繁清理老年代长期存档文件存放区清理频率很低GC 日志 OOM dump每次打扫全程记录清单储物间堆满时自动留存全部物品方便事后排查堆积原因。内存分配与 GC 流转流程图调优前后指标对比表指标维度调优前Xms 远小于 Xmx无日志调优后固定堆 新生代配比 日志 dump日均 Full GC 次数15 次0~1 次GC 总停顿时长高接口频繁随机卡顿停顿时长下降 92%堆扩容 STW 停顿持续发生完全消除内存故障排查无日志难以定位GC 日志 堆快照快速定位泄漏点常见线上痛点Xms Xmx业务流量上涨时 JVM 反复扩容堆内存每次扩容触发 STW接口出现周期性延迟新生代内存过小Eden 快速填满Minor GC 频繁持续占用 CPU影响消息消费速度未开启 GC 日志、dump 文件发生 OOM、长时间 Full GC 时无任何排查依据存在内存泄漏老年代内存持续上涨无人预警最终服务卡死宕机。落地调优方案统一配置 Xms Xmx固定堆内存杜绝运行期堆扩容新生代设置为堆总内存 1/3提升短期消息对象容纳量减少 Minor GC 频率启动参数开启持久化 GC 日志记录每次 GC 耗时、回收内存大小、停顿时间配置 OOM 触发时自动 dump 堆快照文件留存现场用于离线分析接入监控面板持续观测老年代内存增长曲线设置水位告警。Docker Compose 容器化标准化环境核心知识点Docker 镜像作用将项目代码、运行依赖打包成统一镜像环境与代码绑定保证运行环境一致。Docker Compose 能力通过 yaml 文件一键编排 MySQL、Redis、RabbitMQ 等全套中间件一条命令拉起完整开发环境。环境标准化价值开发、测试、预发、生产使用相同镜像与中间件版本消除 “本地正常线上报错” 兼容问题。轻量化部署新人无需手动下载、安装、配置各类中间件降低环境搭建成本。环境可复用配置文件提交代码仓库团队所有人共用一套环境脚本。生活化举例连锁门店标准化后厨套装 改造前每个厨师单独采购烤箱、冷藏柜版本新旧不一做出来成品有差异新人入职花 4 小时逐个安装调试设备。 改造后总部提供成套标准化设备集装箱集装箱内置烤箱、冷藏柜、操作台对应业务镜像 全套中间件容器开箱即用10 分钟全部设备启动完成全国所有分店设备型号完全相同出品标准统一不会出现奇怪故障。环境搭建流程对比流程图两种搭建方式对比表格对比维度传统手动搭建环境Docker Compose 容器化方案新人搭建耗时4 小时左右10 分钟中间件版本差异开发、测试环境版本混乱全环境统一固定版本重复配置工作量每位开发重复安装配置一份脚本全团队复用环境兼容 Bug每月频繁出现全年无版本兼容故障环境迁移成本换电脑需全部重装复制 yaml 文件即可一键重建落地实现方案编写项目 Dockerfile打包 SpringBoot 业务服务为镜像编写 docker-compose.yml统一定义 MySQL、Redis、RabbitMQ 容器参数、端口、持久化挂载目录锁定所有中间件固定版本禁止本地随意升级提供启动、停止、清理脚本简化操作测试、预发环境复用相同镜像部署保证线上线下环境无差异。系统完整核心推送全链路流程定时营销活动主线核心知识点整合前面所有组件Quartz 定时任务、Redis 分布式锁、QLExpress 人群筛选、MsgId 全局唯一标识、RabbitMQ 异步队列、Sentinel 限流熔断、多短信通道、冷热分层存储、幂等校验、死信兜底重试整套链路串联区分两大推送分支即时短信推送、定时营销短信推送定时活动是系统流量最大的场景全链路每一步都配套容错、幂等、性能优化方案不存在单点短板全链路埋点链路追踪所有操作生成唯一 TraceId日志统一归集便于问题排查。生活化举例商超定时营销短信完整流程运营提前配置好周末促销活动、目标客户群体、发送时间创建活动入库到预定时间所有分店调度员同时收到提醒只有抢到专用钥匙的调度员才处理客户名单分布式锁筛选有效会员过滤黑名单客户布隆过滤器给每一位客户生成唯一活动编号 MsgId批量把待发送单据送入分拣流水线 RabbitMQ前台不用当场处理分拣员拿单据前先查登记本已经发送过的客户直接跳过幂等限制单个客户、单商户每日接收短信数量三层限流优先联系合作运营商发送运营商故障自动切换备用渠道发送成功简单记录台账 MySQL完整通话回执存入档案库 ES发送失败最多重试 5 次依旧失败单独存放夜间统一再次重试 3 轮最终失败人工补发。全链路完整流程图链路各环节对应技术方案汇总表流程环节使用组件解决的核心问题定时活动触发Quartz Redis 分布式锁集群重复生成短信、任务丢失手机号过滤布隆过滤器、QLExpress 规则引擎无效号码穿透数据库、精准人群筛选消息投递削峰RabbitMQ 业务队列、消息持久化、生产者 ACK高并发压垮服务、消息丢失重复下发拦截Redis MsgId 幂等校验同一用户收到多条相同营销短信流量管控Redis Lua 三层限流商户超限、恶意刷短信消耗额度通道容错切换Sentinel 熔断 多服务商通道单通道故障导致全部推送阻塞数据分层存储MySQL 热记录 ES 明细日志大表查询缓慢、磁盘占用过高失败兜底本地 5 次重试 死信 3 轮补发网络波动、通道临时故障导致短信丢失底层基础保障Nacos、Docker、JVM 调优配置修改重启、环境不一致、GC 卡顿MySQL 核心业务数据表结构设计核心知识点分库分表策略当前业务量级单库单表可支撑暂不做分库分表仅推送简表随业务增长可按月分表缓解数据压力。冷热数据分离设计MySQL 仅保存业务热数据完整明细日志不存入 MySQL交给 ES 存储。表设计规范主键自增 / 雪花 ID、状态字段统一枚举、创建 / 更新时间、逻辑删除标识便于业务统计与软删除。关联关系商户一对多活动、活动一对多推送记录、商户一对多短信通道。生活化举例门店台账分类登记商户台账merchant 表记录合作商家基础信息、每月短信发送额度渠道合作台账sms_channel 表登记所有短信运营商对接地址、密钥、优先级营销活动登记本sms_activity 表商家创建的每一场营销活动、下发时间、筛选人群客户发送简记台账sms_record 表仅简单记录哪个号码、哪场活动、发送成功与否详细回执单独存档黑名单记录本black_list 表不愿接收营销短信的客户手机号每次筛选自动过滤。核心数据表说明表表名核心作用核心关键字段说明merchant 商户表存储入驻商户基础信息、短信额度merchant_id (主键)、商户名称、daily_limit 日发送额度、channel_secret 加密渠道密钥、status 商户启用状态、create_timesms_channel 短信通道表存储第三方短信服务商对接配置channel_id、channel_name、api 地址、密钥、weight 权重、circuit_breaker_threshold 熔断阈值、enable 状态sms_activity 营销活动表存储即时 / 定时营销活动配置activity_id、merchant_id、crowd_id 人群 ID、template 短信模板、send_time 定时下发时间、activity_status 活动状态、is_timed 是否定时活动crowd 人群表存储商户自定义筛选人群规则crowd_id、merchant_id、rule_content QLExpress 筛选规则、crowd_name 人群名称sms_record 短信推送简表存储每条短信精简下发状态热数据msg_id 唯一主键、phone 手机号、activity_id、channel_id、send_status 下发状态、send_time 发送时间无详细回执内容black_list 黑名单表存储拒绝营销短信的手机号id、phone、black_type 拉黑类型、expire_time 拉黑失效时间关键设计规范逻辑删除所有业务表统一使用 is_deleted 字段不物理删除数据方便数据对账与恢复时间字段每张表统一 create_time、update_time自动填充用于统计、排查状态枚举活动状态、发送状态、商户状态使用数字枚举减少字符串存储开销索引设计sms_recordmsg_id 唯一索引、phone 普通索引、activity_id 联合索引满足查询状态sms_activitymerchant_id 索引快速查询商户名下所有活动black_listphone 唯一索引人群筛选快速匹配黑名单。系统监控、告警与运维配套方案核心知识点系统分为业务指标、中间件指标、服务 JVM 指标三类监控维度覆盖业务、中间件、应用三层全链路观测体系ELK 收集日志、SkyWalking 实现分布式链路追踪快速定位异常请求告警通道统一接入钉钉配置多阶梯告警规则区分普通预警与严重故障内置自动化运维能力减少人工干预包含配置动态更新、日志自动清理、失败短信人工补发等功能。生活化举例大型商超运营监控中心营业数据看板业务监控指标当日营销短信发送总量、成功率直观判断活动效果设备监控面板中间件 / JVM 指标流水线堆积货物数量、仓库存储空间、设备清扫频率GC故障报警喇叭钉钉告警发送成功率过低、流水线堵塞、设备频繁故障自动推送消息给运维人员自动化管理工具价目表线上修改不用停机、过期单据自动清理、失败订单后台一键补发。监控指标分类明细表格1. 业务监控指标指标名称监控意义告警阈值参考短信发送总量 / 成功率判断营销活动是否正常下发成功率低于 90% 触发告警各通道发送占比监控通道负载均衡、单通道故障某通道流量突降 50% 预警失败短信数量识别批量下发异常每分钟失败量超 200 条预警2. 中间件监控指标组件监控指标告警阈值参考RabbitMQ消息堆积数量、消费速率、队列长度堆积超过 5000 条触发告警RedisCPU 使用率、内存占用、连接数CPU 持续高于 80% 预警MySQL慢查询、连接数、磁盘使用率磁盘占用 90% 预警Elasticsearch索引存储、分片健康状态分片异常、磁盘爆满告警3. 应用服务 JVM 指标指标名称监控意义告警阈值参考Full GC 频次判断内存是否存在泄漏、堆分配不合理单日 Full GC 超过 5 次预警堆内存使用率监控内存水位提前预防 OOM堆内存持续 90% 占用告警接口 QPS、平均响应时间识别接口卡顿、流量突增接口响应超 100ms 持续告警全链路观测流程自动化运维能力清单Nacos 动态配置通道参数、限流阈值线上修改无需重启服务ES 索引生命周期管理7 天自动清理过期明细日志控制磁盘容量失败消息管理后台支持按活动、手机号批量导出失败号码、手动补发Docker Compose 一键启停全套开发环境标准化本地调试日志分级存储ERROR 级日志重点检索INFO 日志短期留存。系统扩容与长期演进规划核心知识点按照业务增长分为三个阶段短期扩容、中期微服务拆分、长期异地多活架构短期扩容不改动代码仅横向扩容实例、中间件分片快速支撑流量上涨中期基于业务域拆分微服务解除模块耦合各业务独立扩容迭代长期多机房异地部署实现机房级故障容灾支撑超大规模商户体量每阶段配套对应的中间件、存储同步扩容改造方案。生活化举例快递网点扩张规划短期旺季扩容分拣流水线加派人手、新增周转货架不用改造门店结构中期业务拆分把收件、分拣、派送、客户售后拆成独立片区互不干扰长期多地分中心省内多个城市建立分拣总仓一处仓库停工其他仓库承接业务不影响整体配送。分阶段扩容方案表格阶段 1短期快速扩容单日千万短信流量临时暴涨扩容对象改造方案作用RabbitMQ 消费服务新增消费实例节点线性提升消息处理速度缓解消息堆积提升下发吞吐量Redis增加 Redis 分片拆分缓存 key分摊 CPU 与内存压力避免单节点内存爆满、CPU 打满服务实例横向复制推送、活动服务实例Nacos 自动注册负载均衡分摊接口与消费请求压力通道资源Nacos 新增第三方短信通道配置分流单通道流量防止单通道过载、触发运营商限流阶段 2中期微服务拆分商户量持续增长模块耦合严重拆分方向拆分内容收益商户管理服务独立商户信息、额度、渠道配置相关逻辑商户相关操作独立扩容不占用推送资源活动调度服务独立人群筛选、定时任务调度模块营销批量计算不影响短信下发消费消息推送服务单独承载 MQ 消费、通道下发核心逻辑推送能力可无限独立扩容统计看板服务单独处理数据聚合、报表计算报表查询不占用核心下发数据库 IO阶段 3长期异地多活架构超大商户体量机房容灾需求多机房独立部署整套服务集群Nacos 跨机房注册发现短信通道按机房隔离分配流量单机房故障流量切至备用机房MySQL 主从同步跨机房数据ES 集群多机房分片部署关键定时任务多机房冗余调度保证极端故障不丢失推送任务。扩容演进流程图营销短信推送系统整体知识总结核心知识点整套系统完整设计链路需求定义 → 五层代码分层 → 分布式技术栈选型 → 各中间件专项设计 → 全业务推送主流程 → 四大稳定性专项方案 → 数据库表设计 → 监控运维 → 分阶段扩容演进所有中间件各司其职互相配合解决高并发、重复消息、消息丢失、服务故障四大线上核心痛点整套架构设计思想异步解耦、分层隔离、冷热分离、多级兜底、可观测、平滑扩容。生活化整体类比整套系统类比大型商超短信营销服务中心需求商家可以创建即时 / 定时营销短信限制发送额度多供应商备用发送记录可查询分层分工前台接待、业务分拣、通用工具、第三方渠道对接、台账登记每层职责独立配套设施临时货架二级缓存、分拣流水线RabbitMQ、定时配送班组Quartz、安检限流闸机Sentinel、线上统一调价后台Nacos完整流程定时活动生成客户名单 → 过滤无效客户 → 流水线分批发送 → 限流校验 → 多渠道分发 → 失败包裹单独重试兜底保障多层防重复机制、多级消息重试、故障渠道自动切换数据存储简易台账 MySQL、详细档案 ES运维监控全流程监控大屏异常自动报警扩张规划短期加人手、中期拆分业务片区、长期多地分中心容灾。全模块技术作用汇总表模块名称核心解决问题五层业务分层架构代码解耦、职责单一便于迭代维护CaffeineRedis 二级缓存降低 DB、中间件压力防穿透 / 击穿 / 雪崩RabbitMQ 异步队列高并发削峰消息分级重试、死信兜底防丢失QuartzRedis 分布式锁集群定时任务不重复执行任务持久化不丢失Sentinel 限流熔断 多短信通道拦截恶意流量通道故障自动切换提升可用性MySQLES 冷热分层存储减轻数据库压力海量明细快速检索Nacos 配置中心配置热更新无需重启服务多环境隔离JVM 内存调优减少 GC 停顿避免 OOM保障消费稳定Docker Compose统一标准化开发环境消除环境兼容问题完整定时推送全链路串联所有组件实现定时营销完整业务闭环四大稳定性专项方案根治并发雪崩、重复短信、通道故障、消息丢失MySQL 数据表设计规范热数据存储索引优化查询效率监控告警运维体系系统全链路可观测故障快速感知处理分阶段扩容演进方案随业务体量平滑升级架构避免过度设计核心设计思想梳理异步优先批量推送全部异步化不阻塞主线程抵御瞬时大流量多层兜底消息本地重试、死信队列重试、人工补发三级兜底最大程度避免短信丢失全链路幂等从任务生产到消息消费多层拦截彻底杜绝重复短信冷热数据隔离高频短状态存 MySQL海量明细日志异步存入 ES故障隔离通道熔断、服务集群化单点故障不影响整体业务可观测性日志、链路、业务指标全方位监控异常自动告警平滑扩容分短期、中期、长期渐进式升级架构无需推翻重构。
返回列表