跳到主要内容

Whaleal SMS 云平台

这一章介绍 Whaleal SMS —— 一个托管式多渠道短信中转平台:把你在各家 CPaaS 的账号聚合成一套统一 API、一个统一后台。

这一章讲什么​

如果只是「调一家厂商的接口把短信发出去」,Quick SMS SDK 就够了 —— Spring Boot 快速开始 十分钟能跑通。

但业务做起来之后,事情通常不会停在一家厂商、一套密钥上:

  • 验证码走质量更好的国际通道,营销通知走成本更优的国内通道 —— 渠道分了场景,代码里就多出一套分支
  • 为了灾备冗余同时维护两家供应商 —— 换通道、加通道要改代码重新发版
  • 不同业务线历史上各自采购通道 —— 每套系统对接一套 API、维护一套 SDK
  • 出了故障要挨个登录各家后台看日志 —— 排障要在多个控制台之间来回核对
  • 密钥散落在各服务的配置文件里 —— 轮换一次密钥,改动面铺满整个仓库

Whaleal SMS 就是为这些「第二层问题」准备的。 它把底层 CPaaS 账号收进一个平台,向上暴露一套 API、一个后台、一份日志、一处分发规则。

和 Quick SMS 的关系​

两个产品是同一套引擎的两种交付形态,不是两套并行实现:

Quick SMS(SDK)Whaleal SMS(云平台)
形态开源 SDK,嵌进你的进程托管 SaaS,跑在我们的服务器上
你要提供各家厂商的密钥各家厂商的密钥(BYOL,仍然是你自己的账号)
你要维护版本升级、密钥配置、回调服务、日志只调一个 API
聚合与路由addChannel + failover 策略,写在你的代码里控制台点选绑定,权重/优先级实时可改,不用发版
观测自己接 SmsMetrics控制台统一日志、报表、路由链可视化
适合想完全自主可控、单团队单渠道多渠道、多业务线、想少写运维代码

平台内部的多厂商发信能力由 Quick SMS 提供 —— 你在 SDK 里能用到的适配器(国际 Twilio / Vonage / Infobip / MessageBird / Plivo / AWS SNS,国内阿里 / 腾讯 / 华为 / 云片 / 创蓝 / 容联 / 天翼云 / 火山引擎 等),在平台上同样可用,且新增一家适配器只需要在 SDK 里加实现,平台侧自动继承。

为什么值得多引一层​

前提说清楚:平台不卖短信、不经手资费。短信费用永远发生在你自己的 CPaaS 账户里,由供应商直接向你计费。你为平台付的是渠道管理能力的订阅费,不是短信条数的抽成。

在这个前提下,多引一层换来的是四件事:

1. 聚合路由:N 家的吞吐,一家的接口​

绑到同一个 API Key 上的多条渠道,平台自动做分发与容灾:

绑定方式平台行为
各渠道权重相等顺序主备 failover —— 按 priority 从小到大,健康时只用首选,失败才切换
各渠道权重不全相等平滑加权轮询 —— 健康时按权重比分发,失败时剩余渠道按 priority 顺序兜底

控制台里签发密钥时就能看到路由链预览(按渠道 priority 排序),权重和 priority 随时可调。这意味着:加一条渠道、把某条降为备胎、临时把某家摘出去,都是控制台操作,不需要改代码、不需要发版。

2. 统一观测:一处看到全部渠道​

多供应商最贵的成本是排障。平台把各家的回执归一成统一状态,集中在一份日志里:

  • 全渠道发送日志,可按渠道、状态、号码、时间窗筛选
  • 渠道质量对比(各家的提交/送达表现摆在一起看)
  • 送达状态归一 —— 你不用再记 Twilio 的 delivered 和 Vonage 的 expired 分别代表什么

3. 密钥收口:一次轮换,一处改​

厂商凭据在平台侧 AES 加密存储、永不回显完整密钥,发送时按请求解密后传入 SDK。轮换密钥是在控制台改一次,而不是翻遍所有服务的配置文件。

4. 接入成本:任何语言都能接​

平台开放 API 是纯 HTTP + JSON,没有 SDK 绑定。Java、Node.js、Python、Go、PHP 都能用同一套接口 —— 具体见 接入方式总览。

典型接入场景​

下面三个场景是平台最常被用到的形态。留意每个场景里「配置就能改」和「要改代码」的分界线 —— 那正是引入平台的价值所在。

场景一:验证码与营销消息分流​

                     ┌─ API Key「验证码」 ─► Twilio(国际,质量优先)
你的业务系统 ──► │
└─ API Key「营销」 ─► 本地区聚合商(成本优先)

做法:不为「场景」写代码分支,而是签发两个 API Key,各自绑定不同的渠道。业务侧只换密钥,路由规则在控制台维护。

什么时候改配置就够:临时把营销降级走备选通道、把某家摘出去观察、调整两家之间的分发比例 —— 都在密钥详情页改,不用发版。

场景二:单供应商灾备​

   API Key ─► 【priority=1, weight=1】Twilio ──失败──► 【priority=2】Vonage
(健康时只走这家) (仅主渠道失败时接管)

做法:两条渠道权重都填 1,priority 拉开。平台进入「顺序主备 failover」——健康时只用首选,失败才切备胎,不会两边各发一半。

要点:这是避免「故障期间一半用户收不到」最省事的做法。切换过程你在控制台的日志里能直接看到,不需要自己去猜是哪家出的问题。

场景三:多业务线统一治理​

   订单系统 ──┐
会员系统 ──┼──► Whaleal SMS ──► 各 CPaaS 账号(同一个集团的采购)
客服系统 ──┘ ▲
└─ 一套日志 / 一份报表 / 一个限速池

做法:各系统共用平台,但按业务签发各自的 API Key,绑定各自的渠道子集。好处有三:

  • 排障不用再问「这条短信是谁发的」—— 日志里有渠道、有状态、有 Key 归属
  • 供应商凭据只在一处维护,轮换一次到位
  • 限速统一在平台侧生效,不会某个系统把整个账号的配额打满

想直接上手?接入方式总览 是五步跑通第一条短信的最短路径。

能力边界(请先读这一段)​

这些不是免责声明,是选型前必须知道的边界,也决定了你的架构该把什么放在平台侧、什么留在自己系统里:

边界说明
BYOL渠道凭据是你自己 CPaaS 账户的。平台不提供、不出售短信通道
不经手资费短信费用由底层供应商直接向你计费,平台不加价、不抽成、不代收
不承诺送达平台负责把消息提交给供应商并归一回执,投递结果由底层通道决定
不存正文出于合规,短信正文不落库。你需要自行留存业务侧发送记录;平台只回传可对账的元数据(编码口径与计费条数)
不做请求去重平台不提供幂等键。超时后重发就是真发第二条 —— 详见 开放 API
模板/签名审核不在平台需要报备的模板与签名,由你在各 CPaaS 后台自行完成

平台协议里的原话是:「平台为 BYOL 多供应商统一管理平台:不售卖短信、不经手资费、不承诺送达、不改变底层链路。」做对外宣传和技术方案时,请沿用这个口径。

我该用哪一个​

你的处境建议
只用一家厂商,业务量稳定,团队有能力维护直接用 Quick SMS SDK,少一层依赖
这家厂商要换、或者要加一家做灾备用平台 —— 加渠道是控制台操作,不是发版
多条业务线各买了通道,想统一起来用平台 —— 一套 API 对接全部渠道
需要多语言系统共用短信能力(Java 之外还有 PHP/Go)用平台 —— HTTP 接口无语言绑定
需要极致的自主可控、数据完全不出自己的机房用 SDK 自建 —— 权重 / priority 的分发与容灾配置方式可参考渠道与路由配置
想先看看接入要花多少工夫直接读 接入方式总览,再看套餐与配额

本章导航​

  1. 接入方式总览 —— 三条路径怎么选,五步跑通第一条短信
  2. 控制台使用指南 —— 侧边栏每个页面解决什么问题
  3. 开放 API 参考 —— 鉴权、三个端点、错误码、重发红线
  4. 状态回调接入 —— 两条回调链路的区别,含 Spring Boot 接收示例
  5. 套餐与配额 —— 四档套餐、QPS 分层、用量对账
  6. 能力路线图 —— 已上线能力与规划中的能力
  7. 常见问题 —— 接入排错与对外口径

下一步:接入方式总览 · 返回 前言