一种业务数据的处理方法、装置及服务器
本申请要求申请日为2014年10月28日、申请号为201410586667.4、发明名称为《一种业务数据的处理方法、装置及服务器》的中国发明专利申请的优先权。
技术领域
本发明涉及数据处理技术领域,尤其涉及一种业务数据的处理方法、装置及服务器。
背景技术
在实时监控的场景下,通常只会关注最新时间段的业务数据,根据业务需求可以是最近30分钟、最近1小时、甚至于最近几个小时的数据。
对于业务数据的处理方式,一种方式是,服务器端把业务数据持久化到数据库或者文件,客户端页面发出查询条件,服务器端接收到查询条件后再查询数据库(或文件),返回数据结果并传递给客户端页面。这种处理方法的问题在于,当查询的结果数据很多,并发查询很频繁时,查询压力会很大,同时因不断往数据库(或文件)写入数据,会造成读写互锁争抢资源,读写都会产生比较大的延迟,降低了性能。
另一种做法是服务器端把业务数据写入内存,客户端查询发起的查询请求时,都是从内存中进行查询然后返回查询结果。这种做法的缺点在于,由于业务数据都实时地存储于内存之中,一旦服务异常终止之后,内存中的数据会全部消失,导致无法正常查询。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种业务数据的处理方法、装置及服务器。
基于上述问题,本发明实施例提供的一种业务数据的处理方法,包括:
将业务数据写入持久存储的存储实体中时,将所述业务数据写入到缓存中;
当接收到业务数据查询请求时,从所述缓存中读取对应的业务数据并返回。
本发明实施例提供的一种业务数据的处理装置,包括:
第一写入模块,用于将业务数据写入持久存储的存储实体中;
第二写入模块,用于在将业务数据写入持久存储的存储实体中时,将所述业务数据写入到缓存中;
查询模块,用于当接收到业务数据查询请求时,从所述缓存中读取对应的业务数据并返回。
本发明实施例提供的服务器,包括本发明实施例提供的上述业务数据的处理装置。
本发明实施例的有益效果包括:
本发明实施例提供的上述业务数据的处理方法,在将业务数据持久化即将业务数据写入持久存储的存储实体中的同时,还需要将同样的业务数据写入到缓存中,这样,在保证持久存储的存储实体中的业务数据与缓存中业务数据一致的前提下,当接收到业务数据查询请求时,这样无论并发量多大,可以直接到缓存中查询对应的业务数据,而不必去持久存储的存储实体中查找,既避免了频繁查询持久存储的存储实体导致的读写互锁争抢资源降低性能的问题,同时又将业务数据及时地持久化,避免了服务发生异常时的业务数据的丢失的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的业务数据的处理方法的流程示意图;
图2为本发明实施例提供的步骤S12的具体流程示意图;
图3为本发明实施例提供的实例的流程示意图;
图4为本发明实施例提供的业务数据的处理装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
下面结合说明书附图,对本发明实施例提供的一种业务数据的处理方法、装置及服务器的具体实施方式进行说明。
本发明实施例提供的一种业务数据的处理方法,如图1所示,具体包括以下步骤:
S11、将业务数据写入持久存储的存储实体中时,将所述业务数据写入到缓存中;
S12、当接收到业务数据查询请求时,从所述缓存中读取对应的业务数据并返回。
在本发明实施例中,持久存储的存储实体可以是任何可实现持久存储(相对于临时存储而言)功能的实体,不限定于软件、硬件或者软硬件结合的形式。在本发明实施例中,该持久存储的存储实体包括但不限于例如数据库或文件等。
业务数据存储在缓存中时,可以采用缓存队列的方式,本发明实施例对于采用何种具体存储方式并不限定。同样,本发明实施例对于持久存储的存储实体中的采用何种具体的存储方式也不并不限定。
本发明实施例提供的上述业务数据的处理方法,在将业务数据持久化即将业务数据写入持久存储的存储实体中的同时,还需要将同样的业务数据写入到缓存中,这样,在保证持久存储的存储实体中的业务数据与缓存中业务数据一致的前提下,当接收到业务数据查询请求时,这样无论并发量多大,可以直接到缓存中查询对应的业务数据,而不必去持久存储的存储实体中查找,既避免了频繁查询持久存储的存储实体导致的读写互锁争抢资源降低性能的问题,同时又将业务数据及时地持久化,避免了服务发生异常时的业务数据的丢失的问题。
进一步地,上述步骤S11中,将业务数据写入持久存储的存储实体的步骤,具体可以通过下述过程实现:
对用户的业务请求进行监听;
当接收到用户发出业务请求时,根据该请求的定义形式反序列化数据对象;
序列化是将数据对象状态转换为可保持或传输的格式的数据(一般为数据流)过程。反序列化是与之相反的一个过程,即将网络数据流转换为数据对象。
为了包含用户发出的业务请求的数据流转换成数据对象,需要按照该请求定义的形式将其转变成数据对象。具体的反序列化的实施方法,可以参照现有技术。
将数据对象放入到持久存储的存储实体中保存。
用户的业务请求包括但不限于HTTP请求,还可以是采用其他协议类型的业务请求。
较佳地,在根据该请求的定义形式反序列化数据对象之前,还可以包括对请求内容是否合法的检查的步骤,如果合法,再进行反序列化数据对象的操作。
进一步地,上述业务数据的处理方法,还可以根据业务数据所属业务的需求,预先确定缓存中业务数据中热数据的生命周期,该热数据是指缓存中满足业务查询请求的数据。
在实时监控***的场景下,通常只会关注最新时间段的业务数据,根据业务需求可以是最近30分钟、最近1小时、甚至于最近几个小时的数据,这部分被关注的数据或者说是可以满足业务查询需求的数据,在本发明实施例中称之为热数据,当业务数据失去时效性后,称之为冷数据。随着时间的推移,热数据会变为冷数据,最新接收到的数据变为热数据。
热数据的生命周期可以根据业务数据所属的业务需求来确定,具体如何确定可参考现有技术。
进一步地,本发明实施例提供的上述业务数据的处理方法,还可以根据热数据的生命周期,在缓存中不断删除冷数据,即那些产生时间超过该热数据的生命周期的数据。
在本发明实施例中,业务数据包含业务的各种维度、指标和时间戳,这个时间戳标志着业务数据的产生时间,并且,缓存中的数据是按照时间先后顺序放入的,前面的业务数据的时间戳小于后面数据的时间戳,所以,在本发明实施例中,可以依照业务数据的时间戳来确定哪些业务数据是热数据,哪些业务数据是冷数据并将冷数据删除,具体来说,可以将缓存中保存的最后一行业务数据的时间戳减去热数据的生命周期,得到冷数据的截止时间;
将缓存中时间戳在计算得到的冷数据的截止时间之前的所有业务数据删除。
这样,在缓存中不断地删除冷数据,保留热数据,使得缓存中总保留着对查询业务有用的最新的热数据,既满足了查询请求,又可避免对缓存的过度占用。
进一步地,如图2所示,步骤S12具体可以包括:
S121、当接收到业务数据查询请求时,确定当前服务是否发生异常;
S122、若S121的确定结果为是,则从持久存储的存储实体中读取对应的业务数据并返回;
S123、若S121的确定结果为否,则从缓存中读取对应的业务数据并返回。
为了更好地说明本发明实施例提供的上述业务数据的处理方法,下面以一个简单的实例对其进行说明:
该实例的流程图如图3所示,该流程包括下述步骤:
S21、流程开始时,初始化数据集合以及该方法执行期间需要使用的内部变量;
S22、开启HTTP请求的监听;
S23、判断是否接收到HTTP请求;若是,执行S24,否则,继续执行S22;
S24、接收到请求后判断请求内容是否合法;如果合法,则执行S25;否则,继续执行S22;
S25、根据请求的定义形式反序列化成数据对象。
S26、把数据对象放入到数据库队列中,数据库队列包括业务的各种维度和指标以及时间戳。
本步骤S25在具体实施时,可以利用一个单独的线程定时把数据库队列更新到数据库,该线程按照定时周期性调用(几秒或者几十秒等等),更新完毕后删除已更新的数据库队列成员。
S27、把数据对象同时放入到缓存队列中;
因为数据是按照先后顺序放入队列的,所以前面数据的时间戳一定小于后面数据的时间戳,缓存队列包括业务的各种维度和指标以及时间戳。
在本步骤S27中,可以采用一个单独的线程定时维护缓存队列的数据,该线程按照定时周期性调用(几十秒或者一分钟等等)。根据业务需求取得热数据的生命周期,例如假如生命周期是1个小时(热数据的生命周期),那么取得缓存队列最后一行数据的时间戳,该时间戳减去1个小时得出的时间往前的数据都是冷数据。不断删除这些冷数据,此时缓存队列中的数据就是热数据。
当监听服务是首次启动时,需要把数据库中最近1小时(热数据的生命周期)的数据查询出来,放入缓存队列。
S28、前端发送查询时,如果未发生服务异常,则直接从缓存队列中查询最新的热数据并返回,因为缓存中的热数据和数据库中的数据是一致的。
基于同一发明构思,本发明实施例还提供了一种业务数据的处理装置及服务器,由于这些装置和服务器所解决问题的原理与前述业务数据的处理方法相似,因此该装置和服务器的实施可以参见前述方法的实施,重复之处不再赘述。
本发明实施例提供的上述业务数据的处理装置,如图4所示,包括:
第一写入模块301,用于将业务数据写入持久存储的存储实体中;
第二写入模块302,用于在将业务数据写入持久存储的存储实体中时,将所述业务数据写入到缓存中;
查询模块303,用于当接收到业务数据查询请求时,从所述缓存中读取对应的业务数据并返回。
进一步地,本发明实施例提供的业务数据的处理装置,如图3所示,还包括:缓存处理模块304,用于根据业务的需求,预先确定所述缓存中业务数据中热数据的生命周期,所述热数据是所述缓存中满足业务查询请求的数据。
进一步地,本发明实施例提供的业务数据的处理装置中的缓存处理模块304,还用于根据所述热数据的生命周期,在所述缓存中不断删除产生时间大于所述热数据的生命周期的冷数据。
进一步地,上述缓存处理模块304,具体用于将所述缓存中保存的最后一行业务数据的时间戳减去所述热数据的生命周期,得到冷数据的截止时间;将所述缓存中时间戳在所述冷数据的截止时间之前的所有业务数据删除。
进一步地,上述查询模块303可以包括:
确认子模块,用于在接收到业务数据查询请求时,确定当前服务是否发生异常;
查询子模块,用于在确认结果为是时,从持久存储的存储实体中读取对应的业务数据并返回;在确认结果为否时,从缓存中读取对应的业务数据并返回。
本发明实施例还提供了一种服务器,该服务器包括本发明实施例提供的上述业务数据的处理装置。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的业务数据的处理装置和服务器中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。