banner

高可用高性能短信平台设计

目前企业级开发对发送短信的支持,一般都需要接入各种专门做短信服务的第三方服务提供商。第三方服务提供商根据你发送的短信数量按量收费。我们自身的业务要求当然是,所有的短信100%能送达,所有的短信必须x秒内发到手机上,不能有时延,即使时延不可避免,我们也希望能尽量力保如验证码等需要及时响应的业务不受短信时延的影响。短信无时延,短信百分百必达只是一个理想愿望,实际上国内无任何的短信服务提供商能做到。因为这个除了编程技术和架构的支持,也需要移动联通电信等运营商的支持。下图是发送一个短信的数据包流转流程:

高可用高性能短信平台设计
1325 1 2019/05/19 19 短信技术

携号转网全面实施后短信平台如何改造

       2019年两会期间,国务院总理李克强在发布的2019年国务院政府工作报告中提出,在全国实行“携号转网”,规范套餐设置,使降费实实在在、消费者明明白白;工业和信息化部部长苗圩也指出今年年底实现所有手机用户自由携号转网。一切消息都表明2019年携号转网真的来了,那么对于短信平台来说会有什么影响呢?携号转网后,原先的通过手机号段判断归属运营商可能就不是那么准确了,如中文短信网之前写的一篇文章:手机号码按照运营商拆分;比如132号段之前是属于联通的,
461 0 2019/03/07 07 短信技术

短信平台中的手机号码正则匹配

短信平台中,用户提交的手机号码很有可能是不合法的,这就需要过滤掉不合法的手机号码,并且给用户提示。过滤不合法的手机号码通常可以通过正则表达式的方式来处理,目前移动、联通、电信三大运营商的号段我们是知道的,因此可以形成一个工具类PhoneUtils:public class PhoneUtils { // 有去重,并且去除无效的号码,传入一个正则表达式列表 public static List<String> t
446 0 2019/03/05 05 短信技术

短信中的长短信UCS2编码

在短信平台中,发送长短信到短信网关时,需要设置长短信的编码为UCS2,如果不是长短信,则设置为GBK就可以。对于UCS2编码,中文短信网自身的短信平台实现了UCS2的编码与解码方法,形成了一个工具类:ConvertUtils,里面包含了众多字符串、字节转换工具,代码如下:public final class ConvertUtils { private static final char chars[] 
400 0 2019/03/03 03 短信技术

短信平台中的邮件提醒代码实现

在短信平台中,当用户余额不足或者短信平台提交短信到通道失败时,或者状态报告失败时都需要提醒管理员或者用户。采用邮件通知的成本是最低的,几乎为0,QQ邮箱是目前最好用的邮件服务,QQ邮箱发送邮件不能太频繁,否则会报错,这就要根据自己的实际业务控制好发送频率,以下是采用QQ邮箱来发送邮件的一个工具类:public class InvokeEmailManagerImpl extends AbstractComponent implements In
343 0 2019/03/03 03 短信技术

手机号码按照运营商拆分

手机号码按照运营商拆分,是根据号段归属运营商来区分的,目前已知的号段都知道是归属哪个运营商的,号段是一直在新增的,目前移动的号段是最多的,有24个号段,联通有16个号段,电信有12个号段,可以参考下面的代码:public class OperateUtils { // 根据手机号得到是1移动、2联通、3电信 // 1349 中国卫通 // 中国移动:134.135.136.137.138.139.150.151.152.
397 0 2019/03/02 02 短信技术

短信中的批量号码拆分算法

熟悉短信通道的朋友应该知道,每个通道对单次提交的号码数量往往是有限制的,有的是最多100个号码,有的最多1000个号码,有的可以达到几万个号码。在代码实现中,我们可以针对每个通道,设置一个阈值capacity,达到这个值后便拆分,下面给出一种拆分算法:public static <T> List<List<T>> splitList(List<T> list, int pageS
392 0 2019/03/02 02 短信技术

福建移动CMPP长短信拆分方案

中文短信网之前写过一篇关于中国移动CMPP长短信实现方案,里面具体规定了协议相关的一些东西,参见https://www.zhsms.com/smstech/8.html福建移动由于有固定签名,所以通常的长短信拆分方案会有问题,比如按照67个字来拆分,这种是有问题的,因为发长短信时,福建移动会在长短信的最后一条短信上加上固定签名,这样会导致最后一条短信的内容加上固定签名之后的长度超过70个字,会被移动截掉,导致发送的内容不完整,比如下面传统的代码:if(contentBytes.length&nb
455 0 2019/02/28 28 短信技术

中国移动CMPP长短信实现方案

所谓长短信,是指超过70个汉字的短信,发送到网关时候需要按规则拆分成多条,然后手机接收到的时候合并为一条。在cmpp协议里,CMPP-_SUBMIT消息定义中有相应的参数配置:   TP_udhi :0代表内容体里不含有协议头信息 1代表内容含有协议头信息(长短信,push短信等都是在内容体上含有头内容的,也就是说把基本参数(TP-MTI/VFP)值设置成0X51)当设置内容体包含协议头,需要根据协议写入相应的信息,长短信协议头有两种:     
1594 0 2019/02/25 25 短信技术