缓存技术在气象数据查询中的应用探讨
2021-12-26郝禹牟宗琦
郝禹 牟宗琦
1. 吉林省气象局气象信息网络中心运行监控科 吉林 长春 130000;
2. 长春工业大学经济管理系工商管理专业 吉林 长春 130000
引言
极端天气灾害会给人们的生活带来巨大的损失,以吉林为例,自今年九月份以来吉林省相继受到三个台风的影响,人们的生活都收到了不同程度的影响,所以目前气象预报业务逐步得到了社会的广大认可。但是与预报相关的气象数据,例如气温、降水、卫星等资料,每日的积累量是非常大的。一般日积累量达到PB级。气象数据内容丰富,涉及广泛,实时性要求较高,这就给气象数据的传输、查询以及使用带来了一定的挑战。一般气象数据的传输流程是,基本台站采集,经由省级数据传输系统,传输到国家。每一级可对所拥有的数据进行使用。但在传输是用过程中,会产生网络延迟,同一个气象数据集,在页面端不停地查询、加载使用会造成资源浪费,考虑到时效性,所以对于一些热点数据,可以结合缓存方面的相关技术,将更有价值的数据进行缓存存储,在用户使用时可以做到响应迅速,提高数据的可用性。
目前在服务器端或者在web端使用缓存,一般是建立缓存数据库或者是激励缓存策略[1],本文主要是针对缓存策略进行使用说明。缓存策略大多数情况是调整缓存方式的算法,对算法进行优化,从而达到最大限度的利用现有的固定资源,提高使用效率[2]。将气象数据进行缓存处理,可以快速动态的加载气象数据集,做到预报及时、服务准确。查询会先去进行数据库访问,一般情况下,每一种数据库都会有并发性要求,过多的重复检索会造成系统的查询效率降低,不利于数据使用以及系统开发的长远发展。因此,对缓存技术的应用进行研究极具价值意义。
1 有缓存技术及气象数据使用加载方法介绍
缓存模块的对读写速度要求较高,所以在系统建设过程中所需成本也很大,这就造成了我们不可能按照数据库的容量去建立web缓存模块,当web段或者服务器端的缓存容量被占满之后,缓存模块就不可以在进行使用了。之后必须按照某一种缓存策略对缓存中的数据进行规划,将长时间存于缓存系统中的数据去除,存进新的数据。现有的缓存技术主要有以下几个方法:
1.1 基于访问时间的缓存替换算法
这种算法的核心思想是,将时间因素认定为缓存对象是否被删除出缓存空间的判断依据。这类算法主要的判断依据是缓存数据在缓存模块中的存放时间,如果一个数据块在缓存中是新建立的,那么系统会认为这个数据进一步被请求的概率要大于存放时间更久的数据,当缓存中的内容需要替换时,会优先删除存放时间较长的数据[3]。
1.2 基于访问频率的缓存替换算法
这种算法的核心思想是,以缓存中数据的被请求次数多为替换的判断依据。它主要对缓存中的每一个缓存数据的使用次数进行统计并记录,并认为一个数据如果访问次数多,那么接下来被使用的概率要大于其他的数据。当缓存空间不足时,系统会查询记录表,找出使用次数最少的文件进行删除。
1.3 基于缓存对象大小的缓存替换算法
这种算法的核心思想是,按照缓存中数据的大小来决定是否删除数据[4],这一算法的好处是可以减少大文件长期占用缓存空间,缓存会对每一个缓存文件的大小进行记录,并定期将容量较大的文件进行替换,以保证缓存空间的使用效率。
1.4 基于权重的缓存替换算法
这类算法相对复杂,不是以单一的要素来判断缓存对象的价值,而是综合考虑各种要素,对每一种要素设置不同的权重值,通过整合计算,形成判断标准。这种算法会动态更新每一个缓存数据的数值,它将权重与成本相结合,命中率高。
缓存的主要目的就是减少用户的查询时间,提高用户的查询命中率。对于气象数据而言,他的数值模式等资料一般是文本文件形式的,并且数据量大,大多数情况是通过网页将文件加载,并通过js等技术进行数据解析,将格点数据通过插值等方法动态地显示在页面上,反复查询解析数据会占用过多的系统资源。结合了气象数据的特点,与缓存机制相结合,可以更好地利用资源,减少查询成本。
2 气象数据查询与缓存技术结合的方法
缓存技术与气象数据查询结合的方法,其主要思想就是每当读取气象文档数据或者页面数据时就会对这些数据的内容进行是否缓存判断,然后利用现有的缓存技术对这些数据进行缓存,接下来会对具体的流程做一个详细的说明。
2.1 数据内容处理
用户查询使用数据的显示方式就是通过客户端在页面上将数据动态的展现反馈出来,当用户需要下载某一个数据的时候,需求就是能够迅速地在本地得到数据。一般而言,网络端的缓存主要就是通过html页面或者jsp页面对数据进行加载并展示,主要是针对解析并处理了的数据集以及jpg等图片进行显示。本文是面向气象解析数据集数据与网页端所需加载的数据做缓存处理。气象数据在网页上的显示主要是提前进行处理,形成以气温、降水、空气湿度、能见度等数据集合的数据集,然后再加载进行使用。加入用户想查询某一时刻的一种气象要素信息并显示在所看的页面上,首先,要去数据库中查看,是否已经有了满足用户需求的数据集,如果找到了,就在显示端加载展示,同时将气象数据存储在缓存里。在实际的应用过程中,我们发现,气象数据种类繁多,文件所占用的存储空间也不尽相同,例如卫星资料与雷带资料,往往需要较大的存储空间进行存储,但是时效性要求较高,这些资料反复读取,会增加系统的负担,造成系统的运行缓慢等问题,另外对于一些模式数据,解析加载时间过长,反复解析同样会使系统的响应时间变长。
对于上述存在的问题,在数据处理过程中,我们结合了分布式编程模型Map Reduce,对所需要处理的数据进行相关的操作。这一编程模型可以更快速的处理数据,通过多节点并行的方式,极大地提升了数据处理速度。同时集群的处理形式相比于单机版处理数据更加安全,如果某一个节点出现故障不会影响到整个集群的数据处理。另外,气象数据的特点也比较适合用Map Reduce编程模型进行解析,主要是气象数据集很多情况下是按行存储,而Map Reduce编程模型可以将文件进行分块读取,每一块是按照行来进行数据读取。
2.2 缓存建立机制
上述内容我们对现有的缓存方法进行了介绍,并针对不同格式的数据集可以使用不同的缓存方法,这些可根据实际情况进行合理确定,接下来我们会说明缓存是如何建立的。首先系统会建立缓存模块用于存储缓存数据,其次系统会对缓存模块的内容建立缓存表,用于记录目前缓存的数据内容以及数据大小。当用户第一次查询数据的时候,系统会直接访问数据库,将获取到的数据向客户端进行反馈,并解析加载出结果,在页面上显示。同时,将查询到的数据存入缓存中,并在缓存记录表中进行记录。对于缓存中存储的数据,可以是原始数据集,也可以是解析过的格点数据集,这种数据集可以直接使用,不需要在页面上解析。当用户再进行访问的时候,系统会优先查询缓存表,根据用户请求的信息进行检索,如果找到数据,即将数据返回,若找不到,即访问数据库,并将数据进行缓存存储。缓存的建设目的主要是为了降低客户端与数据库服务器之间的查询次数,同时通过之前的缓存方法,对缓存数据进行管理,可以最大化的进行缓存空间的利用。同时结合了网络缓存的特点,数据不可能无限制的存储在网络服务器中,这就需要技术人员结合气象数据的查询需要,自行调整缓存策略,从而实现对现有资源的更好利用。
3 结束语
本文目的是提高气象数据在网页端加载并显示的时效性,在存储端结合了缓存技术,在数据处理端采用了分布式的变成处理模型,对气象数据从查询到展示,如何做到提高实效性,保证系统的可用性做了相关的说明。通过预处理技术,将气象数据形成可用的数据集,并将原始数据以及解析之后的格点数据进行自主缓存。提高了缓存的文件命中率与字节命中率,增强了系统的时效性。