一种基于DSS的高效数据系统设计方法技术方案

技术编号:16037947 阅读:77 留言:0更新日期:2017-08-19 19:45
本发明专利技术公开一种基于DSS的高效数据系统设计方法,通过开辟大型虚拟内存并且提交大量物理存储器给服务器使用,充分利用了服务器硬件资源,通过虚拟内存的使用,对大型数据群的加载变成可能,内存开辟效率明显提升;访问数据方便快捷;本发明专利技术还通过锁定物理内存最大限度防止服务器进程空间在运行期发生内存页交换,极大降低服务器性能损耗;本发明专利技术还通过虚拟内存的使用实现一次性加载大型数据群,避免了现有方案上需要再加载的情况,特别对于需要I/O过程的数据加载情况在服务器上是将造成宕机的举动。

【技术实现步骤摘要】
一种基于DSS的高效数据系统设计方法
本专利技术涉及一种基于DSS的高效数据系统设计方法。
技术介绍
DarwinStreamingServer简称DSS。DSS是Apple公司提供的开源实时流媒体播放服务器程序,整个程序使用纯粹C++编写,在设计上遵循高性能、简单、模块化等程序设计原则,务求做到程序高效,可扩充性好,因此DSS服务器系统在跨平台的支持上是相当理想的,它可以运行在WindowsNT、Windows2000及以上的windows内核版本,同时也能良好的运行在*NIX的各种版本上,包括MacOSX,Linux,FreeBSD,Solaris,同时DSS基于标准的流媒体协议RTSP,RTP/RTCP进行开发,因此在运用上具有极强的广泛性和通用性。目前基于DSS服务器数据系统存在以下缺陷:一、传统IT业务部署上的“烟囱式”架构导致设备硬件的高配低用,考虑到未来运用系统业务发展,以及业务突发的需求,为满足应用程序的性能,容量承载需求,用户往往选择在计算、存储和网络等硬件设备的配置时会留有一定比例的余量,但硬件资源上线后,应用系统在一定时间内的负载并不会太高,这就使得较高配置的硬件设备利用率不高。二、现有DSS服务器数据系统在对数据进行存储,交换上以堆为主要手段,在这种情况下如果数据量较小,对数据使用不太频繁的情况下影响不大,然而对于企业商用级服务器而言,往往需要加载大批量数据以及频繁对大型数据群进行操作,如果使用原有的堆操作方式那么每次都要去开辟、释放空间,而且开辟的空间非常庞大,并且在运行过程中会产生大量的内存碎片,使得内存使用上空间和时间效率都非常低下,程序运行一段时间后会变质。三、现有DSS服务器并没有锁定内存页面,服务器往往具有非常大的内存容量并且独占运用,而实际运行过程中真正的物理内存使用却非常低下,在操作大型数据群的时候频繁产生缺页中断,而缺页中断的产生将非常严重影响服务器的响应速度进而堆积数据接入,最终甚至将导致服务器宕机,而这种问题往往很难排查。四、大型数据群的I/O,现有基于DSS框架的运用上对于大量数据从数据库中进行读写往往使用小批量,需要时加载的方式,这种方式的使用局限性非常大,而且对于频繁的I/O操作在服务器使用上更是无法接受的消耗。有鉴于此,本专利技术人提出一种基于DSS的高效数据系统设计方法。
技术实现思路
本专利技术的一个目的在于提供一种基于DSS的高效数据系统设计方法,以充分利用服务器物理内存资源、实现大型数据群的快速加载和高效实用,提高DSS框架数据系统效率。为了实现上述目的,本专利技术的技术方案如下:一种基于DSS的高效数据系统设计方法,包括以下步骤:步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,所述空间并不在物理内存中;步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据系统中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;步骤3、在QTSSDictionary初始化QTSSVMArray这个静态成员变量,预留10MB地址空间,如果在该阶段DSS服务器预留空间失败,则重启DSS数据服务器;步骤4、在QTSSDictionary中新增函数SetBigValue以及qtssAttrDataTypeBigData标志,函数SetBigValue用于设置存储大型数据结构,qtssAttrDataTypeBigData标志则用于设置系统数据类型中新增大型结构数据类型,在所述函数SetBigValue被第一次调用时将实际提交物理存储器,在本文中根据需要提交1MB实际物理内存给之前预留的地址空间;所述SetBigValue函数中使用指针来进行数据存储,在函数中对qtssAttrDataTypeBigData属性特征中的fAllocatedLen长度设置为指针数组的长度,fAttributeData.Ptr为指针数组的地址,fAttributeData.Len为指针sizeof的值;步骤5、服务器启动过程将通过数据库插件加载数据库中的庞大数据群进入服务器进程内存空间,在数据库插件中设计对于每一行数据调用一次SetBigValue函数,将每行数据存放进虚拟内存中的每一个结构体中,此时SetBigValue函数将根据开辟出来的指针数组中的数组下标对应一块实际物理内存结构,及指针数组中的每根指针分别对应提交给虚拟内存物理空间中的一块内存区进行数据存放。步骤6、在DSS数据系统的GetValuePtr函数中增加对新增的qtssAttrDataTypeBigData属性值获取的条件,其中对于新增虚拟内存物理空间的地址获取方式和原使用堆空间的获取方式并没有不同的地方相同;步骤7、在服务器使用过程中对提交的物理内存进行锁定。步骤8、新增QTSS_SetBigValue接口,以提供给服务器外部插件使用;步骤9、在QTSSVMArray类中虚构函数,以使虚拟内存生命周期的最后进行释放。所述步骤1还包括:设置MEM_TOP_DOWN标志于虚拟函数VirtualAlloc,使操作系统从高位内存地址开始预留空间。所述步骤2中,可根据实际需要将存储空间存放的结构类型设计成每个结构体大小为1024Bytes的结构体类型,且设计结构体类型为目标系统分页文件大小的倍数,这个值在X86,X64上为4KB,在IA64上为8KB。采用上述方案后,本专利技术与现有技术相比有益效果在于:(1)通过开辟大型虚拟内存并且提交大量物理存储器给服务器使用,充分利用了服务器硬件资源,而现有方法在服务器资源使用上大量闲置。(2)通过虚拟内存的使用,可以充分使用虚拟内存特点:1)对大型数据群的加载变成可能;2)内存开辟一次完成,相比于现有系统需要每次开辟,效率明显提升;3)通过虚拟内存空间连续的特点,访问数据方便快捷,现有方案堆开辟方式在物理内存空间中地址不连续,链表式访问低效并且容易造成大量内存碎片。(3)通过锁定物理内存最大限度防止服务器进程空间在运行期发生内存页交换,极大降低服务器性能损耗,现有方法在大型数据群使用过程中将频繁被操作系统内存管理器进行页面换入换出调度,极大影响服务器性能;(4)通过虚拟内存的使用实现一次性加载大型数据群,避免了现有方案上需要再加载的情况,特别对于需要I/O过程的数据加载情况在服务器上是将造成宕机的举动。以下结合附图和具体实施方式对本专利技术做进一步说明。附图说明图1:本专利技术DSS的高效数据系统设计方法流程图。具体实施方式如图1所示,本专利技术揭示的一种基于DSS的高效数据系统设计方法,包括以下步骤:步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,空间并不在物理内存中;设置MEM_TOP_DOWN标志于虚拟函数VirtualAlloc,使操作系统从高位内存地址开始预留空间;步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据系统中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;可根据实际需要将存储空间存放的结构类型设计成每个结构体大小本文档来自技高网
...
一种基于DSS的高效数据系统设计方法

【技术保护点】
一种基于DSS的高效数据系统设计方法,其特征在于,包括以下步骤:步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,所述空间并不在物理内存中;步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据系统中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;步骤3、在QTSSDictionary初始化QTSSVMArray这个静态成员变量,预留10MB地址空间,如果在该阶段DSS服务器预留空间失败,则重启DSS数据服务器;步骤4、在QTSSDictionary中新增函数SetBigValue以及qtssAttrDataTypeBigData标志,函数SetBigValue用于设置存储大型数据结构,qtssAttrDataTypeBigData标志则用于设置系统数据类型中新增大型结构数据类型,在所述函数SetBigValue被第一次调用时将实际提交物理存储器,在本文中根据需要提交1MB实际物理内存给之前预留的地址空间;所述SetBigValue函数中使用指针来进行数据存储,在函数中对qtssAttrDataTypeBigData属性特征中的fAllocatedLen长度设置为指针数组的长度,fAttributeData.Ptr为指针数组的地址,fAttributeData.Len为指针sizeof的值;步骤5、服务器启动过程将通过数据库插件加载数据库中的庞大数据群进入服务器进程内存空间,在数据库插件中设计对于每一行数据调用一次SetBigValue函数,将每行数据存放进虚拟内存中的每一个结构体中,此时SetBigValue函数将根据开辟出来的指针数组中的数组下标对应一块实际物理内存结构,及指针数组中的每根指针分别对应提交给虚拟内存物理空间中的一块内存区进行数据存放;步骤6、在DSS数据系统的GetValuePtr函数中增加对新增的qtssAttrDataTypeBigData属性值获取的条件,其中对于新增虚拟内存物理空间的地址获取方式和原使用堆空间的获取方式并没有不同的地方相同;步骤7、在服务器使用过程中对提交的物理内存进行锁定;步骤8、新增QTSS_SetBigValue接口,以提供给服务器外部插件使用;步骤9、在QTSSVMArray类中虚构函数,以使虚拟内存生命周期的最后进行释放。...

【技术特征摘要】
1.一种基于DSS的高效数据系统设计方法,其特征在于,包括以下步骤:步骤1、设计专用虚拟内存类QTSSVMArray,该虚拟内存类为模板类,类中包含用于初始化的时候事先预留设定量的空间的构造函数,所述空间并不在物理内存中;步骤2、将虚拟内存模板类QTSSVMArray作为DSS原数据系统中QTSSDictionary的静态成员变量,再根据应用程序的需要设计存储空间中要存放的结构体类型;步骤3、在QTSSDictionary初始化QTSSVMArray这个静态成员变量,预留10MB地址空间,如果在该阶段DSS服务器预留空间失败,则重启DSS数据服务器;步骤4、在QTSSDictionary中新增函数SetBigValue以及qtssAttrDataTypeBigData标志,函数SetBigValue用于设置存储大型数据结构,qtssAttrDataTypeBigData标志则用于设置系统数据类型中新增大型结构数据类型,在所述函数SetBigValue被第一次调用时将实际提交物理存储器,在本文中根据需要提交1MB实际物理内存给之前预留的地址空间;所述SetBigValue函数中使用指针来进行数据存储,在函数中对qtssAttrDataTypeBigData属性特征中的fAllocatedLen长度设置为指针数组的长度,fAttributeData.Ptr为指针数组的地址,fAttributeData.Len为指针si...

【专利技术属性】
技术研发人员:杨智勤
申请(专利权)人:厦门普杰信息科技有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1