百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

提高短信发送能力与优化发送策略技术山东的研究

mhr18 2025-02-26 12:54 23 浏览 0 评论

张春秋,刘宏国,杜 颖,谢季川

(国网山东省电力公司电力科学研究院,山东 济南250001)

摘 要: 随着电力行业短信服务业务的开展,使用短信进行数据实时交互的用户越来越多。短信服务的推广应用在一定程度上减少了客户电话的呼入数量,提高了服务效率,但中心的短信平台建设较早,随着短信发送数量的增加,服务存在一定的瓶颈。本文对短信发送能力与发送策略进行改进,提升了短信发送速度,提高了短信发送数量及短信发送的准确性与及时性,保障客户发送查询短信及时响应,为省公司“六位一体”智能互动服务平台建设提供支撑。

0 引言

随着通信行业的迅猛发展与手机应用的普及,手机短信成为了人们日常生活中汲取外部信息的重要通信方式,短信服务越来越受到客户群体的关注,国网山东公司为提升对外服务的广度和深度,提高服务效率,开通了短信服务平台,客户通过发送短信对电量电费、银行代扣信息、抄表例日、居民阶梯电价及其他常见问题进行查询[1]。近几年由于短信客户数量的增加,特别是在收费高峰期短信量突增,超出平台发送能力,平台无法及时推送所有短信,导致部分短信发送延迟或发送失败,降低了信息传递的时效性[2]。客户由于无法及时通过短信获知电费等信息,拨打95598客服热线进行电话咨询,增加了人工话务量。国网山东公司为提高客户服务满意度,提升服务水平,对短信平台进行优化升级,满足客户实际需求。

1 短信平台功能架构

1.1 短信平台简介

如图1,国网山东电力95598短信平台主要包括短信管理服务器、短信前置机、短信数据库。短信管理服务器主要用来处理短信具体的业务,并向相关业务系统提供短信接口服务。短信前置机和相应的运营商的短信网关进行通信,由运营商将待发送的短信内容发送到客户预留手机号码上,同时短信前置机可以通过短信网关接收客户发往国网山东电力的短信,并最终通过短信管理服务器将接收到的短信内容转发至各业务系统进行后续服务处理。短信数据库主要用来存放短信的收发记录。

1.2 架构设计

如图2所示,短信平台主要包括表现层、业务层、持久层、数据层4部分。

(1)表现层:表现层主要用于与用户交互的界面,页面向用户显示短信平台相关数据,并能接收用户的输入请求,但它并不进行实际的业务逻辑处理。

(2)业务层:以依赖注入的方式,控制短信的发送、接收流程,业务层接收用户的输入,以一定的逻辑去完成用户的请求。

(3)持久层:持久层主要为业务层提供删除,新增,更新,查找,数据库存储过程接口,使业务层无需关心数据库的操作。

(4)数据层:数据层采用Oracle 10g 存储接收和发送的短信。

1.3 短信发送流程介绍

短信发送流程指从短信生成传送至运营商到运营商将短信发送情况反馈至业务系统,主要包括八个环节,如图3所示。

图1中,①数据库服务器调用Webservice接口提交短信发送请求;②③④⑤⑥⑦短信系统内部处理机制,负责将请求发送的短信提交到短信前置机中进行发送,获取通信运营商的返回的短信消息报告信息以及发送结界信息,并将信息记录到短信数据库服务器中;⑧短信接口服务器检测短信发送返回信息,包含短信消息报告以及短信发送结果信息返回给业务系统。

1.4 短信接收流程介绍

短信接收流程指客户发送短信通过运营商传送至国网山东电力业务系统的过程,主要包括四个环节,如图4所示。

图中,①②③短信系统内部处理机制,负责将通信运营商短信网关到达的新短信提交并将到短信数据库服务器中;④短信接口服务器检测短信到达信息,通知业务接口服务有短信到达,并将短信到达接口的数据传入业务接口服务。

1.5 短信平台功能介绍

国网山东电力短信平台具备基础功能、运营管理、风险管理、接口服务4大类业务,18个功能模块。

基础功能包括短信收发引擎、短信负载均衡机制、短信通道管理、运营商接口服务配置、业务服务平台认证、日志管理等功能模块。

运营管理包括发送策略管理、短信队列监控、取消短信发送、发送时间段管理、禁发时间段管理、发送状态查询、统计分析等功能模块。

风险管理包括重发告警功能模块。

接口服务包括:针对运营商的电信、移动、联通服务接口;针对业务系统的短信发送、接收服务和短信发送状态接口服务。

目前短信平台承载营销业务支持系统中所有的业务短信发送业务,包括电费订阅信息发送、电费发行通知、电费代扣通知、欠费催缴、业务咨询回复、停电通知、短信自助查询、自助缴费成功通知、居民阶梯电价超档提醒、远程费控用户电费预警、停电预警、停复电通知等。目前高峰短信发送量达100万条。

2 常见异常及解决方案

2.1 短信重复发送

2.1.1 异常描述

同一手机号码多次收到国网山东电力发送的短信,且短信内容相同。

2.1.2 问题分析

根据重复发送号码查询短信数据库中的历史发送信息发现,由于短信平台误认为提交短信网关失败导致多次重发。

(1)检查数据库中存储的短信内容和短信发送记录,发现短信内容有1条记录为发送成功,但是发送记录有多条,每条之间的间隔是20 min左右。

(2)根据短信发送号码查询短信发送日志,发现在向短信网关提交时运营商网关返回错误代码400,短信平台认为提交短信网关失败,又对该条短信进行了提交造成短信发送重复。

(3)多次提交的过程中发送成功的回执已经返回,但发送进程未对该回执信息进行判断。

2.1.3 问题解决

(1)为提高信息发送可靠性与及时性,将重发周期设置为2小时,重发次数设置为3次,重发时间为9点~21点;

(2)在重新发送时增加判断条件,有发送成功的记录时便不再进行发送;

(3)对等待网关回执的短信超过2小时的直接当做发送失败处理短信发送;

(4)优化短信回执的处理效率和发送是对短信状态的判断;

(5)修改电信的网关测试程序,在接收到短信平台提交的短信发送请求时随机返回错误信息,测试成功后批量发送电信短信进行验证,测试通过。

2.2 短信发送速度慢

2.2.1 异常描述

客户手机号码通过业务系统发送信息后,号码长时间内无法收到信息,或接收信息时间超过系统设定的发送时间,客户短信接收时延过大会影响用户感知,造成用户投诉。

2.2.2 问题分析

短信业务不同于语音业务,它是一种非实时性的通信业务,存在一定程度的时延是正常的、合理的。短信发送量大、用户不在服务区等不同方面的因素都会导致短信不能正常发送至客户手机或信息发送延迟的现象。

检查日志发现,短信平台将短信提交运营商网关后等待运营商网关返回提交是否成功的状态,收到状态信息后,再发送下一条短信。因短信平台到短信网关的网络速度有延迟,短信业务量小时速度还能保证,发送量大时又需要接收大量的短信状态报告占用接收的时间,因此发送的短信速度只能达到3~5条。

2.2.3 问题解决

(1)将短信平台提交短信网关发送的模式由串行改为并行,即短信平台按照短信网关给定的发送速率,每秒提交50条短信给短信平台,不再等待短信平台的返回信息。

(2)设置专门的报告表示接收短信平台提交的回执信息和短信的发送状态。

(3)开启多个进程进行短信发送,提高发送的速度。

2.3 短信发送状态异常

2.3.1 异常描述

为监控短信发送情况,值班人员每日在业务系统中对短信发送状态、发送数量、历史发送情况等信息进行实时查询、测试,发现业务系统中短信发送状态为失败或发送中,测试手机已收到短信,且内容完整,导致数据统计不准确,无法将短信发送信息作为服务质量分析数据支撑。

2.3.2 问题分析

为检验发送状态不一致是否与传送速度相关,在测试系统中进行压力测试,将10个短信发送进程在同一个时间从营销数据库通过WebService接口发送36 000条短信到短信平台,短信平台在接收到要发送的短信数据后,将状态回写入营销业务系统,将营销业务系统的发送状态从未发送更改为发送中,具体数据如图5所示。

通过对测试数据进行分析,10条短信发送线程并发,共发送36 000条短信,预计发送时间为1 min,实际发送时间为2分50秒,响应时间偏慢。

2.3.3 问题解决

为解决短信发送状态异常问题,对图5中的数据进行分析。

(1)从图5报告中可看出,数据库并不存在性能压力。

(2)从图5报告中查到有一条SQL语句执行时长偏大,占用的buffer gets较多。存在性能问题的语句如下:

select * from (select msend0_.ID as col_0_0_ from M_SEND msend0_where msend0_.MSG_CLIENT_REMARK1 = :1 and msend0_.MSG_SEND_DAY >= :2)

单独执行此语句,执行结果如图6。

M_SEND表是短信收发表,在查询的字段上没有创建索引,由于目前该表数据量较小,全表扫描不会造成性能影响,但随着数据量的增加,会造成性能隐患,通过与开发确认后,开发反馈的信息是该表每月会做一次归档。由于全省短信发送高峰期的月数据为3 300万条,因此在这两个字段上创建联合索引,降低扫描时间。

经过对短信平台进行调整,大大提高了短信发送能力。未调整短信平台发送参数时,总共耗费了20 min的时间才将数据发送完,在进行短信平台发送参数调整后,发送时间在3 min之内。为进一步提高短信发送效率,可继续通过优化短信发送线程休眠时间、队列维护线程休眠时间、一次连接同时发送的短信数量、发送线程数量、队列最大长度等参数来缩短短信的收发时间。

3 发送策略优化

3.1 短信重发机制

短信业务主要分为订阅类与非订阅类。订阅类短信主要包括电量电费信息、银行代扣信息;非订阅类短信主要包括欠费催缴、停电通知、自助缴费成功通知等。根据短信内容重要性及业务需求时限性制定重发机制,以增加短信发送成功率和降低客户重复接收次数为原则,对未发送成功的短信或回执错误的短信进行重发,确保客户可以及时收到短信。

3.1.1 订阅短信

订阅类短信为客户主动订阅的短信,属于优先级较高的信息,当系统触发此类短信时,优先进入排队序列进行信息发送。发送失败后,系统当日对信息进行3次重发,确保客户及时收到短信。

3.1.2 非订阅类短信

非订阅类短信为国网山东电力根据业务发展需求,向客户主动推送的短信,发送优先级较低。发送失败后,如果当天发送量较高,将于次日进行3次重发,每次重发按照发送次序进入排队序列。

3.2 发送号码优化

为提高短信平台信息发送成功率,减少因号码错误造成的信息发送失败数,对半年内发送失败的号码进行统计分析,对于长时间不使用的号码从发送队列中删除。系统发送失败主要为客户终端原因、短信平台推送原因、运营商发送原因三类。

(1)客户终端原因

对近期发送失败的号码进行筛选,处于关机、停机、空号的号码放在最后发送,并且每月对号码发送情况进行核查,如果连续3个月手机号码都处于关机、停机、空号状态,将把号码导出发给运营商进行核对,并在系统中取消此号码短信发送权限。

(2)短信平台推送原因

对短信数据生成后平台推送运营商失败的短信及短信平台未在规定时间内接收到运营商发送结果反馈的短信,系统对此类失败短信进行重新标注并放入发送队列,重发次数设为三次,发送时间为9点至21点。

(3)运营商发送原因

短信平台接收到运营商反馈发送结果为失败的短信,系统对此类短信进行重新标注,并放入发送队列,重发次数设为三次,发送时间为9点至21点。

4 结论

对短信平台发送能力及发送策略进行优化,可以有效地改善短信接收时延,提高短信发送效率,减少电量电费、银行代扣信息、抄表例日、居民阶梯电价及其他常见问题查询的电话呼入数,提高服务质量与服务效率,更好地为省公司“六位一体”智能互动服务平台建设提供支撑。

参考文献

[1] 常嘉岳.移动多媒体消息业务[M].北京:北京邮电大学出版社,2006.

[2] 黄杰,梁月昌.短消息业务时延分析[J].山东通讯技术,2008,28(1)16-19.

相关推荐

JDK从8升级到21的问题集(jdk8版本)

一、背景与挑战1.升级动因oOracle长期支持策略o现代特性需求:协程、模式匹配、ZGC等o安全性与性能的需求oAI新技术引入的版本要求2.项目情况o100+项目并行升级的协同作战o多技术栈并存o持...

科莱特SAP ABAP干货 | 基础篇:二、数据字典(1)

ABAP开发基础及应用二、数据字典(1)目标及说明目标:1、掌握SAP数据字典各种对象的定义和使用2、能根据业务数据要求,建立存储数据用的表和视图需求说明:1、在SAP中自建程序,以对一企业(自由行集...

Mycat入门(mycatalog)

一、Linux系统下搭建Mycat注:如果没有服务器可以选择虚拟机进行操作1、首先准备好服务器或者虚拟机2、安装和配置MySQL数据库2.1、删除原来的数据库//查询已安装的mariadb[root...

MySQL从入门到实战:表设计、索引优化与高频面试解析

一、业务场景驱动表设计:电商订单系统案例场景背景某电商平台需设计用户、商品、订单模块,要求支持以下操作:用户高频查询最新订单按商品分类+价格区间筛选商品统计每日订单金额建表实战--用户表(反范式设计...

oracle生成AWR报告的两种方法(oracle中awr报告的输出格式有哪些)

方法1:sqlplus中执行:execdbms_workload_repository.create_snapshot();@?/rdbms/admin/awrrpt.sql方法2:setpage...

Navicat Premium:数据库管理神器(navicat 本地数据库)

提供免费下载网站Mavom.cn在数据库管理的世界里,「NavicatPremium」是一款「一体化的数据库管理和迁移工具」,适用于MySQL、SQLServer、Oracle和PostgreSQ...

Iperius Backup功能特色(backup如何使用)

备份作业:1.文件夹备份:本地的文件夹,带SMB的路径文件夹,网络路径文件夹,NAS文件夹等等2.文件备份:对某个文件进行备份3.备份镜像:可以把系统刻录成镜像用于恢复(图1)4.FTP:自带FTP...

sql注入攻击,拿到网站账户,黑客这样神操作

首先的话,我们来仔细搞清楚这个攻击的流程,第一步就是了解一下,什么是sql?又什么是sql注入、sql注入的流程和步骤。1、首先什么是sql,Sql是一种数据库查询和程序设计的语言,这里的数据库是指存...

Java 8 新特性指南(java的八大特性)

本教程可以在实验楼(shiyanlou.com)中在线练习。一、实验简介Java8是近年来最后起来的一个Java编程语言发行版本。Oracle在2014年3月发布了它。该版本为Java带来...

Java系统开发从入门到精通第三讲(文字版)

下来我们进入数据持久化的部分,对于一个真实的业务系统,能够正常的运转离不开数据的持久化。在数据持久化这块,目前主流的还是关系型数据库(RDBMS),NoSQL(NewSQL)也有了长足发展,特别在大数...

扣细节:while (true) 和 for (;;) 哪个更快

来源:zhihu.com/question/52311366/answer/130090347在JDK8u的jdk项目下做个很粗略的搜索:mymbp:/Users/me/workspace/jdk8u...

JAVA 8 环境安装配置(java环境怎么装)

一、下载这里选择的是OracleJDK,首先到Oracle官网下载JDK8,以Windows10操作系统为例,若是32位系统则下载“Windowsx86”,否则64位系统下载“Windows...

从零开始学Java系列之最详细的Java环境变量配置教程

前言:在上一篇文章中,壹哥给大家重点讲解了Java实现跨平台的原理,不知道你现在有没有弄清楚呢?如果你还有疑问,可以在评论区留言~之前的三篇文章,主要是理论性的内容,其实你暂时跳过不看也是可以的,我们...

Linux下乱码的文件名修改或删除(linux文件名乱码如何处理)

查看文件名#lstouch1?.txt#ll-itotal1469445217956913-rw-r--r--1oracleoinstall0Jan18...

「论文写作-解决方案」数据库TDE加密

数据是应用的核心。对于绝大多数应用,存储数据的数据库是系统日常管理的重中之重。数据库安全背景根据verizon2014年的统计数据,96%数据攻击行为是针对数据库进行的。数据库已经成为外部入侵与内部渗...

取消回复欢迎 发表评论: