1、什么是服务
我认为服务是可以独立运行的功能,服务于外部调用者。要能达到代码复用,提高开发效率的作用。
2、为什么要单独的短信服务
在很久之前,小张在一家软件公司上班,某天接到了一个发送短信验证码的需求,于是小张快速地选择了短信服务商,然后用短信的 SDK 集成到了项目 A 中,飞快地完成了这个需求。
此时的代码是这样子的,如下:
SmsClient.send("182xxxxxxxx",“您的短信验证码是1111”);
过了一段时间,系统 B 也有这个需求了,同样地小张也是采用之前的方式,快速地实现了需求。
依次类推,就这样慢慢地有 10 个系统都接入了发送短信的功能。
有一天由于某些原因,短信的认证信息发生了变化,带来的问题就是每个系统都得去修改配置,
当然如果你用了分布式配置中心的话也是可以解决这个问题的,暂且不在我们的考虑范围内。
经过这次事件后,小张决定对短信这个功能进行一次升级,采用消息队列的方式来处理短信发送。
系统发送消息到消息队列,然后单独写一个消费者去消费队列中的消息来发送短信。
后面如果要改短信配置,只需要修改短信消费者一个地方即可
同时也带来了另一个问题,那就是每个系统还是需要去关注消息队列的存在,当消息队列的地址发生变化时,还是会发生之前的问题。
还有一个问题是消息队列发送的短信是异步的,我们为了防止短信被恶意发送,肯定会做一些限制。
比如单个号码一天只能发多少次等等这样的限制。
用消息队列就无法得到反馈结果,只能每个系统都去维护发送记录,然后去做这些限制。
短信服务的好处
通过设计短信服务可以解决上面我们描述的几个问题,短信服务的好处包括:
1、统一的代码,配置或者调用方式发生变化只需要修改一次;
2、方便做一些发送量的统计报表
3、统一安全防护,防止恶意发送
短信服务要有哪些功能?
1、发送验证码短信,独立接口
2、支持验证码检测功能,这样接入方就不用自己缓存验证码了
3、只是短信测试环境,测试环境不是真正发送短信,节约资源
4、所有短信发送都要有记录,方便查问题和对账
5、通用的短信发送接口,只需要传递模板编码和参数即可
6、支持单用户、单号码发送量的一个限制
短信服务商:
融云、阿里云
https://www.cnblogs.com/imyalost/p/6792724.html