一、短信接收服务介绍
短信接收服务的作用就是为应用提供访问接口,应用需要发送短信时只需要调用短信接收服务,由短信接收服务将信息保存到消息缓冲区(Mysql、Redis)。后续会由短信发送服务从消息缓冲区获取消息并发送短信。
动力短信短信平台整体架构:
动力短信短信平台业务架构:
通过上面的业务架构可以看到,短信接收服务(pd-sms-api)提供3种方式供业务系统调用:
- HTTP接口
- TCP
- SDK形式
短信接收服务通过资质验证(可开关)、短信内容校验后将短信信息发送到对应中间件中(Redis、MySQL)。
短信发送方式分为两种类型:
1、定时发送短信:将短信内容存储到MySQL数据库中,由短信发送服务通过定时任务获取并发送 2、普通短信:将短信内容推送到Redis队列中,由短信发送服务异步接收并发送
二、Redis消息队列
1、Redis队列介绍
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
Redis的list是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
使用Redis的list可以模拟消息队列,即使用rpush和lpush命令将数据插入队列(生产消息),使用lpop和rpop命令将数据弹出队列(消费消息)。
队列中的消息可以由不同的生产者写入,也可以由不同的消费者消费,但是一个消息一定是只能被消费一次。
redis所有命令,可从官网查看:http://redis.cn/commands.html#list
2、案例演示
发布消息:
root@77889f10b0c8:/data# redis-cli
127.0.0.1:6379> LPUSH ydllist msg1
(integer) 1
127.0.0.1:6379> LPUSH ydllist msg2
(integer) 2
127.0.0.1:6379> LPUSH ydllist msg3
(integer) 3
127.0.0.1:6379> LPUSH ydllist msg4
(integer) 4
127.0.0.1:6379> LPUSH ydllist msg5
(integer) 5