一种基于物化缓存的网络大数据可视化方法与流程

文档序号:11589890阅读:233来源:国知局
本发明涉及数据可视化领域,尤其是网络大数据快速查询与可视化呈现。
背景技术
::随着互联网、物联网、云计算等信息技术的迅猛发展,信息技术与人类世界政治、经济、军事、科研、生活等方方面面不断交叉融合,催生了超越以往任何年代的巨量数据,因而信息社会已经迈入大数据(bigdata)时代。遍布世界各地的各种智能移动设备、传感器、电子商务网站、社交网络每时每刻都在生成类型各异的数据。根据国际数据公司(idc)的《数据宇宙》报告显示:2008年全球数据量为0.5zb,2010年为1.2zb,人类正式进入zb时代。更为惊人的是,2020年以前全球数据量仍将保持每年40%多的高速增长,大约每两年就翻一倍,这与it界人尽皆知的摩尔定律极为相似。大数据具有4v特征,即:体量巨大(volume)、类型繁多(variety)、时效性高(velocity)以及价值高密度低(value),给人们带来了新的机遇与挑战。《nature》于2008年出版了大数据专刊“bigdata”,专门讨论了巨量数据对于互联网、经济、环境以及生物等各方面的影响与挑战。《science》也于2011年出版了如何应对数据洪流(datadeluge)的专刊“dealingwithdata”,指出如何利用宝贵的数据资产推动人类社会的发展。如今,大数据已成为新兴的学术研究热点,并被认为是继云计算和物联网之后又一个具有革命性的信息技术。其中,网络大数据是指“人、机、物”三元世界在网络空间(cyberspace)中彼此交互与融合所产生并在互联网上可获得的大数据。网络大数据往往呈现出突发涌现等非线性状态演变现象,因此难以对其变化进行有效评估和预测,另一方面,网络大数据常常以数据流的形式动态、快速地产生,具有很强的时效性这些特征都对现有的互联网计算平台提出了挑战。网络大数据是一种复杂数据,包含结构化数据和非结构化数据(如xml文档、图片、docx文件等)等数据类型。可视化技术为处理复杂数据而生,它将数据映射为视觉符号,允许用户与数据进行快速互动,帮助人们获取大数据中蕴含的信息,以便更好地验证假设和发现内在联系。可视化技术为人们提供了理解高维度、多层次、时空、动态、关系等复杂数据的手段,研究人员已经提出很多有效的可视化研究方法,如采用树结构、树图、弹性层次图、网络结构图等来直观显示庞大的数据结构,使用themeriver、tiara等对文本数据的可视化进行研究,运用平行坐标法(parallelcoordinates)、放射坐标法(radviz)和星形坐标法(starcoordinates)等对高维数据进行处理。这些可视化方法虽然在一定程度上解决了部分复杂数据的可视化问题,但还无法很好通过交互式界面来辅助用户对大规模复杂数据集进行分析推理的科学与技术,这也为互联网环境下的网络大数据的有效分析、理解和管理造成了难度。大数据可视化是指在大数据自动分析挖掘方法的同时,利用支持信息可视化的用户界面以及支持分析过程的人机交互方式与技术,来有效融合计算机的计算能力和人的认知能力,以获得对于大规模复杂数据集的洞察力。不同于传统的信息可视化行业,大数据可视分析面临最大的一个挑战就是规模,即如何提出新的可视化方法能够帮助人们分析大规模、高维度、多来源、动态演化的信息,并辅助作出实时的决策,成为了这个领域最大的挑战。国内外许多学者对数据可视化进行了大量的相关研究,例如中国专利公开的一种时态检测数据快速可视化系统,专利号为201510737077.1,主要建立非关系型数据库及缓存数据库,通过缓存数据结构优化可以加快数据的可视化。但是在数据复杂而又庞大的大数据领域中收效甚微。武汉大学支晓栋于2010年提出采用四叉树结构的文件管理方式对机载激光雷达数据做出了较好的可视化效果,但是只考虑了单文件数据,没有考虑海量大规模数据的组织和可视化。东北电力大学的黄靖媛于2016年提出的基于三维场景的电力大数据快速可视化分析模型采取对输入的时间序列数据进行并行的快速神经网络训练;将bp神经网络的输出结果集与三维虚拟现实场景集成,使用户能够在地理空间中快速定位,但是处理的数据比较单一,不能很好的处理多源异构的网络大数据。工业领域中bentley公司的pointools能够针对地面激光扫描,快速构建三维lod模型,实现点云的遮挡计算,可视化效果非常好,但是所有的点加载在内存中进行显示,难以适用海量的机载激光雷达点云数据。武汉大学测绘遥感信息工程国家重点实验室和吉奥公司联合研发的开放式地理信息集成共享虚拟地球平台geoglobe采用高效的数据压缩、渐进传输与实时可视化方法,达到有限网络带宽条件下多源空间信息的最优可视化效果,但是该平台作用领域的数据具有一定的地理特性,并不能很好的作用于网络大数据。技术实现要素:为了克服现有的大数据可视化方法的伸缩性较低、无法适用于海量数据的不足,本发明提出了一种基于物化缓存的网络大数据可视化方法,将可视化结果进行物化缓存,并让用户方便快速地获取分布在网络中的大数据,并加以可视化呈现。该方法具有高伸缩性,支持高访问量,能对海量数据进行快速查询与可视化展示。为了解决上述技术问题本发明所采用的技术方案是:一种基于物化缓存的网络大数据可视化方法,所述可视化方法包括以下步骤:第一步、建立一个动态演化模型,分为大数据用户层、大数据可视化层及大数据源层;1.1、大数据用户层:由网络上具有不同大数据可视化需求的用户构成,用户通过访问大数据可视化层来获取感兴趣的大数据信息,用户层不依赖具体的技术架构,并可在可视化层中定制不同的视图来分析数据的多个维度;1.2、大数据可视化层:基于云平台架构,提供一种统一的标准让用户来查询不同的大数据源;可视化层接受大数据用户的数据视图查询请求后,判断是否存在物化缓存,向大数据源发出服务请求然后将返回的结果集进行可视化效果展示给用户;或者直接查询系统的物化缓存,将结果进行可视化分析响应给用户;可视化层包括精灵线程池模块、物化缓存模块和可视化分析模块。精灵线程池etp(elfthreadpool)模块:用于负责线程的分配,系统在初始化阶段根据一定的映射规则解析每个数据视图的相关信息构建一个资源配置文件cp(cacheprofiles),并将此文件映射于内存中生成缓存配置表cpt(cacheprofilestable),cpt根据物化缓存选择算法和物化缓存存储算法将需要进行物化缓存的数据视图信息生成物化缓存视图索引表vit(visualindextable),vit基于物化缓存更新算法将数据视图加入物化缓存执行队列,由线程分配机制根据et(elfthread)数据资源迁移算法分配合适的线程向大数据源建立连接发出服务请求;物化缓存模块:用于预先缓存大数据源对相应查询计算的结果,将该数据视图的数据结果集根据物化缓存存储算法采取内存存储或者持久化存储方式,用户发出该视图的请求时,不必向大数据源建立连接发出服务请求,直接用缓存的数据结果集进行可视化分析响应给用户;可视化分析模块:用于负责将用户访问数据视图后返回的数据集进行可视化分析,将大数据以直观的可视化的图形形式展示给用户;1.3、大数据源层:指的是在网络上的大数据供应商,采用分布式架构存储海量数据,有效支持大数据的处理需求,大数据源层一般提供大数据服务,即将数据以服务的方式提供给可视化层;第二步、基于所述的模型提出的基于物化缓存的网络大数据可视化方法,过程如下:步骤2.1:精灵线程阶段在模型初始化阶段,大数据可视化层通过web服务器会激活精灵线程池etp,etp流程为:2.1.1初始化时系统基于缓存选择算法与缓存存储算法将需要进行物化缓存的数据视图信息生成物化缓存视图索引表vit,系统基于物化缓存更新算法对vit表所有数据视图的累积热度进行排序,选择累积热度top—k的数据视图加入物化缓存执行队列;2.1.2线程分配机制根据et数据资源迁移算法合理的选择物化缓存执行队列的数据视图并提取该数据视图的url,入池分配线程,etp会创建线程(et)来模拟大数据用户访问该url,对该url对应的数据源发出请求访问(调用大数据源层的服务或直接访问对应关系型数据库),et在获取数据后将数据写入缓存,其后的具体操作如步骤2.2.2所示;2.1.3etp将为物化缓存执行队列中的数据视图分配线程,提出了et数据资源迁移算法,通过线程分配协作,来协调大数据可视化层与多个大数据源间的数据资源迁移。进一步,所述步骤2.1.3中,所述et数据资源迁移算法在线程调度前,系统对物化缓存执行队列中每个数据视图进行物化缓存的优先级排列,优先级高的数据视图先分配线程进行物化缓存,其余的进入等待;步骤如下:步骤(2.1.3.1)线程分配机制记录物化缓存执行队列里数据视图i的访问次数counti,并计算该数据视图的用户渴望度其中t表示当前时间;步骤(2.1.3.2)根据数据视图进入物化缓存执行队列时间α(i)与当前时间t,计算该数据视图在物化缓存执行队列等待的时间t-α(i);步骤(2.1.3.3)估算该数据视图i进行物化缓存所需要的时间sti;步骤(2.1.3.4)计算该数据视图i的优先级priorityi,计算公式如下:其中ε1,ε2为权重系数,根据服务的侧重点不同设置不同的权重参数。为了避免早期的缓存请求进入无限等待状态,将t加入优先级计算,这样早期请求进行物化缓存的数据视图随着时间增加优先级也会相对增加;步骤(2.1.3.5)根据优先级对物化缓存执行队列里的数据视图排序,选择前x的数据视图分配线程进行物化缓存过程,x为精灵线程池的线程数量,可以进行动态调节。再进一步,所述步骤(2.1.3.5)中,根据系统负载与缓存等待时间动态调节线程池内线程数量的机制,综合数据视图缓存的时间与系统cpu、内存的负载能力;通过数据视图的平均缓存时间分析当前线程池需要调整的方向,通过cpu、内存的使用率得出是否需要增加或者减少线程数量,步骤如下:步骤(2.1.3.5.1)线程池初始化:创建守护线程监听当前cpu的使用率和内存使用率,周期性的检测线程池中所有物化缓存的平均等待时间wt(waittime),并定义以下参数:线程动态调节时间对比率cr(contrastratio),cpu的负载上限clmax(cpuloadmax)与cpu的负载下限clmin(cpuloadmin),内存的负载上限mlmax(memoryloadmax)与cpu的负载下限mlmin(memoryloadmin),线程每次动态调节的数量m;步骤(2.1.3.5.2)线程池将此周期的物化缓存平均等待时间wtk与上一个周期计算的物化缓存平均等待时间wtk-1进行比较,如果wtk与wtk-1的差异比值大于初始设定的线程动态调节时间对比率cr,当wtk大于wtk-1时转步骤(2.1.3.5.3)。当wtk小于wtk-1时转步骤(2.1.3.5.4);步骤(2.1.3.5.3)如果wtk-2大于wtk-1,并且cpu的使用率大于clmax或者内存的使用率大于mlmax,则减少线程池内线程的数量,减少单位为m;如果wtk-2小于wtk-1,并且cpu的使用率小于clmin并且内存的使用率小于mlmin,则增加线程池内线程的数量,增加单位为m。步骤(2.1.3.5.4)如果wtk-1小于wtk-2,则直接减少线程池内线程的数量,减少单位为m。步骤2.2:物化缓存阶段当大数据用户提交查询请求,索取数据视图时,系统会自动判断能否通过查询物化缓存来得到结果,如果可以,则避免了向大数据源发出相关计算请求,直接从已经计算好的物化缓存中读取数据,可视化执行模块会提取物化缓存数据并将缓存数据注入数据视图中,来直接响应用户查询;否则,系统需要重写用户查询并分发查询到大数据源层中检索数据,在数据检索到后,回传大数据可视化层并由可视化执行模块处理,最终反馈用户。基于物化缓存的数据视图查询的流程如下:2.2.1大数据用户提交数据可视化查询请求;2.2.2在大数据可视化层,每一个数据视图在初始化阶段都被赋予一个唯一的url资源,并记录了数据可视化视图的相关信息,内容有数据视图的类型vvtype、数据视图的标题vvtitle、数据视图大数据源请求的ip地址dsip,作为资源配置文件cp存储于持久化层。系统初始化阶段将其映射到内存的缓存配置表cpt中并以hashmap的方式存储。hashmap的结构为(key,value)型,其中key是主键名,标识了每一种数据视图的名称vdk(visualdatakey),唯一,组成规则为:vdk=vvtype(visualviewtype数据视图的类型)+vvtitle(visualviewtitle数据视图的标题)+dsip(datasourcesip大数据源的请求地址);value是数据视图的url访问路径,即大数据用户访问数据视图的网址。系统根据数据视图的访问率与自身更新频率选择是否进行物化缓存,并针对数据视图的资源特性选择合适的存储方式;将需要进行物化缓存的数据视图信息写入物化缓存视图索引表vit,该索引表是一个hashmap表,结构为(key,value),其中key为用户的查询url,value为一个二元组,包括每一种数据视图的名称vdk与对应物化缓存的方式(内存存储或者持久化层存储,其中内存存储用0表示,持久化存储用1表示);系统根据物化缓存更新算法将需要进行更新的数据视图加入物化缓存执行队列,并由精灵线程模块依据数据迁移算法选择合适的线程向大数据源建立连接发出服务请求并将返回的结果存储于内存或者持久化层。内存中的值表mvt(memoryvaluetable)是一个hashmap表,结构为(key,value),其中key是查找的数据视图名称vdk,value是该数据视图物化缓存的数据;持久化存储文件形式由系统初始化设定,通过物化缓存选择算法和物化缓存存储算法来选择是否进行物化缓存和物化缓存的存储方式。2.2.3系统周期性地累积缓存索引集合被访问的次数,并将访问次数周期性地累积成热度进行保存;进而,对物化缓存视图索引表vit中所有记录的累积热度排序,选择累积热度top—k的数据视图加入物化缓存执行队列,并在物化缓存执行队列中保存数据视图的url,由精灵线程模块解析后分配线程向大数据源发送请求;2.2.4系统将用户的查询url匹配为主键,然后查询物化缓存视图索引表vit,如果能匹配到,说明该数据视图已提供了物化缓存;对于具有物化缓存的数据视图,模型不再对数据源进行真正访问,改为访问物化缓存;2.2.5物化缓存基于数据视图url为主键根据存储类型查找内存中的值表mvt或者持久化层的缓存数据,其中内存查找依据主键遍历mvt找到缓存数据后json返回;持久化层查找则由系统的查询接口程序依据主键查找持久化存储的文件返回json数据,将结果json注入相应的可视化模块中并将形成的可视化效果展示给用户。再进一步,所述步骤2.2.2中,物化缓存选择算法和物化缓存存储算法的步骤如下:2.2.2.1物化缓存选择算法,,步骤如下:步骤(2.2.2.1.1)记录最近一次访问数据视图后流逝的时间tc,tk是第k次访问数据视图和第k-1次访问数据视图之间的时间间隔,设第k-1次访问数据视图后的平均访问时间间隔为rk-1,那么第k次访问数据视图后得到的平均访问时间间隔为:rk=ttk+(1-t)rk-1,其中t是动态参数,t大于等于1/2即可;步骤(2.2.2.1.2)设r是数据视图当前的访问率。令rf是最后一次访问数据视图后得到的平均访问间隔,由指数分布的定义可以得到它的概率密度函数为:步骤(2.2.2.1.3)数据视图经过时间tc后被访问的概率密度函数为:步骤(2.2.2.1.4)求出数据视图下一次被访问的平均时间间隔为:计算平均引用率为f=1/(tc+rf)步骤(2.2.2.1.5)计算数据视图i的平均引用率fi,记录对于数据视图i发送一个请求开始到客户端收到最后一个字节的响应所耗费的时间ttlbi与自身更新的频率updatei,对每个数据视图设置一个缓存值,缓存值代表此数据视图进行物化缓存的价值,缓存值计算公式如下:步骤(2.2.2.1.6)根据缓存值的大小对每个数据视图进行排列,选择前n个进行物化缓存,将数据视图信息写入物化缓存视图索引表vit。再进一步,所述步骤(2.2.2.1.5)中,缓存自身更新的频率updatei需由大数据可视化层向大数据源周期的发送请求,将返回数据结果与现有的缓存数据进行对比,从而计算出缓存自身更新的频率;提出一种数据更新预测动态请求算法,通过每次请求返回的比对结果动态调节下一次请求的间隔时间ri(requestinterval),另设置一个慢请求门限值srthresh(slowrequestthreshold),当请求间隔时间未达到门限值时采取间隔时间单位指数增加,之后采取线性增加方式。数据更新预测动态请求算法具体步骤如下:步骤(2.2.2.1.5.1)动态请求初始化:在初始化阶段设置初始的请求间隔为一个单位时间,即ri1=1,单位时间可以是一个小时、半个小时、十分钟等,具体数值由系统根据经验定值,另定义一个慢请求门限值srthresh;步骤(2.2.2.1.5.2)系统向大数据源发出比对请求,对请求返回的结果进行分析比对,如果发现缓存并未更新,则进行步骤(2.2.2.1.5.3),否则进行步骤(2.2.2.1.5.4);步骤(2.2.2.1.5.3)如果发现此轮的请求间隔时间rik(k=2,3,4,5…)小于或等于慢请求门限值srthresh,则定义下一轮请求间隔时间rik+1=2*rik,否则下一轮请求间隔时间rik+1=rik+1,转步骤(2.2.2.1.5.2);步骤(2.2.2.1.5.4)直接定义下一轮的请求间隔时间rik+1=rik/2,转步骤(2.2.2.1.5.2);2.2.2.2物化缓存存储算法,步骤如下:步骤(2.2.2.2.1)计算数据视图i物化缓存的数据量大小si并记录该缓存对象被访问的次数counti;步骤(2.2.2.2.2)定义一个物化缓存存储方法的阈值m0,阈值m0根据系统的内存状态与请求缓存的数据量进行动态调节,计算公式如下:其中b为系统内存缓存的总容量,μ为动态调节参数;步骤(2.2.2.2.3)定义数据视图i物化缓存的存储值mi,存储值计算公式如下:步骤(2.2.2.2.4)如果存储值mi小于阈值m0,对该物化缓存进行内存存储,将数据视图名称vdk作为key、物化缓存结果作为value写入内存中的值表mvt。否则转步骤(2.2.2.2.5);步骤(2.2.2.2.5)对该物化缓存进行持久化存储,将缓存数据存储于系统初始化设定的持久化存储文件中。再进一步,所述步骤2.2.3中,物化缓存更新算法的步骤如下:步骤(2.2.3.1)计算当前热度计算周期中物化缓存i被访问的次数counti,设cti为物化缓存i被创建的时间,t为当前时间,计算物化缓存i在缓存区域中已经存在的时间t-cti与缓存对象i命中需要的平均时间步骤(2.2.3.2)根据步骤(2.2.2.1.5)中提出的数据更新预测动态请求算法计算物化缓存i自身更新的频率updatei;步骤(2.2.3.3)记录对于物化缓存i发送一个请求开始到客户端收到最后一个字节的响应所耗费的时间ttlbi;步骤(2.2.3.4)定义物化缓存i在周期j的热度值valueij,计算公式如下:其中β为相关系数,valueij-1表示该缓存在上一个热度计算周期中的热度值,参数α是衰减系数,用来确定当前周期热度累积的热度和历史热度各自所占的权重;集合的历史热度在本计算周期内以系数(1-α)的速率衰减,经过多次迭代,更早计算周期的累积热度经过了更多次衰减,所以早期的累积热度对数据热度的影响不断降低;步骤(2.2.3.5)将记录的所有物化缓存累积热度值进行排序,选择累积热度top—k的数据视图加入物化缓存执行队列,并在队列中存储数据视图的url。本发明的有益效果主要表现在要:(1)该可视化方法可以有效整合多源、异构、非一致、非准确的网络大数据。(2)该可视化方法可对海量数据进行快速可视化分析,能有效减少网络传输代价,提高系统的数据查询效率。下面结合附图进一步说明本发明。附图说明图1示出了网络大数据可视化模型图。图2示出了精灵线程工作机制图。图3示出了物化缓存运行过程图。图4示出了物化缓存选择过程图。具体实施方式下面结合附图对本发明作进一步描述。参照图1~图4,一种基于物化缓存的网络大数据可视化方法,所述可视化方法包括以下步骤:第一步、建立一个动态演化模型,模型按照分层架构思想设计,如图1所示,分为大数据用户层、大数据可视化层及大数据源层;1.1、大数据用户层:由网络上具有不同大数据可视化需求的用户(user)构成,用户通过访问大数据可视化层来获取感兴趣的大数据信息,用户层不依赖具体的技术架构,并可在可视化层中定制不同的视图来分析数据的多个维度。1.2、大数据可视化层:基于云平台架构,提供一种统一的标准让用户来查询不同的大数据源。可视化层不存储海量数据,也不进行数据的密集计算,其核心是将大数据可视化视为一种可提供的服务,以供大数据用户层使用。将侧重点放在数据的可视化服务上,关注于可视化时需要的数据计算结果集优化。可视化层接受大数据用户的数据视图查询请求后,判断是否存在物化缓存,向大数据源发出服务请求然后将返回的结果集进行可视化效果展示给用户;或者直接查询系统的物化缓存,将结果进行可视化分析响应给用户。可视化层包括精灵线程池模块、物化缓存模块和可视化分析模块;精灵线程池etp模块:主要负责线程的分配,系统在初始化阶段根据一定的映射规则解析每个数据视图的相关信息构建一个资源配置文件cp,并将此文件映射于内存中缓存配置表cpt,cpt根据物化缓存选择算法和物化缓存存储算法将需要进行物化缓存的数据视图信息生成物化缓存视图索引表vit,vit基于物化缓存更新算法将数据视图加入物化缓存执行队列,由线程分配机制根据et数据资源迁移算法分配合适的线程向大数据源建立连接发出服务请求;物化缓存模块:针对计算量大、实时性不高、用户请求频繁的大数据可视化查询采取物化缓存的方法,预先缓存大数据源对相应查询计算的结果,将该数据视图的数据结果集根据物化缓存存储算法采取内存存储或者持久化存储方式,用户发出该视图的请求时,不必向大数据源建立连接发出服务请求,直接用缓存的数据结果集进行可视化分析响应给用户。可以避免大数据源耗时的数据分析计算操作,从而快速的得到用户的请求结果;可视化分析模块:该模块负责将用户访问数据视图后返回的数据集进行可视化分析,将大数据以直观的可视化的图形形式展示给用户,系统采用百度开源的javascript图表库echarts进行数据的分析和可视化展示;1.3、大数据源层:指的是在网络上的大数据供应商,他们采用分布式架构存储海量数据,有效支持大数据的处理需求,大数据源层一般提供大数据服务,即将数据以服务的方式提供给可视化层,例如采用基于map/reduce模型的hadoop进行离线计算,计算后将结果以服务封装给可视化层,或者采用分布式的、实时数据流分析工具storm进行流式计算,将计算结果实时以服务发送给可视化层;采用代理的方式提供直接访问数据库的服务等。即大数据源层与可视化层是一种松耦合、可分离的关系,各类大数据源分属于独立的应用系统,负责数据的计算,并将计算结果传回可视化层。通过将可视化工作从各类大数据源中剥离出来,使得各类应用系统专注于自身业务的开发,由可视化层专一处理数据的可视化需求并对外提供可视化服务,以降低应用系统的开发成本,实现各司其职的工作分工。第二步、基于所述的模型,提出的基于物化缓存的网络大数据可视化方法如下:步骤2.1:精灵线程阶段在模型初始化阶段,大数据可视化层通过web服务器会激活精灵线程池etp,如图2所示,通过线程分配协作完成数据视图的物化缓存过程,etp主要工作如下:2.1.1初始化时系统基于步骤2.2.2.1的缓存选择算法与步骤2.2.2.2的缓存存储算法将需要进行物化缓存的数据视图信息生成物化缓存视图索引表vit,该表具体结构详见步骤2.2.2,系统基于步骤2.2.3的物化缓存更新算法对vit表所有数据视图的累积热度进行排序,选择累积热度top—k的数据视图加入物化缓存执行队列。2.1.2线程分配机制根据步骤1.3的et数据资源迁移算法合理的选择物化缓存执行队列的数据视图并提取该数据视图的url,入池分配线程,etp会创建线程(et)来模拟大数据用户访问该url,对该url对应的数据源发出请求访问(调用大数据源层的服务或直接访问对应关系型数据库),et在获取数据后将数据写入缓存,其后的具体操作如步骤2.2.2.2所示。2.1.3由于模型初始化阶段需要建立缓存的数据视图较多,或者在模型运行过程中,某一时间段内需要重建物化缓存的数据视图大量增加,为保障物化缓存的生成效率。etp将为多个集中建立缓存的数据视图合理分配线程,减少线程同步时间,有选择地进行性能优化,保证物化缓存任务在一定的加速比性能前提下,能提高资源利用率,减小能耗,达到程序能耗和性能之间的折衷。本发明提出了et数据资源迁移算法,通过线程分配协作,来协调大数据可视化层与多个大数据源间的数据资源迁移。再进一步,所述步骤2.1.3中,et数据资源迁移算法原理如下:综合大数据用户对数据视图的渴望度以及该数据视图自身缓存所需要的时间,在线程调度前,系统对物化缓存执行队列中每个数据视图进行物化缓存的优先级排列,优先级高的数据视图先分配线程进行物化缓存,其余的进入等待。具体步骤如下:步骤(2.1.3.1)线程分配机制记录物化缓存执行队列里数据视图i的访问次数counti,并计算该数据视图的用户渴望度其中t表示当前时间。步骤(2.1.3.2)根据数据视图进入物化缓存执行队列时间α(i)与当前时间t,计算该数据视图在物化缓存执行队列等待的时间t-α(i)。步骤(2.1.3.3)估算该数据视图i进行物化缓存所需要的时间sti。步骤(2.1.3.4)计算该数据视图i的优先级priorityi,计算公式如下:其中ε1,ε2为权重系数,根据服务的侧重点不同设置不同的权重参数。为了避免早期的缓存请求进入无限等待状态,将t加入优先级计算,这样早期请求进行物化缓存的数据视图随着时间增加优先级也会相对增加。步骤(2.1.3.5)根据优先级对物化缓存执行队列里的数据视图排序,选择前x的数据视图分配线程进行物化缓存过程,x为精灵线程池的线程数量,可以动态调节。再进一步,所述步骤(2.1.3.5)中,选择线程池内线程的数量会对系统性能产生很大的影响,线程池中的线程数量过大的时候会导致请求的处理时间线性增长,降低系统的吞吐量。本发明采用一种根据系统负载与缓存等待时间动态调节线程池内线程数量的机制,综合数据视图缓存的时间与系统cpu、内存的负载能力;通过数据视图的平均缓存时间分析当前线程池需要调整的方向,通过cpu、内存的使用率可以得出是否需要增加或者减少线程数量。具体步骤如下:步骤(2.1.3.5.1)线程池初始化:创建守护线程监听当前cpu的使用率和内存使用率,周期性的检测线程池中所有物化缓存的平均等待时间wt(waittime),并定义以下参数:线程动态调节时间对比率cr(contrastratio),cpu的负载上限clmax(cpuloadmax)与cpu的负载下限clmin(cpuloadmin),内存的负载上限mlmax(memoryloadmax)与cpu的负载下限mlmin(memoryloadmin),线程每次动态调节的数量m。步骤(2.1.3.5.2)线程池将此周期的物化缓存平均等待时间wtk与上一个周期计算的物化缓存平均等待时间wtk-1进行比较,如果wtk与wtk-1的差异比值大于初始设定的线程动态调节时间对比率cr,当wtk大于wtk-1时转步骤(2.1.3.5.3)。当wtk小于wtk-1时转步骤(2.1.3.5.4)。步骤(2.1.3.5.3)如果wtk-2大于wtk-1,并且cpu的使用率大于clmax或者内存的使用率大于mlmax,则减少线程池内线程的数量,减少单位为m;如果wtk-2小于wtk-1,并且cpu的使用率小于clmin并且内存的使用率小于mlmin,则增加线程池内线程的数量,增加单位为m。步骤(2.1.3.5.4)如果wtk-1小于wtk-2,则直接减少线程池内线程的数量,减少单位为m。步骤2.2:物化缓存阶段当大数据用户提交查询请求,索取数据视图时,系统会自动判断能否通过查询物化缓存来得到结果,如果可以,则避免了向大数据源发出相关计算请求,直接从已经计算好的物化缓存中读取数据,可视化执行模块会提取物化缓存数据并将缓存数据注入数据视图中,来直接响应用户查询。否则,系统需要重写用户查询并分发查询到大数据源层中检索数据,在数据检索到后,回传大数据可视化层并由可视化执行模块处理,最终反馈用户。如图3所示,基于物化缓存的数据视图查询具体执行流程如下:2.2.1大数据用户提交数据可视化查询请求;2.2.2如图4所示,在大数据可视化层,每一个数据视图在初始化阶段都被赋予一个唯一的url资源,并记录了数据可视化视图的相关信息,内容有数据视图的类型vvtype、数据视图的标题vvtitle、数据视图大数据源请求的ip地址dsip,作为资源配置文件cp存储于持久化层。系统初始化阶段将其映射到内存的缓存配置表cpt中并以hashmap的方式存储。hashmap的结构为(key,value)型,其中key是主键名,标识了每一种数据视图的名称vdk,唯一,组成规则为:vdk=vvtype+vvtitle+dsip;value是数据视图的url访问路径,即大数据用户访问数据视图的网址。系统根据数据视图的访问率与自身更新频率选择是否进行物化缓存,并针对数据视图的资源特性选择合适的存储方式;将需要进行物化缓存的数据视图信息写入物化缓存视图索引表vit,该索引表是一个hashmap表,结构为(key,value),其中key为用户的查询url,value为一个二元组,包括每一种数据视图的名称vdk与对应物化缓存的方式(内存存储或者持久化层存储,其中内存存储用0表示,持久化存储用1表示)。系统根据物化缓存更新算法(步骤2.2.3)将需要进行更新的数据视图加入物化缓存执行队列,并由精灵线程模块依据数据迁移算法(步骤2.1.3)选择合适的线程向大数据源建立连接发出服务请求并将返回的结果存储于内存或者持久化层。内存中的值表mvt是一个hashmap表,结构为(key,value),其中key是查找的数据视图名称vdk,value是该数据视图物化缓存的数据;持久化存储文件形式由系统初始化设定(如关系型数据库、文件系统、nosql数据等)。本发明提出物化缓存选择算法(步骤2.2.2.1)和物化缓存存储算法(步骤2.2.2.2),来选择是否进行物化缓存和物化缓存的存储方式。2.2.3系统周期性地累积缓存索引集合被访问的次数,并将访问次数周期性地累积成热度进行保存。进而,对vit中所有记录的累积热度排序,选择累积热度top—k的数据视图加入物化缓存执行队列,并在物化缓存执行队列中保存数据视图的url,由精灵线程模块解析后分配线程向大数据源发送请求,将返回的物化缓存结果进行内存存储或者持久化存储。本发明提出一种热度积累的物化缓存更新算法,该算法描述了如何有效的控制物化缓存的更新。2.2.4系统将用户的查询url匹配为主键,然后查询物化缓存视图索引表vit,如果能匹配到,说明该数据视图已提供了物化缓存。对于具有物化缓存的数据视图,模型不再对数据源进行真正访问,改为访问物化缓存。2.2.5物化缓存基于数据视图url为主键根据存储类型查找内存中的值表mvt或者持久化层的缓存数据,其中内存查找依据主键遍历mvt找到缓存数据后json返回;持久化层查找则由系统的查询接口程序依据主键查找持久化存储的文件返回json数据。将结果json注入相应的可视化模块中并将形成的可视化效果响应给用户。再进一步,所述步骤2.2.2中,物化缓存选择算法和物化缓存存储算法具体步骤如下:2.2.2.1物化缓存选择算法考虑到物化缓存占用了实际存储空间,其规模受到了物理存储空间的限制;并且有的数据视图对实时性要求比较高,大量的物化缓存将导致缓存更新维护成本的提高,从而影响系统的整体性能。为解决此问题,本发明设计了一种基于数据视图访问率的物化缓存算法,访问率体现了当前时刻数据视图下一次被访问的可能性大小,从而系统自动选择选择哪些数据视图需要进行物化缓存,具体执行步骤如下:步骤(2.2.2.1.1)记录最近一次访问数据视图后流逝的时间tc,tk是第k次访问数据视图和第k-1次访问数据视图之间的时间间隔,设第k-1次访问数据视图后的平均访问时间间隔为rk-1,那么第k次访问数据视图后得到的平均访问时间间隔为:rk=ttk+(1-t)rk-1,其中t是动态参数,t大于等于1/2即可。步骤(2.2.2.1.2)设r是数据视图当前的访问率。令rf是最后一次访问数据视图后得到的平均访问间隔,由指数分布的定义可以得到它的概率密度函数为:步骤(2.2.2.1.3)数据视图经过时间tc后被访问的概率密度函数为:步骤(2.2.2.1.4)求出数据视图下一次被访问的平均时间间隔为:计算平均引用率为f=1/(tc+rf)步骤(2.2.2.1.5)计算数据视图i的平均引用率fi,记录对于数据视图i发送一个请求开始到客户端收到最后一个字节的响应所耗费的时间ttlbi与自身更新的频率updatei。对每个数据视图设置一个缓存值,缓存值代表此数据视图进行物化缓存的价值,缓存值计算公式如下:步骤(2.2.2.1.6)根据缓存值的大小对每个数据视图进行排列,选择前n个进行物化缓存,将数据视图信息写入物化缓存视图索引表vit。再进一步,所述步骤(2.2.2.1.5)中缓存自身更新的频率updatei需由大数据可视化层向大数据源周期的发送请求,将返回数据结果与现有的缓存数据进行对比,从而计算出缓存自身更新的频率。考虑到频繁发送数据对比请求会严重降低可视化层的系统性能,为了减少系统的开销,需要尽可能减少数据对比的请求次数。因此需要对每一种物化缓存的大数据源进行数据更新的预测,以便在下一次大数据源更新时获取最新的数据。本发明提出一种数据更新预测动态请求算法,通过每次请求返回的比对结果动态调节下一次请求的间隔时间ri(requestinterval),另设置一个慢请求门限值srthresh(slowrequestthreshold),当请求间隔时间未达到门限值时采取间隔时间单位指数增加,之后采取线性增加方式。数据更新预测动态请求算法具体步骤如下:步骤(2.2.2.1.5.1)动态请求初始化:在初始化阶段设置初始的请求间隔为一个单位时间,即ri1=1,单位时间可以是一个小时、半个小时、十分钟等,具体数值由系统根据经验定值,另定义一个慢请求门限值srthresh;步骤(2.2.2.1.5.2)系统向大数据源发出比对请求,对请求返回的结果进行分析比对,如果发现缓存并未更新,则进行步骤(2.2.2.1.5.3),否则进行步骤(2.2.2.1.5.4)。步骤(2.2.2.1.5.3)如果发现此轮的请求间隔时间rik(k=2,3,4,5…)小于或等于慢请求门限值srthresh,则定义下一轮请求间隔时间rik+1=2*rik,否则下一轮请求间隔时间rik+1=rik+1,转步骤(2.2.2.1.5.2)。步骤(2.2.2.1.5.4)直接定义下一轮的请求间隔时间rik+1=rik/2,转步骤(2.2.2.1.5.2)。2.2.2.2物化缓存存储算法如果一个物化缓存能够响应所有可能发起的查询请求是最为理想的状态,但由于物化缓存占用了实际存储空间,其规模受到了物理存储空间的限制。此外,大量的物化缓存将导致缓存更新维护成本的提高,从而影响系统的整体性能,因此在有限的存储空间和相对较低的缓存维护成本下,选择合适的物化缓存方式,使得选中的查询满足集成层的空间限制,同时获取最大的物化收益。选择一种针对用户查询效率最高的视图集物化缓存方案非常重要。物化缓存存储采取内存存储或者持久化存储,其具体存储方式依赖于具体的数据视图。通用原则是:内存存储适合访问热度高但数据量小的数据结果,持久化存储适合数据量大,但访问热度相对较低的数据结果。当模型读取到大数据源提供的数据结果集后,首先将内容转换为json,然后模型根据数据资源特性自动选择物化缓存的存储方式,充分利用可视化层的集群内存资源,来加快系统的处理速度,为了支持缓存存储机制合理的选择缓存的方式,本发明提出一种物化缓存存储算法。具体步骤如下:步骤(2.2.2.2.1)计算数据视图i物化缓存的数据量大小si并记录该缓存对象被访问的次数counti。步骤(2.2.2.2.2)定义一个物化缓存存储方法的阈值m0,阈值m0根据系统的内存状态与请求缓存的数据量进行动态调节。计算公式如下:其中b为系统内存缓存的总容量,μ为动态调节参数。步骤(2.2.2.2.3)定义数据视图i物化缓存的存储值mi,存储值计算公式如下:步骤(2.2.2.2.4)如果存储值mi小于阈值m0,对该物化缓存进行内存存储,将数据视图名称vdk作为key、物化缓存结果作为value写入内存中的值表mvt。否则转步骤(2.2.2.2.5)。步骤(2.2.2.2.5)对该物化缓存进行持久化存储,将缓存数据存储于系统初始化设定的持久化存储文件中,如关系型数据库、文件系统、nosql数据等。再进一步,所述步骤2.2.3中,物化缓存更新算法原理如下:网络大数据具有较好的时间局部性(最近访问的对象在最近的将来还可能被再次访问),另外,由于网络大数据的访问频度在短时间内不稳定,但在较长的时间段内相对平稳。基于访问的上述特点,在物化缓存更新算法中需考虑长期访问频度的影响,基本设计思想是系统周期性地累积缓存索引集合被访问的次数,并将访问次数周期性地累积成热度进行保存。进而,对vit中所有记录的累积热度排序,选择累积热度top—k的数据视图加入物化缓存执行队列。具体步骤如下:步骤(2.2.3.1)计算当前热度计算周期中物化缓存i被访问的次数counti,设cti为物化缓存i被创建的时间,t为当前时间,计算物化缓存i在缓存区域中已经存在的时间t-cti与缓存对象i命中需要的平均时间步骤(2.2.3.2)根据步骤(2.2.2.1.5)中提出的数据更新预测动态请求算法计算物化缓存i自身更新的频率updatei。步骤(2.2.3.3)记录对于物化缓存i发送一个请求开始到客户端收到最后一个字节的响应所耗费的时间ttlbi。步骤(2.2.3.4)定义物化缓存i在周期j的热度值valueij,计算公式如下:其中β为相关系数。valueij-1表示该缓存在上一个热度计算周期中的热度值,参数α是衰减系数,用来确定当前周期热度累积的热度和历史热度各自所占的权重,α越大,则最近的访问在数据访问热度中所占的权重越大,历史访问记录对数据热度的影响越小,反之亦然。集合的历史热度在本计算周期内以系数(1-α)的速率衰减,经过多次迭代,更早计算周期的累积热度经过了更多次衰减,所以早期的累积热度对数据热度的影响不断降低。步骤(2.2.3.5)将记录的所有物化缓存累积热度值进行排序,选择累积热度top—k的数据视图加入物化缓存执行队列,并在队列中存储数据视图的url。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1