一种分布式hss数据存储方法和分布式hss数据提取方法

文档序号:7854730阅读:531来源:国知局

专利名称::一种分布式hss数据存储方法和分布式hss数据提取方法
技术领域
:本发明属于电信
技术领域
,更具体地,涉及一种分布式HSS数据存储方法和分布式HSS数据提取方法。
背景技术
:IP多媒体子系统(IPmultimediasubsystem,简称IMS)是一种全新的多媒体业务形式,它能够满足现在的终端客户更新颖、更多样化多媒体业务的需求,是目前固定和移动网络融合演进的基础。归属用户服务器(Homesubscriberserver,简称HSS)作为IMS中最重要的网元之一,承担着保存用户数据和为核心呼叫会话控制功能(Callsessioncontrolfunction,简称CSCF)提供鉴权、路由、认证支持。而目前已部署的IMS网络都是分省或大区独立运营,每个运营域都有建有各自互相独立的集中式HSS数据中心。每个运营域内采用高性能的HSS服务器以满足处理需求,为了保证可靠性,通常采用热双机备份,从HSS服务器保存主HSS中的任何操作和数据更新,当主HSS发生故障不能对外提供服务时,由从HSS迅速切换成为主HSS对外提供服务。同时为了保证数据在发生灾难情况下也不丢失,需要在异地数据中心进行“1+1”或“N+K”地理容灾备份。然而,现有的HSS数据存储方法和数据提取方法却存在以下问题HSS数据中心部署费用昂贵,需要专用高性能服务器;资源浪费,需要专门热双机备份和异地容灾备份,而这些服务器只是进行备份功能不能为外界提供服务;可能出现负载不均衡,因为HSS服务器之间相互独立不能互相分担负载;集群扩容复杂,需要进行复杂的配置和数据转移。
发明内容针对现有技术的缺陷,本发明的目的在于提供一种分布式HSS数据存储方法,旨在解决上述的部署费用昂贵问题和资源浪费问题,保证数据的高可靠性,同时使得系统扩容方便和负载均衡的分布到各个节点。为实现上述目的,本发明提供了一种分布式HSS数据存储方法,包括以下步骤(I)HSS服务器从归属域内的CSCF服务器接收数据写入请求;(2)HSS服务器从数据写入请求取出MPU,并对MPU进行哈希计算,以得到对应的键值;(3)HSS服务器在局部DHT环内查找键值对应的直接后继HSS服务器;(4)HSS服务器将数据写入请求发送到直接后继HSS服务器;(5)直接后继HSS服务器完成数据的写入;(6)直接后继HSS服务器向HSS服务器发送回应消息,告知写入完成;(7)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据写入请求;(8)直接后继HSS服务器从后继节点接收数据副本写入完成的消息;(9)直接后继HSS服务器根据数据写入请求中的IMPU判断写入请求是否来自归属域之外,如果是则流程结束,否则进入步骤(10);(10)直接后继HSS服务器判断是否需要在相邻外域进行数据备份,如果不需要在相邻外域进行数据备份,则流程结束,否则进入步骤(11);(11)直接后继HSS服务器查找相邻外域的路由表,并向相邻外域中的节点发起数据写入请求;(12)相邻外域中的HSS服务器接收归属域的后继HSS服务器的数据写入请求,并返回步骤(2)。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果(I)可扩展性和负载均衡使用分布式哈希表(DistributedHashtable,简称DHT)算法组织HSS服务器构成分布式网络能够将数据负载均衡的分布到每个服务节点,节点可以快速方便的加入和退出网络(2)高可靠性HSS服务器上的用户数据会分别在本地域内保存若干个副本,同时利用全局的分布式DHT网络进行数据异地备份,从而保证数据的高可靠性。本发明的另一目的在于提供一种分布式HSS数据提取方法,旨在解决上述的数据容灾和容错问题,保证数据的高可用性,在部分数据丢失的情况下仍然能够恢复得到数据。为实现上述目的,本发明提供了一种分布式HSS数据提取方法,包括以下步骤(I)HSS服务器从归属域内的CSCF服务器接收数据提取请求;(2)HSS服务器从数据提取请求中取出MPU,并对MPU进行哈希计算,以得到对应的键值;(3)HSS服务器在归属域内查找键值对应的直接后继HSS服务器;(4)HSS服务器将数据提取请求转发到直接后继HSS服务器;(5)直接后继HSS服务器判断是否在自身数据库中查找到IMPU对应的数据,若查找到数据则进入步骤(12),否则进入步骤(6);(6)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据提取请求,并等待返回结果;(7)直接后继HSS服务器上根据所有后继节点上的返回结果,判断是否查找到数据,如果是则进入步骤(12),否则进入步骤(8);(8)直接后继HSS服务器根据数据提取请求中IMPU所属的域名与直接后继HSS所在的归属域的域名对比判断数据提取请求是否来自外域,如果数据提取请求来自外域,则进入步骤(9),否则进入步骤(10);(9)直接后继HSS服务器向最初接收数据提取请求的HSS服务器返回结果,表明要查找的数据不存在,数据读取流程结束;(10)直接后继HSS服务器根据配置文件中的配置判断是否需要进从相邻的外域来查找数据,如果需要则进入步骤(11),否则返回步骤(9);(11)直接后继HSS服务器向键值在相邻外域中对应的直接后继HSS服务器发起数据提取请求,然后返回步骤(5);(12)直接后继HSS服务器根据数据提取请求中的IMPU判断该数据请求是否是来自外域的请求,如果是来自外域进入步骤(13),否则进入步骤(16);(13)直接后继HSS服务器将数据返回给发起请求的外域直接后继HSS服务器,并完成当前所在域中该数据的数据副本一致性维护;(14)归属域中的直接后继HSS服务器向最初发起数据提取请求的HSS服务器返回数据;(15)归属域中的直接后继HSS服务器根据返回的数据完成对其若干后继HSS节点的丢失数据修复工作,过程结束;(16)直接后继HSS服务器向发起数据提取请求的HSS服务器返回数据;(17)直接后继HSS服务器检测当前所在域中数据副本的一致性。步骤(13)包括(13-1)直接后继HSS服务器将外域返回的数据写入到数据库中;(13-2)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发送数据写入请求;(13-3)后继HSS节点接收来自直接后继HSS服务器的数据写入请求,取出完成数据的写入存储工作,并向直接后继HSS服务器发送回应消息告知完成数据写入;(13-4)直接后继HSS服务器接收所有后继节点完成副本写入的消息。步骤(15)包括(15-1)直接后继HSS服务器根据配置文件中的配置向剩余的所有后继HSS节点发送数据检测请求;(15-2)后继HSS节点接收来自直接后继HSS的数据检测请求;(15-3)后继HSS节点在数据库中查找和数据检测请求中对应的数据,如果找到了则进入步骤(15-5),否则进入步骤(15-4).(15-4)后继HSS节点将数据检测请求中携带的数据保存到数据库中,并进入步骤(15-7);(15-5)后继HSS节点检测查找到的数据是否与检测请求中的数据一致,如果一致则进入步骤(I5-7),否则进入步骤(I5-6);(15-6)后继HSS节点将检测请求中的数据写入数据库覆盖原有的不一致的数据;(15-7)后继HSS节点向发起请求的直接后继HSS服务器发送回应消息,告知完成数据一致性检测;(15-8)直接后继HSS服务器接收所有的后继HSS节点的回应消息。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果(I)高可用性当在域内进行数据读取失败的时候,可以从相邻的外域获取数据,保证数据随时可用,不会因为域内数据的丢失导致数据不可用;(2)高一致性在数据读取完成之后,还会自动检测后继的后继节点上的副本数据是否与直接后继上的数据是否一致,如果不一致则会重写副本数据,如果丢失副本数据,则重新写入副本数据。图I是本发明分布式HSS数据存储方法的流程图。图2是本发明分布式HSS数据提取方法的流程图。图3是本方法分布式HSS数据提取方法中步骤(13)的细化流程图。图4是本发明分布式HSS数据提取方法中步骤(15)的细化流程图。图5是本发明分布式HSS数据存储方法的整体拓扑结构图。图6是本发明分布式HSS数据存储方法的节点ID结构示意图。图7是本发明分布式HSS数据存储方法的节点路由表示意图。具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图I所示,本发明分布式HSS数据存储方法包括以下步骤(I)HSS服务器从归属域内的CSCF服务器接收数据写入请求;如图5所示,所有的HSS服务器按照DHT算法共同组成一个全局的DHT环(图中实线所示),同时HSS服务器按照地域位置划分,处于同一个地理位置的HSS服务器再分别组成局部的DHT环(如图中虚线构成的封闭环所示)。不同地理位置(如不同省份)的CSCF都只向各自位置的HSS服务器发起数据写入请求,则这些CSCF和处在同一地理位置(局部DHT环内)的HSS属于同一个归属域。(2)HSS服务器从数据写入请求取出IP多媒体公共标识(IPMultimediaPublicIdentity,简称MPU),并对MPU进行哈希计算,以得到对应的键值;(3)HSS服务器在局部DHT环(如图5中虚线构成的封闭环)内查找该键值对应的直接后继HSS服务器;如图6所示,是加入到DHT网络中的每个HSS服务器的ID构成,即图中的Main-key一共有nbit,Main-key由两部分共同组成,一部分是由HSS的归属域域名经过哈希之后得到的mbit的Domain-key,另一部分是每个HSS节点的名称哈希之后得到的(n_m)bit的Name-key。这样构建的Main-key使得同一个域内的HSS节点都具有同样的前缀Domain-key,使得同一个域内的所有的HSS节点在全局DHT环上分布在一个区间之内,形成图5中虚线所示的局部域,同时每个域内节点具有不同的Name-key使得它们之间得以互相区分。所以在上述步骤中应将IMPU哈希计算得到(n-m)bit键值,然后在归属域内与节点ID值中Name-key部分对比查找到键值对应的直接后继节点。(4)HSS服务器将数据写入请求发送到直接后继HSS服务器;(5)直接后继HSS服务器完成数据的写入;(6)直接后继HSS服务器向HSS服务器发送回应消息,告知写入完成;(7)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据写入请求;(8)直接后继HSS服务器从后继节点接收数据副本写入完成的消息;(9)直接后继HSS服务器根据数据写入请求中的IMPU判断写入请求是否来自归属域之外。如果是则流程结束,否则进入步骤(10);(10)直接后继HSS服务器根据配置文件中的配置判断是否需要在相邻外域进行数据备份,如果不需要在相邻外域进行数据备份,则流程结束,否则进入步骤(11);(11)直接后继HSS服务器查找相邻外域路由表,向相邻外域中节点发起数据写入请求;如图7所示,每个HSS服务器需要维护的路由表包含全局域的路由表,根据全局域路由表可以在全局域内查找节点;相邻域路由表,根据该表中表项可以找到逻辑上顺时针方向与本域相邻的域中节点;域内路由表,根据该表可以进行域内路由找到需要的后继节点。路由表的具体构建算法与各种DHT算法有关,在此不再进行详述。(12)相邻外域中的HSS服务器接收归属域的后继HSS服务器的数据写入请求,并返回步骤(2)。如图2所示,本发明分布式HSS数据提取方法包括以下步骤(I)HSS服务器从归属域内的CSCF服务器接收数据提取请求;(2)HSS服务器从数据提取请求中取出MPU,并对MPU进行哈希计算,以得到对应的键值;(3)HSS服务器在归属域内进查找键值对应的直接后继HSS服务器;(4)HSS服务器将数据提取请求转发到直接后继HSS服务器;(5)直接后继HSS服务器判断是否在自身数据库中查找到HffU对应的数据,若查找到数据则进入步骤(12),否则进入步骤(6);(6)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据提取请求;(7)直接后继HSS服务器上根据所有后继节点上的返回结果,判断是否查找到数据,如果是则进入步骤(12),否则进入步骤(8);(8)直接后继HSS服务器根据数据提取请求中IMPU所属的域名与直接后继HSS所在的归属域的域名对比判断数据提取请求是否来自外域,如果数据提取请求来自外域,则进入步骤(9),否则进入步骤(10);(9)直接后继HSS服务器向最初接收数据提取请求的HSS服务器返回结果,表明要查找的数据不存在,数据读取流程结束;(10)直接后继HSS服务器根据配置文件中的配置判断是否需要进从相邻的外域来查找数据,如果需要则进入步骤(11),否则返回步骤(9);(11)直接后继HSS服务器向键值在相邻外域中对应的直接后继HSS服务器发起数据提取请求,然后返回步骤(5);(12)直接后继HSS服务器根据数据提取请求中的IMPU判断该数据请求是否是来自外域的请求,如果是来自外域进入步骤(13),否则进入步骤(16);(13)直接后继HSS服务器将数据返回给发起请求的外域直接后继HSS服务器,并完成当前所在域中该数据的数据副本一致性维护;(14)归属域中的直接后继HSS服务器向最初发起数据提取请求的HSS服务器返回数据;(15)归属域中的直接后继HSS服务器根据返回的数据完成对其若干后继HSS节点的丢失数据修复工作,过程结束;(16)直接后继HSS服务器向发起数据提取请求的HSS服务器返回数据;(17)直接后继HSS服务器检测当前所在域中数据副本的一致性。如图3所示,本发明分布式HSS数据提取方法中的步骤(13)包括以下子步骤(13-1)直接后继HSS服务器将外域返回的数据写入到数据库中;(13-2)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据写入请求;(13-3)后继HSS节点将接收来自直接后继HSS服务器的数据写入请求,并取出数据完成数据的写入存储工作,并向直接后继HSS服务器发送回应消息告知完成数据写入;(13-4)直接后继HSS服务器接收所有后继节点完成副本写入的消息。如图4所示,本发明分布式HSS数据提取方法中的步骤(15)包括以下子步骤(15-1)直接后继HSS服务器根据配置文件中的配置同时向剩余的所有后继HSS节点发起数据检测请求;(15-2)后继HSS节点接收来自直接后继HSS的数据检测请求;(15-3)后继HSS节点在数据库中查找和数据检测请求中对应的数据,如果找到了则进入步骤(I5-5),否则进入步骤(I5-4);(15-4)后继HSS节点将数据检测请求中携带的数据保存到数据库中,并进入步骤(15-7);(15-5)后继HSS节点检测查找到的数据是否与检测请求中的数据一致,如果一致则进入步骤(I5-7),否则进入步骤(I5-6);(15-6)后继HSS节点将检测请求中的数据写入数据库覆盖原有的不一致的数据;(15-7)后继HSS节点向发起请求的直接后继HSS服务器发送回应消息,告知完成数据一致性检测;(15-8)直接后继HSS服务器接收所有的后继HSS节点的回应消息。应用实例为了验证本发明方法的可行性和有效性,在真实环境下验证本发明方法。实验环境包括安装CentOSrelease5.6操作系统、开源HSS系统实现FHoSS、开源MS实验系统OpenIMSCore以及标准MS客户端Boghe。实验环境配置如表I所示。表I权利要求1.一种分布式HSS数据存储方法,其特征在于,包括以下步骤(1)HSS服务器从归属域内的CSCF服务器接收数据写入请求;(2)HSS服务器从数据写入请求取出IMPU,并对IMPU进行哈希计算,以得到对应的键值;(3)HSS服务器在局部DHT环内查找键值对应的直接后继HSS服务器;(4)HSS服务器将数据写入请求发送到直接后继HSS服务器;(5)直接后继HSS服务器完成数据的写入;(6)直接后继HSS服务器向HSS服务器发送回应消息,告知写入完成;(7)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据写入请求;(8)直接后继HSS服务器从后继节点接收数据副本写入完成的消息;(9)直接后继HSS服务器根据数据写入请求中的IMPU判断写入请求是否来自归属域之夕卜,如果是则流程结束,否则进入步骤(10);(10)直接后继HSS服务器判断是否需要在相邻外域进行数据备份,如果不需要在相邻外域进行数据备份,则流程结束,否则进入步骤(11);(11)直接后继HSS服务器查找相邻外域的路由表,并向相邻外域中的节点发起数据写入请求;(12)相邻外域中的HSS服务器接收归属域的后继HSS服务器的数据写入请求,并返回步骤(2)。2.一种分布式HSS数据提取方法,其特征在于,包括以下步骤(1)HSS服务器从归属域内的CSCF服务器接收数据提取请求;(2)HSS服务器从数据提取请求中取出IMPU,并对IMPU进行哈希计算,以得到对应的键值;(3)HSS服务器在归属域内查找键值对应的直接后继HSS服务器;(4)HSS服务器将数据提取请求转发到直接后继HSS服务器;(5)直接后继HSS服务器判断是否在自身数据库中查找到IMPU对应的数据,若查找到数据则进入步骤(12),否则进入步骤(6);(6)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据提取请求,并等待返回结果;(7)直接后继HSS服务器上根据所有后继节点上的返回结果,判断是否查找到数据,如果是则进入步骤(12),否则进入步骤(8);(8)直接后继HSS服务器根据数据提取请求中IMPU所属的域名与直接后继HSS所在的归属域的域名对比判断数据提取请求是否来自外域,如果数据提取请求来自外域,则进入步骤(9),否则进入步骤(10);(9)直接后继HSS服务器向最初接收数据提取请求的HSS服务器返回结果,表明要查找的数据不存在,数据读取流程结束;(10)直接后继HSS服务器根据配置文件中的配置判断是否需要进从相邻的外域来查找数据,如果需要则进入步骤(11),否则返回步骤(9);(11)直接后继HSS服务器向键值在相邻外域中对应的直接后继HSS服务器发起数据提取请求,然后返回步骤(5);(12)直接后继HSS服务器根据数据提取请求中的IMPU判断该数据请求是否是来自外域的请求,如果是来自外域进入步骤(13),否则进入步骤(16);(13)直接后继HSS服务器将数据返回给发起请求的外域直接后继HSS服务器,并完成当前所在域中该数据的数据副本一致性维护;(14)归属域中的直接后继HSS服务器向最初发起数据提取请求的HSS服务器返回数据;(15)归属域中的直接后继HSS服务器根据返回的数据完成对其若干后继HSS节点的丢失数据修复工作,过程结束;(16)直接后继HSS服务器向发起数据提取请求的HSS服务器返回数据;(17)直接后继HSS服务器检测当前所在域中数据副本的一致性。3.根据权利要求2所述的分布式HSS数据提取方法,其特征在于,步骤(13)包括(13-1)直接后继HSS服务器将外域返回的数据写入到数据库中;(13-2)直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发送数据写入请求;(13-3)后继HSS节点接收来自直接后继HSS服务器的数据写入请求,取出完成数据的写入存储工作,并向直接后继HSS服务器发送回应消息告知完成数据写入;(13-4)直接后继HSS服务器接收所有后继节点完成副本写入的消息。4.根据权利要求2所述的分布式HSS数据提取方法,其特征在于,步骤(15)包括(15-1)直接后继HSS服务器根据配置文件中的配置向剩余的所有后继HSS节点发送数据检测请求;(15-2)后继HSS节点接收来自直接后继HSS的数据检测请求;(15-3)后继HSS节点在数据库中查找和数据检测请求中对应的数据,如果找到了则进入步骤(15-5),否则进入步骤(15-4)·(15-4)后继HSS节点将数据检测请求中携带的数据保存到数据库中,并进入步骤(15-7);(15-5)后继HSS节点检测查找到的数据是否与检测请求中的数据一致,如果一致则进入步骤(I5-7),否则进入步骤(I5-6);(15-6)后继HSS节点将检测请求中的数据写入数据库覆盖原有的不一致的数据;(15-7)后继HSS节点向发起请求的直接后继HSS服务器发送回应消息,告知完成数据一致性检测;(15-8)直接后继HSS服务器接收所有的后继HSS节点的回应消息。全文摘要本发明公开了一种分布式HSS数据存储方法,包括步骤HSS服务器从归属域内的CSCF服务器接收数据写入请求,HSS服务器从数据写入请求取出IMPU,并对IMPU进行哈希计算,以得到对应的键值,HSS服务器在局部DHT环内查找键值对应的直接后继HSS服务器,HSS服务器将数据写入请求发送到直接后继HSS服务器,直接后继HSS服务器完成数据的写入,直接后继HSS服务器向HSS服务器发送回应消息,告知写入完成,直接后继HSS服务器根据配置文件中配置的副本数目,同时向剩余的所有后继HSS节点发起数据写入请求,直接后继HSS服务器从后继节点接收数据副本写入完成的消息,直接后继HSS服务器根据数据写入请求中的IMPU判断写入请求是否来自归属域之外。本发明可保证数据存储的高可靠性。文档编号H04L29/08GK102780763SQ201210219948公开日2012年11月14日申请日期2012年6月29日优先权日2012年6月29日发明者廖小飞,邱飞,金海,陆枫申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1