一种基于无线会话协议实现数据快速处理的方法

文档序号:7657042阅读:105来源:国知局
专利名称:一种基于无线会话协议实现数据快速处理的方法
技术领域
本发明涉及WAP (无线应用协议)技术,尤其涉及的是, 一种基于无 线会话协议(WSP, Wireless Session Protocol)实现面向连接服务的数据快 速处理的方法。
背景技术
目前,使用手才几通过WAP上网的用户越来越多,而WAP网关服务器 是手机上网的一个关键设备,它的主要职责是提供与手机端对等的协议栈 实现,对手机与内容服务器之间的数据包进行内容转换,并保证数据包的 安全传输。WAP网关服务器是手机上网中的核心枢纽设备,其性能高低直 接影响到数据包的传输速度、同时在线的用户数量以及终端手机用户的满 意度等。WSP协议是WAP协议的核心之一,它提供了一种方法,使得相互协 作的客户端/服务器应用程序之间,能够进行有组织的数据交换。WSP有两 种会话服务面向连接服务和面向无连接服务。现网绝大部分用户上网采 用面向连接服务,首先建立可靠的从客户端到服务器的会话,而在使用完 服务之后,并有序释放该会话。现有技术中,WAP网关采用消息驱动机制, 使用动态内存分配的队列来实现接收和发送数据包,在处理收到的数据包 时又频繁使用了动态内存分配队列来存储相关处理结果,同时使用网关IP 地址端口和手机IP地址端口都是以字符串的形式来作索引查找方式,这种 WSP协议面向连接服务的实现算法直接影响了 WAP网关的性能,不仅占 用更多的存储空间,而且不方便判断比较,这样就导致了 WAP网关性能下 降,迩降低了 WAP网关的稳定性。因此,现有技术存在缺陷,需要改进。 发明内容本发明所要解决的技术问题是提供一种新的基于无线会话协议实现数 据快速处理的方法,避免内存频繁申请释放带来的系统开销,以占用更少的存储空间,避免不方便判断比较的缺陷,用于提高WAP网关性能和稳定 性。本发明的技术方案如下一种基于无线会话协议实现数据快速处理的方法,其包括以下步骤 Al、预建立哈希索引数组、会话状态机数组和方法状态机数组;A2、从消 息队列中获取用户请求消息,计算其哈希键值,在所述哈希索引数组中, 查询是否存在所述消息的会话ID,否则为该用户建立会话并创建所述会话 信息;A3、根据所述消息的会话ID,在所述方法状态机数组中,查询是否 存在所述会话ID对应的方法状态机信息,否则为所述消息创建方法状态机 信息;A4、根据所述消息及其方法状态机信息进行数据处理,并更新所述 方法状态机数组中存储的方法状态机信息。所述的方法,其中,步骤Al之后还执行以下步骤All、判断用户上 网,则为该用户建立会话并创建所述会话信息;创建所述会话信息包括, 将所述会话信息存储在所述会话状态机数组的某一会话元素,并将所述会 话元素的下标作为会话ID,存储在所述哈希索引数组;或者,A12、判断 所述用户上网收发消息,则为每次交互的消息创建方法状态机信息;创建 方法状态机信息包括,将当前交互的消息所处理的方法状态机信息及其所 属会话的会话ID,存储在所述方法状态机数组的某一方法元素;或者,A13、 判断所述用户结束上网或者超时未操作,则断开所述会话,释放其占用的 所述方法状态机数组的方法元素、所述会话状态机数组的会话元素、所述
哈希索引数组的索引元素。所述的方法,其中,步骤A12之后还包括以下步骤定期检查所述会话状态机数组,清理超时的会话元素。所述的方法,其中,根据WAP网关的运行能力,预设置所述哈希索引 数组、所述会话状态机数组和所述方法状态机数组的大小。所述的方法,其中,所述方法元素的下标为网关分配的方法状态机ID; 并且,步骤A2之前还执行以下步骤A20:网关判断所述消息为服务器返回的 消息并具有所述方法状态机ID,则在方法状态机信息数组中查找所述消息 的方法状态机信息,执行步骤A4;否则执行步骤A2。所述的方法,其中,步骤A2中所述哈希键值,根据用户的IP地址和 端口 、以及WAP网关的IP地址和端口 ,通过哈希算法计算得到。所述的方法,其中,步骤A2还包括以下步骤A21:判断查询结果超过 一个会话ID,则才艮据各会话ID所对应会话的用户的IP地址,查询所述消 息所属的用户建立的会话,采用其会话ID。所述的方法,其中,采用多个会话元素中的会话信息作为链表,进行 顺序查询所述消息所属的用户建立的会话。所述的方法,其中,根据各会话ID所对应会话的用户的IP地址和端 口,查询所述消息所属的用户建立的会话。所述的方法,其中,步骤A4之后还执行以下步骤A5:释放所述消息 占用的方法状态机信息数组的方法元素。采用上述方案,本发明通过数组固定分配内存,将消息处理流程映射 到数组中,通过哈希(Hash)键值快速确定消息处理的状态机的元素,解 决了动态内存分配方法频繁对内存申请释放带来的系统开销,并且提高了 运行效率,减少了所占用的存储空间,避免了不方便判断比较的缺陷;另 外使用数组存储会话信息,每一个会话对应一个手机用户,'因此提高了同
时在线的手机用户凄t量和WAP网关并发处理能力,乂人而提高WAP网关性 能和稳定性。


图1为本发明方法的手机用户发送请求消息处理的工作流程示意图; 图2为本发明方法的WSP面向连接服务的数据处理结构示意图。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。本发明通过采用数组的固定内存分配方式,结合哈希查找算法对数据 包按手机用户归类处理,将数据包处理流程映射为两级哈希查找,以达到 快速处理数据包的目的。因此,如图1所示,本发明提供了一种基于无线 会话协议实现数据快速处理的方法,以下对其步骤进行具体说明。Al、预建立卩合希索引数组、会话状态机数组和方法状态机数组;在建 立各数组时,可以才艮据WAP网关的运行能力,预设置所述哈希索引数组、 所述会话状态机数组和所述方法状态机数组的大小。哈希索引数组存储会话ID,指向会话状态机数组;会话状态机数组存 储会话信息, 一个会话信息可以指向方法状态机数组的多个方法状态机信 息。具体地说,所述的哈希索引数组中的元素存储WAP网关和手机用户建 立的会话ID;会话状态机信息数组中的元素存储手机和WAP网关建立的 会话信息;方法状态机信息数组中存储所属会话的ID,以及当前消息处理 的状态才几信 息o在步骤Al之后还可以执行以下各步骤。All、判断用户上网,为该用户建立会话并创建所述会话信息;所述创 建所述会话信息包括,将所述会话信息存储在所述会话状态机数组的某一 会话元素,并将所述会话元素的下标作为会话ID,存储在所述哈希索引数组。A12、判断所述用户上网收发消息,为每次交互的消息创建方法状态机信息;、所述创建方法状态机信息包括,将当前交互的消息所处理的方法状 态机信息及其所属会话的会话ID,存储在所述方法状态机数组的某一方法 元素,即通过相应的处理,将所述会话ID相同的方法元素和会话元素相关 联。之后还可以包括以下步骤定期检查所述会话状态机数组,清理超时 的会译元素;可以按系统管理者预设的时间定期清理,例如,使用定时器 模块定期检查会话状态机信息数组的元素,清理超时的会话。A13、判断所述用户结束上网或者超时未操作,则断开所述会话,释放 其占用的所述方法状态机数组的方法元素、所述会话状态机数组的会话元 素、所述哈希索引数组的索引元素。当手机下线或者超时网关主动断开会 话,首先释放会话所属的占用方法状态机信息元素,再释放被占用的会话 状态机信息元素,相应的哈希索? 1数组中对应的元素也要释放掉。需要说明的是,上述各步骤All、 A12和A13可以分别独立执行,也 可以按预设置顺序执行,例如,先执行Alll、再执行A12,然后执行A13。A2、从消息队列中获取用户请求消息,计算其哈希键值(KeyValue), 在所述哈希索引数组中,查询是否存在所述消息的会话ID,否则为该用户 建立会话并创建所述会话信息;创建所述会话信息如上所述。其中,所述 哈希键值,可以根据用户的IP地址和端口 、以及WAP网关的IP地址和端 口,通过哈希算法计算得到。一个实施例可以是,步骤A2还包括以下步骤A21:判断查询结果超过 一个会话ID,则根据各会话ID所对应会话的用户的IP地址,查询所述消 息所属的用户建立的会话,采用其会话ID。例如,采用多个会话元素中的 会话信息作为链表,进行顺序查询所述消息所属的用户建立的会话。又如, 根据各会话ID所对应会话的用户的IP地址和端口 ,查询所述消息所属的 用户建立的会话。 '
即,在出现哈希冲突时,例如一个KEY值对应多个会话,可以将多个 会话信息元素设计为链表顺序查询,比较手机用户的IP地址,或者比较手 机用户的IP地址和端口,直到找出该手机用户建立的会话。手机用户在某 一时刻,可能发送多个请求方法, 一个会话同样可以对应多个方法状态机 信息,将方法状态机信息数组元素同样也设计为链表式查询,根据消息中 携带的服务标志找到手机请求的方法状态机信息元素。另 一个实施例可以是采用网关分配的方法状态机ID作为所述方法元素 的下标,此时,步骤A2之前还执行以下步骤A20:网关判断所述消息为服 务器返回的消息并具有所述方法状态机ID,则在方法状态机信息数组中查 找所述消息的方法状态机信息,执行步骤A4;否则执行步骤A2。即可以 对服务器返回的消息进行快速处理。A3、根据所述消息的会话ID,在所述方法状态机数组中,查询是否存 在所述会话ID对应的方法状态机信息,否则为所述消息创建方法状态机信 息;创建方法状态^M言息如上所述。A4、根据所述消息及其方法状态机信息进行数据处理,并更新所述方 法状态机数组中存储的方法状态机信息。更好的是,在本发明所述的任一实施例中,在步骤A4之后还可以执行 以下步骤A5:释》文所述消息占用的方法状态机信息数组的方法元素。例如,简单的说,本发明提供了一种无线会话协议下的数据快速处理 方法,包括以下关键步骤,A. 创建一个哈希索引数组, 一个会话状态机信息数组(即会话状态机 数组)以及一个方法状态机信息数组(即方法状态机数组)。B. 获取WSP模块中的消息队列中的消息,并对该消息进行哈希操作, 计算一个哈希KEY值,所述的哈希KEY值,可以通过手机用户的IP地址、 端口和WAP网关的IP地址、端口通过哈希算法计算而得。C. 手机一上线则建立一个会话,占用会话状态机信息数组中的一个元素存储会话状态机信息,相应占用哈希索引数组一个元素存储会话ID。当WSP收到底层发来的请求消息时,根据哈希KEY值在对应的哈希索引数组 中查询是否存在手机和WAP网关建立的会话ID,如果存在会话ID,则执 行D;如果不存在,则新创建一个会话,再纟丸行D。D. 在线手机发送一个PULL或者接收收一个PUSH消息,'则会占用方 法状态机数组的 一 个元素存储方法状态机的信息,并把这一方法状态机元 素和所属的会话状态机信息数组元素相关联,即设置相同的下标。当WSP 在会话建立后收到请求消息,则根据相关的会话信息在方法状态机信息数 组中查找手机用户请求的方法状态机信息数组元素是否有方法状态机信 息,没有找到则创建一个方法状态机信息。E. 根据接收到的请求消息和找到的手机请求方法状态机信息数组元 素,处理手机请求消息,更新这个状态机信息数组元素中存储的信息。还可以包括WAP网关收到服务器相应消息的处理方法,执行以下步骤F. 根据服务器返回的消息携带的状态机信息ID,直接在方法状态机信 息数组中查找,处理收到的消息,记录状态机新的信息到状态机信息数组 元素中。G. 当方法状态^L流程处理结束后,则释力欠占用的方法状态机信息数组 的元素。以下结合图1,对本发明提供的方法,进行详细说明,手机用户发送请 消息处理的工作流程,采用本发明方法进^f亍处理时,、可以包括如下步骤。 步骤100:开始执行本发明方法。步骤101:创建一个哈希索引数组, 一个会话状态机信息数组以及一个 方法状态才几信息数组。a) WAP网关为每个上线手机用户分配一个会话,每个会话ID对应哈 希索引数组的一个元素。b) 会话状态机信息数组的元素存储手机用户和WAP网关建立起的会 话,每个会话数组元素对应一个手机上线用户。C)方法状态机信息数组存储当前手机请求消息处理的状态机信息,每 个方法状态才几数组元素对应手机用户和应用月良务器之间的 一次交互。同时存储所属的会话ID,即图2所示的各session。d)各数组的大小可以根据运营商明确规定的WAP网关现网运行能力而定。步骤102:从消息队列中读取用户的请求消息,消息中标志手机用户身 份的参数是手机的IP地址和端口 ,根据WAP网关地址端口和手机用户地 址端口进行哈希操作,计算哈希KEY值。KEY值对应哈希索引表的下标。步骤103:根据KEY值到哈希索引表(即哈希索引数组)查找第KEY 个元素中是否存在会话信息,例如,KEY值为17,则到哈希索引表查找第 17个元素是否存在会话信息,不存在转到步骤104,存在则转到步骤105。步骤104:在会话状态机信息数组中找到一个空的元素,建立WAP网 关和此手机用户的会话,并把会话信息存储在这个空元素中,并这个元素 的下表作为会话ID,同时存储会话ID到索引表中第KEY个元素中,和哈 希索引数组关联起来。如果会话状态机信息数组中没有空的元素,则拒绝 和这个手机用户建立会话。步骤105:当手才几用户和WAP网关建立起会话后,手才几发送一个PULL 消息或者接受一个PUSH消息,判断所属会话下是否存在手机请求方法的 方法状态机信息,不存在转到步骤106,存在则转到107。对没有建立起会话,手机就发起的方法请求消息,WAP网关可以直接 抛弃。步骤106,查找方法状态机信息数组的空余元素,建立一个手机用户请 求方法的状态机信息元素,方法状态机信息数组的下标记为WAP网关分配 的方法状态机ID,这个元素空间存储相关的方法状态机信息,并保存所属 会话的ID,与所属的会话状态机信息数组元素关联起来。如果当收到用户
请求方法,方法状态机信息数组中没有空余的元素,则wap网关直接抛弃 此请求消息。步骤107:根据接收到的请求消息和找到的手机请求方法状态机信息数 组元素,处理手机请求消息,更新这个状态机信息数组元素中存储的信息。wap网关对应用月良务器返回的响应消息处理,^T艮据响应消息中携带的 方法状态机id,直接在方法状态机信息数组中查找,找到请求方法信息元 素后处理收到的响应消息,记录状态机新的信息:到状态机信息数组元素中。 当方法状态机流程处理结束后,则释放占用的方法状态机信息数组的元素。 当所属会话下所有的方法状态机处理完成后,则释放占用的会话状态机信 息数组的元素,以备其他所用。同时可以使用定时器周期检查会话信息数 组,清理超时的会话。步骤108:结束执行本发明方法。如图2所示,其包括了各数组的结构示意图,以下结合图2对本发明 为无线会话协议进行数据处理进一步解释。步骤201:无线会话协议提供一个消息队列接受所有的消息,无论消息 是终端的还是服务器端的,统一存放到消息队列,手机发送的请求消息以 手机和wap网关的ip地址端口组成的地址对作为标志,服务器返回的响 应消息以方法状态才几id为标志。wap网关从消息队列获取消息,判断此消息是客户端的还是服务器端 的,客户端的消息可以通过ip地址和端口经哈希操作查找方法状态机,而 服务器端可以根据方法状态机id直接到中查询。步骤202:哈希索引数组中的元素存储会话id,当收到用户的请求消 息时,对手机的ip地址和端口 、以及wap网关的ip地址和端口进行哈希 操作,计算出一个哈希key值。key值表示哈希索引数组的下标,直接在 哈希索引数组中查找是否存已经建立的会话id。由于哈希索引数组是静态分配的,所以根据数组的最大元素个数对key值取余。这样可能出现哈希
冲突,索引表中会话ID并不能表示是这个手机用户建立的会话ID。因此必要时,还需在会话状态机信息数组中作链表顺序查找。如图2所示的会话状态机信息数组中,用户[1](即会话[1]、会话ID[1]) 的KEY值为l,其对应哈希索引数组的索引[l],方法状态机信息数组的方 法[O],步骤203:手才几每一上线就和WAP网关建立一个会话,将会话状态机 信息数组的下标分配给每一个会话ID,这个会话ID存储哈希索引数组中, 当在哈希索? 1数组中找到这个会话ID时直接到会话状态机信息数组中查找 建立的会话。对于哈希冲突的现象,如图2中哈希KEY值为17时,对应 了3个会话,包括Session:28、 Session:14、 Session:0 (即会话ID );当WAP 网关收到手机请求消息后,从哈希索引数组中首先找到会话28,然后对这 三个会话28、 14、 0所组成的链表进行查找,例如作顺序查找。查找条件 可以为手才几的IP地址和端口 ,也可以仅为手才几的IP地址;因为每个手才几上 线时,WAP网关会为它分配一个唯一的IP地址。如果没有找到,则创建一 个新会话,链接到会话0后面,组成4个元素的链表。步骤204:手才几和WAP网关建立起会话后,手机开始和服务器交换数 据,通过PULL或者PUSH方法。方法状态机数组下标分配为方法状态机 ID,在会话信息数组中查到状态机ID,就可直接查找到方法状态机数组中 元素。每个会话可能对应多个方法,所以所属会话相同的方法状态机元素 也可以组成链表作顺序查找。本发明对各种查找方法并无限制。应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以 改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护 范围。
权利要求
1、一种基于无线会话协议实现数据快速处理的方法,其包括以下步骤A1、预建立哈希索引教组、会话状态机数组和方法状态机数组;A2、从消息队列中获取用户请求消息,计算其哈希键值,在所述哈希索引数组中,查询是否存在所述消息的会话ID,否则为该用户建立会话并创建所述会话信息;A3、根据所述消息的会话ID,在所述方法状态机数组中,查询是否存在所述会话ID对应的方法状态机信息,否则为所述消息创建方法状态机信息;A4、根据所述消息及其方法状态机信息进行数据处理,并更新所述方法状态机数组中存储的方法状态机信息。
2、 根据权利要求1所述的方法,其特征在于,步骤A1之后还执行 以下步骤All、判断用户上网,则为该用户建立会话并创建所述会话信息;创 建所述会话信息包括,将所述会话信息存储在所述会话状态机数组的某 一会话元素,并将所述会话元素的下标作为会话ID,存储在所述^^合希索 引数组;或者,A12、判断所述用户上网收发消息,则为每次交互的消息创建方法 状态机信息;创建方法状态机信息包括,将当前交互的消息所处理的方 法状态机信息及其所属会话的会话ID,存储在所述方法状态机数组的某 一方法元素;或者,A13、判断所述用户结束上网或者超时未操作,则断开所述会话, 释放其占用的所述方法状态机数组的方法元素、所述会话状态机数组的 会话元素、所述哈希索引数组的索引元素。
3、 根据权利要求2所述的方法,其特征在于,步骤A12之后还包括 以下步骤定期4企查所述会话状态机数组,清理超时的会话元素。
4、 根据权利要求1所述的方法,其特征在于,根据WAP网关的运 行能力,预设置所述哈希索引数组、所述会话状态机数组和所述方法状态 才几凄t组的大小。
5、 根据权利要求1所述的方法,其特征在于,所述方法元素的下标 为网关分配的方法状态积iID;并且,步骤A2之前还执行以下步骤A20:网关判断所述消息为服务器返 回的消息并具有所述方法状态机ID,则在方法状态机信息数组中查找所 述消息的方法状态机信息,执行步骤A4;否则执行步骤A2。
6、 根据权利要求1所述的方法,其特征在于,步骤A2中所述哈希 键值,根据用户的IP地址和端口 、以及WAP网关的IP地址和端口 ,通过 哈希算法计算得到。
7、 根据权利要求1所述的方法,其特征在于,步骤A2还包括以下 步骤A21:判断查询结果超过一个会话ID,则根据各会话ID所对应会话的 用户的IP地址,查询所述消息所属的用户建立的会话,采用其会话ID。
8、 根据权利要求7所述的方法,其特征在于,采用多个会话元素中 的会话信息作为链表,进行顺序查询所述消息所属的用户建立的会话。
9、 根据权利要求7所述的方法,其特征在于,根据各会话ID所对 应会话的用户的IP地址和端口,查询所述消息所属的用户建立的会话。
10、 根据权利要求1至9任一所述的方法,其特征在于,步骤A4之 后还执行以下步骤A5:释放所述消息占用的方法状态机信息数组的方法元 素。
全文摘要
本发明公开了一种基于无线会话协议实现数据快速处理的方法,其包括以下步骤预建立哈希索引数组、会话状态机数组和方法状态机数组;从消息队列中获取用户请求消息,计算其哈希键值,在哈希索引数组中,查询是否存在消息的会话ID,否则为该用户建立会话并创建会话信息;根据消息的会话ID,在方法状态机数组中,查询是否存在会话ID对应的方法状态机信息,否则为消息创建方法状态机信息;根据消息及其方法状态机信息进行数据处理,更新方法状态机数组中存储的方法状态机信息。从而提高了运行效率,减少了存储空间,避免了不方便判断比较的缺陷;提高了同时在线的手机用户数量和WAP网关并发处理能力,从而提高WAP网关性能和稳定性。
文档编号H04L29/06GK101163141SQ200710124720
公开日2008年4月16日 申请日期2007年11月12日 优先权日2007年11月12日
发明者史永奇, 吴丽梅, 申凌海 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1