聊聊「短信」渠道的设计与实现

这篇具有很好参考价值的文章主要介绍了聊聊「短信」渠道的设计与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有多久,没有发过短信了?

一、背景简介

在常规的分布式架构下,「消息中心」的服务里通常会集成「短信」的渠道,作为信息触达的重要手段,其他常用的手段还包括:「某微」、「某钉」、「邮件」等方式;

对于《消息中心》的设计和实现来说,在前面已经详细的总结过,本文重点来聊聊消息中心的短信渠道的方式;

聊聊「短信」渠道的设计与实现

短信在实现的逻辑上,也遵循消息中心的基础设计,即消息生产之后,通过消息中心进行投递和消费,属于典型的生产消费模型;

二、渠道方对接

在大部分的系统中,短信功能的实现都依赖第三方的短信推送,之前总结过《三方对接》的经验,这里不再赘述;

但是与常规第三方对接不同的是,短信的渠道通常会对接多个,从而应对各种消息投递的场景,比如常见的「验证码」场景,「通知提醒」场景,「营销推广」场景;

聊聊「短信」渠道的设计与实现

这里需要考虑的核心因素有好几个,比如成本问题,短信平台的稳定性,时效性,触达率,并发能力,需要进行不同场景的综合考量;

验证码:该场景通常是用户和产品的关键交互环节,十分依赖短信的时效性和稳定性,如果出问题直接影响用户体验;

通知提醒:该场景同样与业务联系密切,但是相对来说对短信触达的时效性依赖并不高,只要在一定的时间范围内最终触达用户即可;

营销推广:该场景的数据量比较大,并且从实际效果来看,具有很大的不确定性,会对短信渠道的成本和并发能力重点考量;

三、短信渠道

1、流程设计

从整体上来看短信的实现流程,可以分为三段:「1」短信需求的业务场景,「2」消息中心的短信集成能力,「3」对接的第三方短信渠道;

聊聊「短信」渠道的设计与实现

需求场景:在产品体系中,需要用到短信的场景很多,不过最主要的还是对用户方的信息触达,比如身份验证,通知,营销等,其次则是对内的重要消息通知;

消息中心:提供消息发送的统一接口方法,不同业务场景下的消息提交到消息中心,进行统一维护管理,并根据消息的来源和去向,适配相应的推送逻辑,短信只是作为其中的一种方式;

渠道对接:根据具体的需求场景来定,如果只有验证码的对接需求,可以只集成一个渠道,或者从成本方面统筹考虑,对接多个第三方短信渠道,建议设计时考虑一定的可扩展;

2、核心逻辑

单从短信这种方式的管理来看,逻辑复杂度并不算很高,但是很依赖细节的处理,很多不注意的细微点都可能导致推送失败的情况;

聊聊「短信」渠道的设计与实现

实际在整个逻辑中,除了「验证码」功能有时效性依赖之外,其他场景的短信触达都可以选择「MQ队列」进行解耦,在消息中心的设计上,也具备很高的流程复用性,图中只是重点描述短信场景;

3、使用场景

3.1 验证码

对于「短信」功能中的「验证码」场景来说,个人感觉在常规的应用中是最复杂的,这可能会涉及到「账户」和相关「业务」的集成问题;

验证码获取

这个流程相对来说路径还比较简短,只要完成手机号的校验后,按照短信推送逻辑正常执行即可;

聊聊「短信」渠道的设计与实现

这里需要说明的是,为了确保系统的安全性,通常会设定验证码的时效性,并且只能使用一次,但是偶尔可能因为延时问题,引起用户多次申请验证码,基于缓存可以很好的管理这种场景的数据结构;

验证码消费

验证码的使用是非常简单的,现在很多产品在设计上,都弱化了登录和注册的概念,只要通过验证码机制,会默认的新建帐户和执行相关业务流程;

聊聊「短信」渠道的设计与实现

无论是何种业务场景下的「验证码」依赖,在处理流程时都要先校验其「验证码」的正确与否,才能判断流程是否向下执行,在部分敏感的场景中,还会限制验证码的错误次数,防止出现账户安全问题;

3.2 短信触达

无论是「通知提醒」还是「营销推广」,其本质上是追求信息的最终触达即可,大部分短信运营商都可以提供这种能力,只是系统内部的处理方式有很大差异;

聊聊「短信」渠道的设计与实现

在部分业务流程中,需要向用户投递短信消息,在营销推广的需求中,更多的是批量发送短信,部分需求其内部逻辑上,还可能存在一个转化率统计的问题,需要监控相关短信的交互状态;

四、模型设计

由于短信是集成在消息中心的服务中,其相关的数据结构模型都是复用消息管理的,具体细节描述,参考《消息中心》的内容即可,此处不赘述;

聊聊「短信」渠道的设计与实现

从技术角度来看的话,涉及经典的生产消费模型,第三方平台对接,任务和状态机管理等,消息中心作为分布式架构的基础服务,在设计上还要考虑一定的复用性。文章来源地址https://www.toymoban.com/news/detail-459516.html

五、参考源码

编程文档:
https://gitee.com/cicadasmile/butte-java-note

应用仓库:
https://gitee.com/cicadasmile/butte-flyer-parent

到了这里,关于聊聊「短信」渠道的设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VasDolly实现多渠道打包

    目录 一、添加对VasDolly Plugin的依赖 二、 引用VasDolly Plugin 三、添加对VasDolly helper类库的依赖 四、根目录新建文件添加渠道列表 五、主App工程的build.gradle中配置channel 六、根据已有基础包重新生成多渠道包   官方地址: GitHub - Tencent/VasDolly: Android V1 and V2 Signature Channel Package

    2024年02月01日
    浏览(41)
  • 桥接模式:如何实现支持不同类型和渠道的消息推送系统?

            上一节课我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求,比如:监控、统计、鉴权、限流、事务

    2024年02月15日
    浏览(40)
  • 【弹力设计篇】聊聊熔断设计

    熔断这个词一听从生活中就是保险丝超过一定的温度后自动断开,以此来保护家用电器,属于电路中自我保护装置。如果没有熔断,那么家用电器一定会损坏的。 进一步再来分析一下,在分布式系统中,各个系统之间其实会经常出现故障问题,如果能够自动检测到下游系统故

    2024年02月16日
    浏览(31)
  • 如何设计一个短信发送功能

    本文主要分享了如何设计一个发送短信功能。 一、总结简述 1.梳理多个平台短信API的发送参数,集成封装提供统一的API,支持多个短信平台(阿里云、腾讯云、百度云、京东云、七牛云)灵活切换 2.提供存储方案,表结构设计 3.提供真实生产项目代码案例,实现异步机制、定

    2024年02月11日
    浏览(37)
  • RocketMQ如何实现消息轨迹:消息何时发送的?耗时多久?谁消费的?存在哪个broker了?

    更多RocketMQ内容,见专栏:https://blog.csdn.net/saintmm/category_11280399.html 消息轨迹简单来说就是日志,其把消息的生产、存储、消费等所有的访问和操作日志。 在项目中存在发送方与消费方相互“扯皮”的情况: 发送方说消息已经发送成功,而消费方说没有消费到。 这时我们就希

    2024年01月17日
    浏览(50)
  • 收银一体化-亿发2023智慧门店新零售营销策略,实现全渠道运营

    伴随着互联网电商行业的兴起,以及用户理念的改变,大量用户从线下涌入线上,传统的线下门店人流量急剧收缩,门店升级几乎成为了每一个零售企业的发展之路。 智慧门店新零售收银解决方案是针对传统零售企业面临的诸多挑战和问题,通过科技创新和智能化手段,实现

    2024年02月13日
    浏览(38)
  • 聊聊设计模式--简单工厂模式

    ​ 前面也学了很多各种微服务架构的组件,包括后续的服务部署、代码管理、Docker等技术,那么作为后端人员,最重要的任务还是代码编写能力,如何让你的代码写的漂亮、易扩展,让别人一看赏心悦目,那么设计模式就是很重的了。那么本本篇文章就来聊聊一个简单的工厂

    2024年02月07日
    浏览(43)
  • 【分布式系统】聊聊高性能设计

    对于以上的数字,其实每个程序员都应该了解,因为只有了解这些基本的数字,才能知道对于CPU、内存、磁盘、网络之间数据读写的时间。1000ms = 1S。毫秒-微秒-纳秒-秒-分钟 为什么高性能如此重要的呢,在架构设计中,高性能、高可用、高并发是三高问题。其实背后对应的就

    2024年02月13日
    浏览(51)
  • 【打怪升级】【微服务】聊聊微服务拆分设计

    并不是所有的场景都适合微服务,我理解技术开发者都有一颗追求新技术的心,但是更重要的是业务场景及团队。 微服务架构,说白了就是一种上层体系的演变。从最早的单体架构,到前后分离,SOA,甚至微服务架构,其实它们都在做一件事,并且都朝着一个方向去发展:那

    2023年04月16日
    浏览(32)
  • 微信小程序实现发送短信的功能(发送短信)

    我使用的是微信小程序的云开发这种方式来实现的,纯前端操作,无需后端接入。 1,打开微信公众平台中的【云开发】  2,在概览里面点击开通静态网站  3,点击开通  4,确定开通,这地方看上去是要收费的,但是第一个月是有免费的额度给你使用的,后期收不收费要通

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包