本发明涉及通信领域,具体涉及一种消息推送方法及推送服务器。
背景技术:
随着IPTV(Internet Protocol Television,交互式网络电视)系统中用户增多,IPTV的消息交互是典型的业务需求,在此业务场景下,会存在各种业务终端、机顶盒,对于拥有这些终端和机顶盒的用户,他们属于不同的策略分组,不同的业务区,不同的兴趣套餐,喜欢不同的节目频道等等,也就是说这些用户对各种需求是存在差异化的,为了保证交互消息的高效及时精准送达给用户,是十分必要的。为了保证各种消息以不同方式精准及时送达到有效的用户手中,当前通过中心数据库维护各用户的用户信息的消息推送方式。但这种推送方式灵活性和及时性方面都不能满足当前的需求,比如当前需要向某个策略分组的在线用户进行某个消息推送,因为终端的详细业务数据信息均保存在业务数据库中,需要把业务数据库中的的用户数据同步到中心数据库中;然后当前的系统在每次推送前,均需要到中心数据库中查找到该策略分组的所有的在线用户,然后根据这些查找到的用户匹配后进行消息推送,这种处理方式比较低效,每次从数据库进行数据的查找,已经成为处理效率的瓶颈,而且这种消息推送方式不够灵活。
技术实现要素:
本发明要解决的主要技术问题是,提供一种消息推送方法及推送服务器,解决现有消息推送需从中心数据库中进行用户的查找匹配后进行推送,导致推送效率低、推送方式不灵活的问题。
为解决上述技术问题,本发明提供一种消息推送方法,包括:
推送服务器在本地创建用户索引表,所述用户索引表包含用户索引以及各用户索引对应的索引值;所述索引值为推送服务器从各用户的用户信息中获取;
推送服务器接收具有包含推送策略的推送指令,所述推送策略包含至少一个目标用户索引以及该目标用户索引对应的目标索引值;
推送服务器从所述用户索引表中查找到用户索引与所述目标用户索引相同、且索引值与所述目标索引值匹配的用户作为此次推送的目标用户;
推送服务器向所述目标用户推送消息。
在本发明的一种实施例中,所述用户索引包括用户基本信息索引和用户业务信息索引中的至少一种。
在本发明的一种实施例中,所述用户索引包括用户基本信息索引时,所述推送服务器从用户的用户信息提取用户基本信息索引的索引值包括:
从用户的注册消息中获取用户基本信息,从所述用户基本信息中提取用户基本信息索引的索引值。
在本发明的一种实施例中,所述用户索引包括用户业务信息索引时,所述推送服务器从用户的用户信息提取用户业务信息索引的索引值包括:
从用户注册消息中获取用户基本消息;
从所述用户基本消息中提取用户账号和认证字段并发给认证服务器进行认证;
接收认证服务器在对所述用户认证成功时推送的用户业务信息;
从所述用户业务信息中提取所述用户业务信息索引的索引值。
在本发明的一种实施例中,所述用户基本信息索引包括终端类型、终端号、用户账号中的至少一种。
在本发明的一种实施例中,所述用户业务信息索引包括所属位置区域、所 属业务分区、所属用户分组中的至少一种。
在本发明的一种实施例中,所述推送服务器在本地创建用户索引表为在本地内存中创建用户索引表。
在本发明的一种实施例中,所述推送指令还包括推送内容,所述推送服务器向所述目标用户推送消息包括:
从所述目标用户中选择出当前在线的在线目标用户;
向所述在线目标用户推送包含所述推送内容的消息。
为了解决上述问题,本发明还提供了一种推送服务器,包括:
创建模块,用于在所述推送服务器本地创建用户索引表,所述用户索引表包含用户索引以及各用户索引对应的索引值;所述索引值为所述创建模块从各用户的用户信息中获取;
接收模块,用于接收具有包含推送策略的推送指令,所述推送策略包含至少一个目标用户索引以及该目标用户索引对应的目标索引值;
匹配模块,用于从所述用户索引表中查找到用户索引与所述目标用户索引相同、且索引值与所述目标索引值匹配的用户作为此次推送的目标用户;
推送模块,用于向所述目标用户推送消息。
在本发明的一种实施例中,所述用户索引包括用户基本信息索引和用户业务信息索引中的至少一种。
在本发明的一种实施例中,所述创建模块包括基本索引提取子模块,用于在所述用户索引包括用户基本信息索引时,从用户的注册消息中获取用户基本信息,并从所述用户基本信息中提取用户基本信息索引的索引值。
在本发明的一种实施例中,所述创建模块包括业务索引提取子模块,所述业务索引提取子模块包括认证处理单元和提取单元;
所述认证处理单元用于在所述用户索引包括用户业务信息索引时,从用户注册消息中获取用户基本消息,从所述用户基本消息中提取用户账号和认证字段并发给认证服务器进行认证,接收认证服务器在对所述用户认证成功时推送的用户业务信息;
所述提取单元用于从所述用户业务信息中提取所述用户业务信息索引的索引值。
在本发明的一种实施例中,创建模块包括内存创建子模块,用于在所述推送服务器内存中创建所述用户索引表。
本发明的有益效果是:
本发明提供的消息推送方法及推送服务器,推送服务器在本地创建用户索引表,该用户索引表包含用户索引以及各个用户索引对应的索引值;索引值为推送服务器从各用户的用户信息中获取;然后推送服务器接收包含推送策略的推送指令,该推送策略包含至少一个目标用户索引以及该目标用户索引对应的目标索引值;推送服务器从之前本地建立的用户索引表中查找到用户索引与目标用户索引相同、且索引值与目标索引值匹配的用户作为此次推送的目标用户,然后向对应的目标用户推送消息。也即本发明中的推送服务器在本地创建好包含用户索引以及对应索引值的用户索引表,在进行消息推送时直接根据本地的用户索引表匹配到相应的目标用户进行消息的推送。并不需要到中心数据库中进行匹配查找,消息推送的效率相对现有更高,推送方式也更为灵活。
另外,IPTV系统中推送服务器是分布式设计,因此所创建的用户索引表也是一种分布式索引,因此占用的资源对各推送服务器基本没有影响,且能保证推送效率。
附图说明
图1为本发明实施例一提供的消息交互系统架构图;
图2为本发明实施例一提供的消息推送方法流程示意图;
图3为本发明实施例一提供的用户业务信息索引获取流程示意图;
图4为本发明实施例一提供的信息推送过程流程示意图;
图5为本发明实施例一提供的另一消息推送方法流程示意图;
图6为本发明实施例二提供的推送服务器结构示意图;
图7为图6中的创建模块结构示意图。
具体实施方式
本发明通过推送服务器在本地创建好包含用户索引以及对应索引值的用户索引表,在进行消息推送时直接根据本地的用户索引表匹配到相应的目标用户进行消息的推送。并不需要到专门的数据库中进行匹配查找,消息推送的效率相对现有更高,推送方式也更为灵活。下面通过具体实施方式结合附图对本发明作进一步详细说明。
实施例一:
为了更好的理解本发明,本实施例首先以一种示例行的消息交互系统架构进行说明。请参见图1所示,该系统包括业务管理平台、接入服务器、推送服务器以及业务认证平台和终端(可以是机顶盒、终端或PAD等)。终端在开机后,首先会到接入服务器进行接入,接入服务器根据负载均衡等规则为该终端分配一个合适的推送服务器,此时终端根据分配的推送服务器到该推送服务器进行注册以及认证处理。在注册过程中,终端会向推送服务器上报自身的一些基本信息。但是对于策略分组、所处的业务区这些业务信息终端无法上报,这些信息存在于IPTV业务系统的业务数据库中;现有的做法需定时将这些业务数据同步到中心数据库中,这种做法不仅增加了系统部署成本,而且消息推送系统的分布式效果也受到制约。本实施例中,终端到推送服务器进行认证时,推送服 务器会根据该终端对应的用户信息,到IPTV业务系统实时获取该用户的相关信息(包括业务数据等)。具体可通过将该用户的信息以及认证信息发送到IPTV业务系统的业务认证平台进行用户的合法性验证,验证通过后的业务认证平台从业务数据库中获取到该用户的业务信息,包括但不限于所属省份、所属城市、所属用户分组、所属业务区等等,然后将获取业务信息反馈给推送服务器。也即,本实施例中的推送服务器可以获取到用户的基本信息和业务信息。下面本实施例对本发明中的消息推送方法进行示例性说明,请参见图2所示,包括:
步骤201:推送服务器在本地创建用户索引表;
该步骤中的用户索引表包含用户索引以及各用户索引对应的索引值,该索引值为推送服务器从各用户的用户信息中获取;
步骤202:推送服务器接收具有包含推送策略的推送指令,该推送策略包含至少一个目标用户索引以及该目标用户索引对应的目标索引值;
步骤203:推送服务器从用户索引表中查找到用户索引与所述目标用户索引相同、且索引值与目标索引值匹配的用户作为此次推送的目标用户;
步骤204:推送服务器向目标用户推送消息。
在本实施例中,用户索引包括用户基本信息索引和用户业务信息索引中的至少一种。此处的用户基本信息索引是指以用户基本信息作为索引,该用户信息包含但不限于终端类型、终端号、用户账号中的至少一种;对应的索引值就是具体的用户信息,例如对于终端类型,其索引值为具体的类型信息,例如手机、机顶盒、PAD等等。此处的用户业务信息索引是指以用户业务数据作为索引,该业务数据包括但不限于所属位置区域、所属业务分区、所属用户分组中的至少一种。对应的索引值就是具体的业务数据,例如所属位置区域为广东省深圳市,对应的索引值就为广东省深圳市。另外,本实施例中的所属位置区域索引 还可进一步细分为所属省份、所属城市等。
在本实施例中,用户索引包括用户基本信息索引时,推送服务器从用户的用户信息提取用户基本信息索引的索引值包括:
推送服务器从用户的注册消息中获取用户基本信息,从该用户基本信息中提取用户基本信息索引的索引值。
具体的,用户先到接入服务器接入,接入服务器为该用户分配一个推送服务器,用户到该推送服务器进行注册及认证,在用户进行注册时,向推送服务器推送用户基本信息,主要包括具体的终端类型、终端号、用户账号、认证字段(usertoken)、以及相应的IP地址、端口。
用户索引包括用户业务信息索引时,推送服务器从用户的用户信息提取用户业务信息索引的索引值的过程请参见图3所示,包括:
步骤301:推送服务器从用户注册消息中获取用户基本消息;
步骤302:推送服务器从用户基本消息中提取用户账号和认证字段并发给认证服务器进行认证;
步骤303:推送服务器接收认证服务器在对用户认证成功时推送的用户业务信息;认证服务器对该用户认证通过后,会从IPTV系统中的业务数据库中提取该用户的业务信息反馈给推送服务器;该用户业务信息具体包括但不限于所属省份、所属城市、所属用户分组、所属业务分区等;
步骤304:从用户业务信息中提取用户业务信息索引的索引值。
另外,为了更进一步提升消息推送效率,上述步骤201中推送服务器具体可在本地内存中创建用户索引表;这样推送服务器可直接在内存中的用户索引表中根据目标用户索引从该用户索引表中匹配到对应的目标用户。
本实施例中,推送指令除了包括推送策略外,还包括此次需要推送的推送 内容。上述步骤204中推送服务器可直接向选出的所有目标用户推送包含上述推送内容的推送消息。也可仅向上述目标用户中当前在线的那部分推送,具体的过程请参见图4所示,包括:
步骤401:推送服务器从目标用户中选择出当前在线的在线目标用户,终端可通过心跳等机制与推送服务器维护在线状态,因此推送服务器可以轻易确定哪些当前在线,哪些当前不在线;
步骤402:推送服务器向在线目标用户推送包含推送内容的推送消息。
为了更好的理解本发明,下面以一个完整的推送流程为示例,对本发明做示例性的说明。该过程请参见图5所示,包括:
步骤501:接入服务器和推送服务器根据当前的网络情况,进行配置,配置完成后,启动运行;
步骤502:终端(可以是手机、机顶盒、PAD等)到接入服务器进行接入,接入服务器根据用户账号进行负载均衡,将负载均衡获取到的推送服务器信息返回给终端;
步骤503:终端根据获取到的推送服务器详细信息,到推送服务器进行注册上报认证;注册时,上报终端的基本信息(包括但不限于:终端类型、终端号、用户账号、认证字段(usertoken)、以及相应的IP地址、端口);
步骤504:推送服务器接收到终端的注册消息,将其中的用户账号和认证字段发送到IPTV业务系统的业务认证平台,IPTV业务系统的业务认证平台到业务数据库中对该用户进行认证,检查该用户是否是合法的IPTV用户,如果认证通过,则会向推送服务器返回认证成功,同时IPTV系统的业务认证平台还可从IPTV系统的业务数据库中获取该终端的业务信息(包括但不限于:所属省份,所属城市,所属用户分组,所属业务分区),将这些信息返回给推送服务器;
步骤505:推送服务器在收到IPTV系统的业务认证平台返回的认证通过的消息后,同时接收IPTV业务认证平台返回的该用户的业务信息,对该用户的相关业务信息在内存中维护起来,同时对相关的业务数据进行索引创建与维护(创建的索引包括:终端号、用户账号、所属城市、所属省份,所属业务分区、所属用户分组,并提取该用户各索引的索引值;应当理解的是,索引除了上述示例外,可以根据具体需求灵活设置);本实施例中的索引在内存中可采用key-value的形式进行维护;每个推送服务器维护自己的索引数据信息,因为推送服务器为多个分布式设计,同一个用户分组的用户可能分布在多台推送服务器上,因此推送服务器所创建的索引是一种分布式内存索引。同时该终端的基本信息和详细业务信息也可在推送服务器本地磁盘上进行分布式存储,以保证如果推送服务器中途异常重启,在重启后,相关的终端信息直接从本地磁盘重新读入,以及对应的索引也将被重建,这样就不需要终端的再次注册,以及从数据库再次认证上报的过程。为了保证推送服务器内存的开销,可在内存中的若干索引所维护的实体基础数据仅存在一份。
步骤506:终端注册成功后,可以通过心跳保活消息维护终端的活动状态。
步骤507:向接入服务器发送推送指令;消息系统的WEB门户在创建需要推送的消息时,可以在推送指令中进行灵活的推送策略设置,比如可以选择向某个业务区的用户进行消息推送,或者选择向VIP用户、向订购了某个产品包的用户进行推送。WEB在将待推送消息创建好并选择了对应的用户策略后,将需要推送的消息首先发送到接入服务器,推送消息包含推送策略和推送的实际内容,推送策略比如是向某个业务区的IPTV用户进行消息推送,由接入服务器再分发到实际负责消息推送的推送服务器;
步骤508:由于某个业务区的IPTV用户可能会分布在多台推送服务器上, 因此接入服务器会将从管理平台收到的推送指令推送给所有的推送服务器,由各个推送服务器再进行用户的分拣和消息推送;
步骤509:所有的推送服务器在收到接入服务器的消息后,根据推送指令中的推送策略,在自身的内存用户索引表中将符合条件的用户查找出来,此时推送服务器根据内存中维护的用户的索引信息,直接从内存中定位查找出符合条件的所有目标用户的用户信息,和传统的到中心数据库查找方式相比,该方法查询速度比较快;
步骤510:推送服务器将用户信息查找出来后,将推送消息推送至查询出的且当前在线的目标用户。
实施例二:
本实施例提供了一种推送服务器,请参见图6所示,其包括:
创建模块1,用于在推送服务器本地创建用户索引表,用户索引表包含用户索引以及各用户索引对应的索引值;索引值为创建模块1从各用户的用户信息中获取;
接收模块2,用于接收具有包含推送策略的推送指令,推送策略包含至少一个目标用户索引以及该目标用户索引对应的目标索引值;
匹配模块3,用于从用户索引表中查找到用户索引与目标用户索引相同、且索引值与目标索引值匹配的用户作为此次推送的目标用户;
推送模块4,用于向目标用户推送消息。
本实施例中的用户索引包括用户基本信息索引和用户业务信息索引中的至少一种。此处的用户基本信息索引是指以用户基本信息作为索引,该用户信息包含但不限于终端类型、终端号、用户账号中的至少一种;对应的索引值就是具体的用户信息,例如对于终端类型,其索引值为具体的类型信息,例如手机、 机顶盒、PAD等等。此处的用户业务信息索引是指以用户业务数据作为索引,该业务数据包括但不限于所属位置区域、所属业务分区、所属用户分组中的至少一种。对应的索引值就是具体的业务数据,例如所属位置区域为广东省深圳市,对应的索引值就为广东省深圳市。另外,本实施例中的所属位置区域索引还可进一步细分为所属省份、所属城市等。
在本实施例中,用户索引包括用户基本信息索引时,请参见图7所示,创建模块1包括基本索引提取子模块11,用于在用户索引包括用户基本信息索引时,从用户的注册消息中获取用户基本信息,并从用户基本信息中提取用户基本信息索引的索引值。
用户索引包括用户业务信息索引时,请参见图7所示,创建模块1包括业务索引提取子模块12,业务索引提取子模块12包括认证处理单元121和提取单元122;
认证处理单元121用于在用户索引包括用户业务信息索引时,从用户注册消息中获取用户基本消息,从用户基本消息中提取用户账号和认证字段并发给认证服务器进行认证,接收认证服务器在对所述用户认证成功时推送的用户业务信息;
提取单元122用于从用户业务信息中提取所述用户业务信息索引的索引值。
本实施例中的创建模块1具体包括内存创建子模块,用于在推送服务器内存中创建所述用户索引表。这样推送服务器可直接在内存中的用户索引表中根据目标用户索引从该用户索引表中匹配到对应的目标用户。
推送模块4向目标用户推送消息时,可直接向选出的所有目标用户推送包含上述推送内容的推送消息。也可仅向上述目标用户中当前在线的那部分推送,推送模块4从目标用户中选择出当前在线的在线目标用户,终端可通过心跳等 机制与推送服务器维护在线状态,因此推送模块4可以轻易确定哪些当前在线,哪些当前不在线。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。