高并发短信平台实现

2023-10-27

01、短信介绍

在项目介绍的时候,已经定义了austin项目的核心功能:发送消息

我认为,短信是在一整个消息推送平台里最重要的一个消息类型了(毕竟关联了很多重要的业务场景),想想我们日常使用APP时的场景:

  • 验证码:登录注册、支付等等重要场景
  • 通知类:用户订单信息、重要信息通知用户、重要信息通知商家等等场景
  • 营销类:运营在特定时间内发送营销短信,影响业务的KPI指标完成(不过这个相对就没那么重要)
  • ...

(试想下,如果系统挂了10分钟,会怎么样)

发送短信在消息推送平台里比较容易实现的一种消息类型了,我会在这篇文章中让你体会发送消息如果要做得比较好也并没有那么的简单和容易,以及能够体会到为什么我在介绍austin项目的时候需要引入那么多的中间件

(一切从一条短信开始)

02、发送短信必要准备

隔着上次的系统架构图也有好几天了,先复习下我们austin系统的整个流程

由于是初步实现,所以我先开个接口直接调用austin-handler模块,只要在austin-handler模块下实现发送短信的逻辑就好了。

我们要发送短信,一般直接接入短信渠道商就好了。以我的理解,发短信的过程是这样的:

正好前几天在群里,有个兄弟的就是在公司做短信渠道商的相关业务的。他说接口有20W QPS并发量(之前在搞各种的中间件优化避免消息的堆积),他进去了才知道发送一条短信原来是会经过这么多的流程(我复制下他原话

我现在才知道,原来一条短信发到我们手机,经过了不知道多少流程,包括黑名单检查风控检查,关键字检查,退订检查,模板检查,客户账号检查,路由网关检查,通道检查,状态报告检查,运营商检查。。。。。。。

一般我们要去评估是否使用某短信渠道商来发送,考量的点有两个:成本和成功率。这里应该还是比较好理解的,短信渠道商有很多,他们都需要赚钱,我们作为接入方需要省钱(那自然就有有价格的差异性)。如果某一个渠道商又便宜发送成功率又高,那当然用他作为主要渠道啊!

这次我选择的是腾讯云作为austin项目下初步发送短信的渠道商。

我这次选择的理由很简单:我进去短信产品了以后,他免费给了我100条发送短信的体验卡(应该是人人都有的?我不可能是天命之子吧)。

我发现有很多小伙伴在跟着我的步伐在做的,我肯定不能把自己的短信账号和密码直接公开给大家体验的。所以到时候你们感兴趣可以用自己的账号体验一波。

麻烦@腾讯云给我打下广告费。@阿里云貌似有?(但入口太难找,罢了)@华为云我还没登录体验过,等等我!

想要发送一条短信又或是接入一个短信渠道商必不可少的两个点:短信模板短信签名。看不懂?没事,我以具体的一条测试短信为例:

有了短信签名可以让用户知道这可能是谁发过来的短信,有了短信模板可以让发送垃圾短信的概率大大减少。

有人可能就会问了:那我每发一条短信,都需要有对应模板的话,那我维护起来不就非常麻烦?这毕竟是一个推送平台啊!每次有业务需要发送新的文案,还得去对应的渠道商后台申请模板吗?

本来我以为这是正常的,没想到,如果你是公司的话,还能谈的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高并发短信平台实现 的相关文章

随机推荐

  • 学python需要注意什么-雷林鹏分享:学习python中的需要注意的几点事项

    本文章向大家介绍数据库的DML与DQL语句 主要包括数据库的DML与DQL语句使用实例 应用技巧 基本知识点总结和需要注意事项 具有一定的参考价值 需要的朋友可以参考一下 1 python 中的 and 从左到右计算表达式 若所有值均为真
  • Android ApiDemos示例解析(79):Graphics->SensorTest

    本例SensorTest和例子Android ApiDemos示例解析 61 Graphics gt Compass在绘图方面的介绍基本一样 我也不知道为什么Google 再把这个SensorTest还是归在Graphics 目录下 本例着
  • 云环境openEuler 20.03 Arm 系统 GPGcheck 报错

    云环境openEuler 20 03 Arm 系统 GPGcheck 报错 最近在云上测试鲲鹏开发工具时 遇到安装软件时报 GPG check Failed 的问题 类似问题 经测试后初步判断 出现该问题的主要原因是 华为云上 openEu
  • 一维卷积(1D-CNN)、二维卷积(2D-CNN)、三维卷积(3D-CNN)

    一维卷积神经网络 1D CNN 一维卷积常用在序列模型 自然语言处理领域 假设输入数据维度为8 filter维度为5 不加padding时 输出维度为4 如果filter的数量为16 那么输出数据的shape就是 二维卷积神经网络 2D C
  • 下载js

    download url params fileName return axios url url method post params responseType arraybuffer then res gt const content
  • 代码扫描工具之Klocwork

    代码扫描工具之Klocwork Klocwork 简介 Klocwork 指导文档 全量代码扫描 增量代码扫描 Pull Request Klocwork 简介 Klocwork is a static analysis tool used
  • 自己琢磨的 图像相似度算法 JAVA版实现

    最近有个项目里要整理缩略图和原图是否匹配 然后就去找工具和方法做了 之后很好奇图像相似度是怎么算的 google了下貌似很深奥 而且无最简单的例子java代码源码下载 估计图形学的人不削用java吧 个人从来没有研究过图像学 也没看过什么论
  • Qt之qss文件编写

    一 详细参考 http doc trolltech com 4 6 stylesheet reference html 二 Qt Stylesheets Tutorial Stylesheets add spicy flavor to yo
  • 大龄单身,这些人真作。

    大家好 我是北妈 0 前些天想办法给一亲戚弟弟介绍个妹子 弟29 妹子28 两人基本恋爱0经验 皇帝不急太监急 今天两人见面 随问之 弟弟答曰 还可以 就是不知说啥 妹子答曰 还可以 到感觉不太合适 感觉不太爱说话 自己就不太爱说话 想找一
  • 关联分析——关联规则应用及案例

    数据挖掘最早使用的方法是关联分析 主要应用于零售业 其中最有名的是售货 篮分析 帮助售货商制定销售策略 数据挖掘是从海量的数据里寻找有价值的信息和数据 数据挖掘中常用的算法有 关联规则分析法 解决事件之间的关联问题 决策树分类法 对数据 和
  • 大数据--python远程连接Hive

    步骤 启动metastore 启动hiveserver2 使用beeline进行连接测试 查看地址等是否能够成功连接 确认无误可以跳过 使用python连接hive 粗暴的文件配置以及完整操作见文末 一 启动hiveserver2 1 配置
  • springboot应用无故停止运行killed解决方法

    最近使用springboot开发了一个ip代理的程序 今天放到阿里云服务器上运行 多次出现应用运行突然停止的问题 使用free h 查看内存使用完全正常 重新运行监视CPU使用也正常 没有出现堆内存溢出 栈内存异常 内存异常等信息 百思不得
  • 电力系统故障分类数据生成模型(基于simulink仿真批量生成故障数据)

    电力系统是发电 输电 配电和利用系统的组合 简而言之 电力系统是任何电气系统的心脏 在电力系统中 故障或故障电流是任何异常电流 由于此类故障 整个系统可能会损坏并最终崩溃 这项工作的目的是将故障自动分类为 11 个故障类别之一 其中包括平衡
  • 彻底弄懂二叉树的先序、中序、后序三种遍历与做题

    最近有同学考计算机二级不懂树遍历的计算 就找上我解惑 作为老好人的博主的我 但是义不容辞的上来阐述了一番 先来官方的概念 树的遍历 是指对树中所有结点信息的访问 即依次对树中每个结点的访问一次且仅访问一次 分为 先序遍历 后序遍历 层次遍历
  • java ip地址转数字,java版ip地址与整数的互相转换

    在工作中可能会遇到将ip地址转为long型的整数 或者将十进制整数转换为ip地址的情况 下面介绍一种转换的方法 一 将ip地址转成long数值 将IP地址转化成整数的方法如下 1 通过String的split方法按 分隔得到4个长度的数组
  • 被骗几十万总结出来的Ddos攻击防护经验!

    转载地址 http www ijiandao com safe cto 15952 html 本人从事网络安全行业20年 有15年防ddos攻击防护经验 被骗了很多回 都说能防300G 500G 买完就防不住了 本文当然重点给大家说明 dd
  • Flask4:methods=[‘POST‘, ‘GET‘]

    从服务器上获取数据 用GET请求 前端把数据发给服务器 用POST请求 在 app route上 添加methods参数 这个参数是一个列表类型 可以传递多个 右键页面 检查 中
  • Vue3/ Vue3 和 Vue2 生命周期函数不同点 总结、Vue2 和 Vue3 里面父组件的生命周期顺序

    一 Vue3 x 和 Vue2 x 生命周期函数不同点 总结 Vue2 vue3 beforeCreate gt setup 开始创建组件之前执行 created gt setup 开始创建组件之前执行 beforeMount gt onB
  • 【满分】【华为OD机试真题2023 JS】简单的解压缩算法

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 简单的解压缩算法 知识点栈 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 现需要实现一种算法 能将一组压缩字符串还原成原始字符串 还原规则如下 1 字符后面加数
  • 高并发短信平台实现

    01 短信介绍 在项目介绍的时候 已经定义了austin项目的核心功能 发送消息 我认为 短信是在一整个消息推送平台里最重要的一个消息类型了 毕竟关联了很多重要的业务场景 想想我们日常使用APP时的场景 验证码 登录注册 支付等等重要场景