发明内容
有鉴于此,本发明的目的是提供一种消息发送系统和方法,能为短彩信的单发和群发任务提供统一的调度和下发管理。
为了达到上述目的,本发明提供了一种消息发送系统,包括有下行预处理装置、下行调度装置、若干个消息开放装置和若干个消息收发装置,其中:
消息开放装置,用于接收业务系统发送来的单或群发任务请求,并将若干个单发任务请求、或每个群发任务请求保存到本地新生成的一个原始任务文件中,同时在数据库中为每个群发任务请求新增一条群发任务记录;
下行预处理装置,用于在数据库中为同一接入号和优先级的单发任务请求新增一条单发任务记录,然后将本地原始任务文件中同一接入号和优先级的所有单发任务请求、或一个群发任务请求拆分到若干个新生成的子任务文件中,同时在数据库中为对应的单或群发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件;
下行调度装置,用于根据调度策略,从数据库中挑选出一个单或群发任务记录,并将所述单或群发任务记录下属的子任务记录交由消息收发装置发送;
消息收发装置,用于向用户发送短彩信。
为了达到上述目的,本发明还提供了一种消息发送方法,当业务系统发起一个单或群发任务请求时,包括有:
步骤一、消息开放装置接收业务系统发送来的单或群发任务请求,并将若干个单发任务请求、或每个群发任务请求保存到本地新生成的一个原始任务文件中,同时在数据库中为每个群发任务请求新增一条群发任务记录;
步骤二、下行预处理装置在数据库中为同一接入号和优先级的单发任务请求新增一条单发任务记录,然后将本地原始任务文件中同一接入号和优先级的所有单发任务请求、或一个群发任务请求拆分到若干个新生成的子任务文件中,同时在数据库中为对应的单或群发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件;
步骤三、下行调度装置根据调度策略,从数据库中挑选出一个单或群发任务记录,并将所述单或群发任务记录下属的子任务记录交由消息收发装置来发送对应的短彩信。
与现有技术相比,本发明的有益效果是:本发明通过数据库和文件系统两种方式,对各个业务系统发送来的单或群发任务请求进行可靠存储;无论群发还是单发任务请求,本发明始终围绕“任务”概念执行,最终将所有要发送的消息按照接入号、优先级等进行归类,从而整合成粒度合适、可直接执行的任务最小调度单元,确保了每个子任务都能在较短的时间内处理完成;通过各种调度策略控制每个接入号对应的所有单发和群发任务之间的执行顺序,从而保证单发和群发任务的统一调度;当消息量不可控或者消息量爆炸式增长情况下,本发明还可以通过动态变更消息收发装置的数量或者消息收发装置中消息发送通道的数量,在不影响现网正常运行的情况下,灵活方便的实现了系统性能的提升。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
如图1所示,本发明一种消息发送系统包括有若干个消息开放装置、下行预处理装置、下行调度装置和若干个消息收发装置,其中:
消息开放装置,用于接收业务系统发送来的单或群发任务请求,并将若干个单发任务请求、或每个群发任务请求保存到本地新生成的一个原始任务文件中,同时在数据库中为每个群发任务请求新增一条群发任务记录;
下行预处理装置,用于在数据库中为同一接入号和优先级的单发任务请求新增一条单发任务记录,然后将本地原始任务文件中同一接入号和优先级的所有单发任务请求、或一个群发任务请求拆分到若干个新生成的子任务文件中,同时在数据库中为对应的单或群发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件,所述接入号是短彩网关/或中心分配链路时绑定的号码,可以是发送号码、或者发送号码的前缀;
下行调度装置,用于根据调度策略,从数据库中挑选出一个单或群发任务记录,并将所述单或群发任务记录下属的子任务记录交由消息收发装置发送;
消息收发装置,用于向用户发送短彩信。
如图2所示,消息开放装置进一步包括有:
单发任务汇聚单元,用于将业务系统发送来的单发任务请求缓存到自身的内存中,同时,定时(例如每隔1秒)或定量(例如当单发任务请求的数量达到100条)将内存中的单发任务请求保存到本地新生成的一个原始任务文件中;其中,单发任务汇聚单元定时、或定量的将内存中的所有单发任务请求写到一个原始任务文件中,既可以实现单发和群发的统一调度,还能有效的避免频繁向磁盘上写文件,从而防止对文件系统造成较大的负荷;
群发任务管理单元,用于从业务系统发来的群发任务请求中提取发送号码、优先级、比重、群发用户号码等信息,然后在数据库中新增一条群发任务记录,同时将群发用户号码等信息保存到本地新生成的一个原始任务文件中,所述群发任务记录保存有群发任务的接入号、优先级、比重、原始任务文件的地址等信息。
当所述单或群发任务请求是发送彩信时,所述原始任务文件中还保存有对应的彩信附件。
下行预处理装置通过对原始的单发任务请求和群发任务请求进行处理,可以形成内部统一的消息数据模型,从而供下行调度装置进行集中控制和分配。无论群发还是单发任务请求,下行预处理装置始终围绕“任务”概念执行,最终将所有要发送的消息按照接入号、优先级等进行归类,从而整合成若干个粒度合适、可直接执行的任务最小调度单元。如图3所示,下行预处理装置进一步包括有:
单发预处理调度单元,用于定时对本地新生成的、且保存单发任务请求的原始任务文件进行扫描,从扫描到的原始任务文件中读取每条单发任务请求的接入号和优先级,并判断数据库中是否存在有与所述接入号和优先级相一致的单发任务记录,如果否,则在数据库中新增一条单发任务记录,所述单发任务记录的ID采用单发任务请求的接入号和优先级进行标示(例如,某一条单发任务记录的ID标示为:1065700_2,其中1065700是接入号,2是优先级),然后对扫描到的原始任务文件中的每一接入号和优先级对应的单发任务请求总数进行统计,并将同一接入号和优先级的单发任务请求写入到若干个新生成的子任务文件中,从而使得每个子任务文件中的单发任务请求总数低于一个预先设置的阈值,同时在数据库中为所述接入号和优先级对应的单发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件,所述阈值可以根据短彩网关/或中心分配的下行链路流控速率来取值,从而确保单发任务记录的每个子任务记录能在较短的时间内处理完成;单发任务记录的ID固定采用“接入号+优先级”进行标示,也就是说,针对同一接入号且同一优先级的单发任务请求,下行预处理装置会将其划入到同一单发任务记录中,由于原始任务文件中不同接入号的单发任务请求混杂在一起,下行预处理装置可以按照一定策略,将原始任务文件归类合并成可以被调度执行的单发任务及子任务:例如,当阈值设置为100时,如果原始任务文件中接入号“1065700”和优先级“2”对应的单发任务请求总数为250条,则生成3个子任务文件来保存这250条单发任务请求,同样,接入号“1065800”和优先级“2”对应的单发任务请求总数为60条,则生成1个子任务文件即可;
群发预处理调度单元,用于定时对数据库中的每条群发任务记录逐一扫描,并统计数据库中每条群发任务记录对应的原始任务文件的群发用户号码总数,然后将所述原始任务文件拆分成若干个新生成的子任务文件,从而使得每个子任务文件中的群发用户号码总数低于一个预先设置的阈值,然后在数据库中为所述群发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件,所述阈值可以根据短彩网关/或中心分配的下行链路流控速率来取值,从而确保群发任务记录的每个子任务记录能在较短的时间内处理完成。
在单发预处理调度单元和群发预处理调度单元中,当单或群发任务请求是发送彩信时,还需将彩信所关联的彩信附件一并归并到所述单或群发任务请求所属的子任务目录下。
下行调度装置采用拉模式的任务分配机制,为每一个与链路绑定的接入号构建一个任务调度通道,在同一任务调度通道内部,通过各种调度策略控制其多个任务之间的执行顺序,通道和通道之间互相不影响;同样,也可以根据消息负荷的大小,构建多个消息收发装置,每个消息收发装置内部还可以为每个接入号构建多个消息发送通道。下行调度装置进一步包括有:
任务调度通道构建单元,用于为每个接入号构建一个任务调度通道,并从数据库中为每个任务调度通道实时读取其接入号对应的所有单和群发任务记录;
任务调度分配单元,用于根据调度策略(例如优先级或比重),从每个任务调度通道的所有单和群发任务记录中挑选出一个单或群发任务记录作为所述任务调度通道的当前任务;当接收到消息收发装置发送来的携带有接入号的申请消息任务请求时,则将所述接入号对应的任务调度通道的当前任务的一个子任务记录及其对应的子任务文件发送给消息收发装置,
消息收发装置进一步包括有若干个消息发送通道,其中:
消息发送通道,用于和接入号相绑定,定时向下行调度装置发起申请消息任务请求,并根据下行调度装置返回的子任务记录及其对应的子任务文件,发送对应的短彩信。
下行调度装置的任务调度分配单元还可以采用整形数字描述单发和群发任务记录的优先级级别,数字越大,级别越高。为了区分和统一调配群发任务记录和单发任务记录的执行顺序,下行调度装置内部可以用偶数标示单发任务记录的优先级级别,用奇数标示群发任务记录的优先级级别,这样,同一优先级下,单发任务记录的优先级要高于群发任务记录的优先级,既实现了单发和群发的统一调度,又在一定程度上满足了单发消息实时性高的要求。例如对于低优先级的群发任务记录和单发任务记录,其优先级级别分别设为1和2;对于中优先级的群发任务记录和单发任务记录,其优先级级别分别设为3和4;对于高优先级的群发任务记录和单发任务记录,其优先级级别分别设为5和6。
如图4所示,当业务系统发起一个单或群发任务请求时,本发明一种消息发送方法包括有:
步骤一、消息开放装置接收业务系统发送来的单或群发任务请求,并将若干个单发任务请求、或每个群发任务请求保存到本地新生成的一个原始任务文件中,同时在数据库中为每个群发任务请求新增一条群发任务记录;
步骤二、下行预处理装置在数据库中为同一接入号和优先级的单发任务请求新增一条单发任务记录,然后将本地原始任务文件中同一接入号和优先级的所有单发任务请求、或一个群发任务请求拆分到若干个新生成的子任务文件中,同时在数据库中为对应的单或群发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件,所述接入号是短彩网关/或中心分配链路时绑定的号码,可以是发送号码、或者发送号码的前缀;
步骤三、下行调度装置根据调度策略,从数据库中挑选出一个单或群发任务记录,并将所述单或群发任务记录下属的子任务记录交由消息收发装置来发送对应的短彩信。
如图5所示,图4步骤一进一步包括有:
步骤11、消息开放装置判断业务系统发来的消息是否是单发任务请求?如果是,则将所述单发任务请求缓存到自身的内存中,同时,定时(例如每隔1秒)或定量(例如当单发任务请求的数量达到100条)将内存中的单发任务请求保存到本地新生成的一个原始任务文件中,本流程结束;如果否,则继续步骤12;
消息开放装置定时定量的将内存中所有单发任务请求写到一个原始任务文件中,既可以实现单发和群发的统一调度,还能有效避免频繁向磁盘上写文件,从而防止对文件系统造成较大的负荷;
步骤12、消息开放装置判断业务系统发来的消息是否是群发任务请求?如果是,则继续步骤13;如果否,则本流程结束;
步骤13、消息开放装置从群发任务请求中提取发送号码、优先级、比重、群发用户号码等信息,然后在数据库中新增一条群发任务记录,同时将群发用户号码等信息保存到本地新生成的一个原始任务文件中,所述群发任务记录保存有群发任务的接入号、优先级、比重、原始任务文件的地址等信息。
当所述单或群发任务请求是发送彩信时,所述原始任务文件中还保存有对应的彩信附件。
图4步骤二中,下行预处理装置通过对原始的单发任务请求和群发任务请求进行处理,可以形成内部统一的消息数据模型,从而供下行调度装置进行集中控制和分配。无论群发还是单发任务请求,下行预处理过程始终围绕“任务”概念执行,最终将所有要发送的消息按照接入号、优先级等进行归类,从而整合成若干个粒度合适、可直接执行的任务最小调度单元。如图6所示,图4步骤二进一步包括有:
步骤21、下行预处理装置定时对本地新生成的、且保存单发任务请求的原始任务文件进行扫描;
步骤22、下行预处理装置从扫描到的原始任务文件中读取每条单发任务请求的接入号和优先级,并判断数据库中是否存在有与所述接入号和优先级相一致的单发任务记录,如果有,则继续读取下一条单发任务请求,直至读取完所有扫描到的原始任务文件;如果否,则在数据库中新增一条单发任务记录,所述单发任务记录的ID采用单发任务请求的接入号和优先级进行标示(例如,某一条单发任务记录的ID标示为:1065700_2,其中1065700是接入号,2是优先级),然后继续读取下一条单发任务请求,直至读取完所有扫描到的原始任务文件;
步骤23、下行预处理装置对扫描到的原始任务文件中的每一接入号和优先级对应的单发任务请求总数进行统计,并将同一接入号和优先级的单发任务请求写入到若干个新生成的子任务文件中,从而使得每个子任务文件中的单发任务请求总数低于一个预先设置的阈值,然后在数据库中为所述接入号和优先级对应的单发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件,所述阈值可以根据短彩网关/或中心分配的下行链路流控速率来取值,从而确保单发任务记录的每个子任务记录能在较短的时间内处理完成;
单发任务记录的ID固定采用“接入号+优先级”进行标示,也就是说,针对同一接入号且同一优先级的单发任务请求,下行预处理装置会将其划入到同一单发任务记录中,由于原始任务文件中不同接入号的单发任务请求混杂在一起,下行预处理装置可以按照一定策略,将原始任务文件归类合并成可以被调度执行的单发任务及子任务;例如,当阈值设置为100时,如果原始任务文件中接入号“1065700”和优先级“2”对应的单发任务请求总数为250条,则生成3个子任务文件来保存这250条单发任务请求,同样,接入号“1065800”和优先级“2”对应的单发任务请求总数为60条,则生成1个子任务文件即可;
步骤24、下行预处理装置定时对数据库中的每条群发任务记录逐一扫描,并统计数据库中每条群发任务记录对应的原始任务文件的群发用户号码总数,然后将所述原始任务文件拆分成若干个新生成的子任务文件,从而使得每个子任务文件中的群发用户号码总数低于一个预先设置的阈值,然后在数据库中为所述群发任务记录新增若干个下属的子任务记录,每个子任务记录对应一个子任务文件,所述阈值可以根据短彩网关/或中心分配的下行链路流控速率来取值,从而确保群发任务记录的每个子任务记录能在较短的时间内处理完成。
当所述单/或群发任务请求是发送彩信时,还需将彩信所关联的彩信附件一并归并到所述单/或群发任务请求所属的单/或群发子任务目录下。
图4步骤三中,下行调度装置采用拉模式的任务分配机制,为每一个与链路绑定的接入号构建一个任务调度通道,在同一任务调度通道内部,通过各种调度策略控制其多个任务之间的执行顺序,通道和通道之间互相不影响;同样,也可以根据消息负荷的大小,构建多个消息收发装置,每个消息收发装置内部还可以为每个接入号构建多个消息发送通道,如图7所示,图4步骤三进一步包括有:
步骤31、下行调度装置内部为每个接入号构建一个任务调度通道,并从数据库中为每个任务调度通道实时读取其接入号对应的所有单和群发任务记录;
步骤32、下行调度装置根据调度策略(例如优先级或比重),从每个任务调度通道的所有单和群发任务记录中挑选出一个单或群发任务记录作为所述任务调度通道的当前任务;
步骤33、当下行调度装置接收到消息收发装置的一个消息发送通道发送来的申请消息任务请求时,所述申请消息任务请求中携带有接入号,下行调度装置获取所述接入号对应的任务调度通道的当前任务,并将所述当前任务的一个子任务记录及其对应的子任务文件发送给消息收发装置对应的消息发送通道;
步骤34、消息收发装置的消息发送通道根据子任务记录及其对应的子任务文件发送对应的短彩信。
图7步骤32中,下行调度装置还可以采用整形数字描述单发和群发任务记录的优先级级别,数字越大,级别越高。为了区分和统一调配群发任务记录和单发任务记录的执行顺序,下行调度装置内部可以用偶数标示单发任务记录的优先级级别,用奇数标示群发任务记录的优先级级别,这样,同一优先级下,单发任务记录的优先级要高于群发任务记录的优先级,既实现了单发和群发的统一调度,又在一定程度上满足了单发消息实时性高的要求。例如对于低优先级的群发任务记录和单发任务记录,其优先级级别分别设为1和2;对于中优先级的群发任务记录和单发任务记录,其优先级级别分别设为3和4;对于高优先级的群发任务记录和单发任务记录,其优先级级别分别设为5和6。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。