作为程序员一定要保持良好的睡眠,才能好编程

微服务第一课 认知微服务

发布时间:2019-03-28

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