从短信类到短信平台之设计篇

简介:

引言


   手机短信在系统的应用中越来越广泛,从单纯的发送信息到手机,发展到接收手机发送的短信,进行信息的获取,更有甚者,还可以进行业务的变更,业务数据的修改。从少量的发送,发展到大量的收发,衍生出大量的互动性短信。这就对短信收发的设计提出了更高的要求,不仅仅是简单的发送消息,不仅仅是简单的短信模块,而且需要配合消息队列,短信路由子系统,业务编码规则等等技术来满足大量互动性短息的收发要求。


1、短信收发类


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package  com.andyshi;
import  java.rmi.RemoteException;
import  org.tempuri.WebServiceSoapProxy;
public  class  SMSManager {
     WebServiceSoapProxy client= new  WebServiceSoapProxy();
                                                                                                                                                                                                                                
     public  SMSManager(){
//      client.setEndpoint("http://sdk2.entinfo.cn/webservice.asmx");
     }
                                                                                                                                                                                                                                
                                                                                                                                                                                                                                
                                                                                                                                                                                                                                
     public  void  Receive(){
                                                                                                                                                                                                                                 
     }
                                                                                                                                                                                                                                
                                                                                                                                                                                                                                
     public  void  Send(){
         try  {
             client.sendSMS( "sdfsd" "sdfsf" "sdf" "sf" );
         catch  (RemoteException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
     }
}


2、短信收发模块


   成为几个类的组合,Sender,Receiver,还有一些辅助的方法,而且输入输出也从简单类型变成了实体类,减少模块调用者的出错概率。


变化

1、从单个类变成了几个类的组合。

职责单一。


2、增加辅助类。

例如短信实体的创建类。

因为收到的短信是字符串,而且可能是多条短信,所以增加了一些解析类,从字符串中解析出短信,生成短信实体。


3、输入输入

整个收发过程的输入输出从简单类型的变成了实体类,这样可以减少模块调用者出错的概率,对外更加内聚。


3、短信收发子系统


   随着短信收发量的增大,同步实时发送和接收已经不能满足要求。而且随着业务的增加,业务系统的增加,有很多地方都需要短信的收发功能,比如说短信验证,短信查询,短信互动,订阅短信通知,群发短信,短信操作业务,短信变更业务数据。业务也从单纯的发,或者是少量的收,变成大量的收发处理。


   这时候需要考虑更多的东西,例如短信的实时性,可靠性,自动重发,优先级。需要将短信的收发和处理分开,需要消息队列的配合,将收到和需要发送的短信先存入消息队列,然后定时从消息队列获取,进行发送或者业务的处理。


4、短信收发平台


短信收发平台负责具体的短信收发工作,分离具体的业务处理,增加短信路由子系统。


短信有三个运营商:移动,联通,电信。


4.1 短信路由子系统

   1、短信平台收到短信之后,交给短信路由子系统,将收到的业务编码,按照业务编码规则路由到某个业务子系统,进行业务的处理。如果是指令性的短信,则不需要信息返回;如果是交互性的短信,业务子系统处理之后肯定还需要发送短信,发送短信给短信路由子系统。

   2、如果业务子系统需要发送短信,肯定是需要发送给一个手机号的,这个手机号只可能是具体的一个运营商的,但是业务子系统不用关心这些,它只是知道发送给一个手机号一段消息,然后交给短信路由子系统,短信路由子系统来决定经由那个运营商的通道发送到具体的手机号。


4.2 存储设计

   很多的短信都可以用模板+具体业务数据(例如祝福类短信,其中的用户名不一样,其他的内容都是一样的)的形式来表示,业务子系统负责存储模板和业务数据,这样可以减少很多冗余,而且需要修改短信内容的话,只需要修改模板就可以了。

短信平台存储完整的短信内容,方便查询统计。


4.3 其他

   随着短息量越来越大,子系统也会使用消息队列来缓存收发的消息,减轻具体业务的处理压力。



============================================

后记

==========

2013-08-14


发送子系统

接收业务系统来的短信,进行具体的发送工作。发送之前,可能需要区分通道,也就是短信是发给那个运营商的,之前是想交给路由子系统来实现的,但是觉得这个工作更应该是发送子系统来做的事情,路由子系统和业务还是有一点关系,至少还有一个业务匹配规则配置。


接收子系统

接收外部发送过来的短信。


路由子系统

路由和分解短信到具体的业务子系统,路由的规则包括特服号码(运营商或者是SP分配给短信业务申请者的一个号码)和短信业务的识别码。

比如说发送到100900的都是订单获取的业务,发送到100800都是个人信息获取的业务,发送到100700都是帮助获取的业务。

识别码也就是接收短信的内容,或者是内容的前几位数字。比如说接收到的内容是QX10000,那就是订单子系统的,用来取消(QX)订单,订单编号是10000。





本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/1268657,如需转载请自行联系原作者

目录
相关文章
|
3月前
sms4j对接阿里云短信
sms4j对接阿里云短信
150 0
|
9月前
阿里云短信服务价格_企业短信营销推广_验证码通知-阿里云
阿里云短信服务价格_企业短信营销推广_验证码通知-阿里云,阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
104 0
|
4月前
|
存储 前端开发 API
三个月写了个短信平台,开源出来!
大家好,我是勇哥。花了三个月的时间,我手写了个短信平台服务 `platform-sms`,今天开源出来 Beta 版本。 写这个开源项目的初心其实很简单:"**帮助初中级研发工程师入门架构设计,提升他们的技术认知**"。
|
11月前
|
API
短信接口平台和短信运营商怎么选?
现今有许多人都在使用短信平台,包括企业和个体经营者,相信很多人在使用的过程中都听说过短信接口平台和短信运营商,那这两者有何区别?怎么选?
130 0
|
9月前
|
安全 Java API
阿里云短信服务对接流程
阿里云短信服务是阿里巴巴集团推出的一款通讯服务产品,支持发送短信到手机、验证码短信、语音短信等多种短信场景。通过阿里云短信服务,企业可以方便、快捷、安全地将消息发送给用户,提升用户体验和品牌形象。此外,阿里云短信服务还提供了丰富的API接口和SDK,方便开发者集成到自己的应用中。 基本上我们的生活已经不能脱离阿里云短信服务了,比如注册一个APP,登录一个APP,或者找回密码等。但是很多小白用户不知道怎么使用阿里云短信,下面小编就和大家系统讲解一下
|
9月前
|
存储 安全 搜索推荐
阿里云短信购买和使用流程
阿里云短信是阿里云推出的一项企业级短信服务,可以帮助企业快速、便捷地实现与员工、客户、合作伙伴之间的短信沟通和信息传递。 阿里云短信支持个性化短信模板、自定义签名、短信分组管理、群发短信等功能,可以满足不同企业的短信需求。同时,阿里云短信还提供了高并发能力、海量存储、稳定安全的短信服务,保障企业的短信发送效果和用户体验。
|
9月前
[阿里短信云平台] -短信包套餐36元1000条-秒级触达!
[阿里短信云平台] -短信包套餐36元1000条-秒级触达!阿里云短信服务价格表,阿里云短信0.032元一条,阿里云短信价格?阿里云短信怎么收费?阿里云短信多少钱一条,阿里云短信价格0.032元一条
218 0
|
10月前
|
缓存 监控 UED
聊聊「短信」渠道的设计与实现
短信在实现的逻辑上,也遵循消息中心的基础设计,即消息生产之后,通过消息中心进行投递和消费,属于典型的生产消费模型;
115 0
聊聊「短信」渠道的设计与实现
|
Java API Maven
Java后端集成发送短信功能(用的是阿里云的短信服务)【良心文章】​​​​​​​
Java后端集成发送短信功能(用的是阿里云的短信服务)【良心文章】​​​​​​​
447 0
|
运维 监控 Java
短信服务准备工作|学习笔记
快速学习短信服务准备工作
175 0
短信服务准备工作|学习笔记