OTA的产品数据库的读取方法技术

技术编号:14123825 阅读:44 留言:0更新日期:2016-12-09 10:40
本发明专利技术公开了一种OTA的产品数据库的读取方法,包括以下步骤:S1、分割所述产品数据库中待缓存的数据为若干数据段;S2、选择若干应用服务器;S3、所述若干应用服务器分别从所述产品数据库中读取所述若干数据段并将读取的数据写入内存数据库中缓存;S4、所述应用服务器在查询数据时从所述内存数据库读取数据进行查询。本发明专利技术提供的OTA的产品数据库的读取方法,在进行产品查询时,产品数据库的缓存的建立和更新过程中引入分布式读取数据的概念,利用内存数据库减少对产品数据库资源的竞争,从而提高缓存建立和更新的速度,提高产品查询的整体性能,能够减少对产品数据库的资源的竞争进而能够提高海量的查询请求时的响应速度。

【技术实现步骤摘要】

本专利技术涉及一种OTA(Online Travel Agency,在线旅游社)的产品数据库的读取方法。
技术介绍
大型OTA的产品查询需要对于用户给定的查询条件快速地输出相应的查询结果,譬如查询酒店的实时价格、房型及剩余房间数量等。早期的简单且比较直观的解决方案是让应用服务器直接访问产品数据库来响应查询请求,这种做法的优点是处理流程简单、无冗余数据,同时保证了比较实时地得到查询结果。但是,因为对产品数据库的读取归根结底是对磁盘的读写,而磁盘的读写速度是有极限的,因此这就导致了OTA的产品查询的性能难以得到保障,尤其当OTA的访问量增加时,产品数据库会受到比较大的压力,这会成为影响访问性能的瓶颈。为了解决上述瓶颈,通常的做法是增加缓存。实现缓存有两种做法,第一种是被动缓存,即只有当某种查询条件被使用到后其结果才会被缓存下来;另一种是主动缓存,即应用服务器事先主动从产品数据库读取数据放到缓存里供后续查询使用。不管是主动缓存还是被动缓存,缓存数据都可以存在应用服务器本地或者如Redis(Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型的数据库)或Memcached(Memcached是一个高性能的分布式内存对象缓存系统)的内存数据库中。无论缓存在哪里,都有两个需要完成的任务:一个是初始时从无到有建立缓存数据,另一个是根据缓存数据的新鲜度要求及时更新缓存。不难理解,完成这两个任务都要求从产品数据库读取实时的数据。随着酒店和房型数目的快速增长,加上酒店房价、房态、房量的快速变化和酒店查询的实时性要求以及前台查询量增长需要越来越多的应用服务器,完成这两个任务意味着每一台应用服务器都要从产品数据库不停地读取海量的数据,共同竞争产品数据库资源。这将会造成两个性能问题:一是初始时缓存建立慢,二是缓存的增量数据更新不及时,这些问题都可能造成酒店查询信息不准,引发订单失败和业务损失。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中OTA的产品数据库在面对海量的查询请求时响应速度慢且可能会导致查询结果不准确的缺陷,提供一种能够减少对产品数据库的资源的竞争进而能够提高海量的查询请求时的响应速度的OTA的产品数据库的读取方法。本专利技术是通过下述技术方案来解决上述技术问题:一种OTA的产品数据库的读取方法,其特点在于,包括以下步骤:S1、分割所述产品数据库中待缓存的数据为若干数据段;S2、选择若干应用服务器;S3、所述若干应用服务器分别从所述产品数据库中读取所述若干数据段并将读取的数据写入内存数据库中缓存;S4、所述应用服务器在查询数据时从所述内存数据库读取数据进行查询。本方案中,在查询产品数据库过程中引入分布式读取数据的概念,即利用内存数据库建缓存,在应用服务器需要查询产品数据库时先在内存数据库中进行查询,从而减少对产品数据库资源的竞争,从而提高海量的查询请求时的响应速度;另外应用服务器在内存数据库中建缓存时,通过对待缓存的数据进行分割,由若干应用服务器并行读取待缓存的数据后写入内存数据库,从而能够提高内存数据库中缓存建立和更新的速度,从而提高整体性能。较佳地,步骤S4还包括以下步骤:所述应用服务器将从所述内存数据库读取的数据保存到所述应用服务器进行本地缓存。本方案中,应用服务器在查询数据时,先查询本地缓存,如果本地缓存查询不到,再从内存数据库读取数据进行查询,读取的数据同时保存到本地进行缓存,以备后续查询数据时使用。较佳地,步骤S3中所述若干应用服务器分别从所述产品数据库中随机读取所述若干数据段。本方案中,每一台应用服务器在从产品数据库中读取待缓存的若干数据段时采用随机序列读取,从而减少多台应用服务器读取同一个数据段的概率。较佳地,所述内存数据库为Redis或Memcached。较佳地,所述内存数据库中采用分布式锁,所述分布式锁为每段数据段设置锁状态参数,所述锁状态参数包括TRUE和FALSE两种状态,步骤S3中每个应用服务器在读取一个待读取的数据段之前判断所述待读取的数据段的所述锁状态参数是否为FALSE状态,若否,则不读取所述待读取的数据段,若是,则读取所述待读取的数据段,同时设置所述待读取的数据段的所述锁状态参数为TRUE状态,并在读取完毕后再设置所述待读取的数据段的所述锁状态参数为FALSE状态。本方案中,TRUE状态表示当前时间有应用服务器在对这段数据段进行建缓存操作,所谓建缓存操作就是从产品数据库读取数据段并写入到内存数据库中进行缓存的操作,FALSE状态为初始状态,表示这段数据段当前时间没有应用服务器对其进行建缓存操作。当应用服务器拿到这段数据段的建缓存权时,在正式开始建之前,会把锁状态参数置为TRUE状态,当应用服务器建好这段数据段的缓存的时候,会设置为FALSE状态。每个应用服务器在读取一个待读取的数据段之前判断所述待读取的数据段的所述锁状态参数是否为FALSE状态,若否,则不读取所述待读取的数据段,若是,则读取所述待读取的数据段,同时设置所述待读取的数据段的所述锁状态参数为TRUE状态,并在读取完毕后再设置所述待读取的数据段的所述锁状态参数为FALSE状态。通过在内存数据库中采用分布式锁能够极大地降低两台以上应用服务器同时为同一数据段建缓存的概率。较佳地,所述分布式锁还为每段数据段设置锁定时间参数,步骤S3中设置所述待读取的数据段的所述锁状态参数为TRUE状态时还同时设置所述待读取的数据段的锁定时间参数为设置所述待读取的数据段的所述锁状态参数为TRUE状态时的时间值;步骤S3中应用服务器在判断所述待读取的数据段的所述锁状态参数为TRUE状态时,再判断当前时间和所述待读取的数据段的所述锁定时间参数的差值是否大于第一时间阈值,若是,则所述应用服务器读取所述待读取的数据段,同时设置所述待读取的数据段的锁定时间参数为当前时间,若否,则不读取所述待读取的数据段。本方案中,通过比较待读取数据段的锁定时间参数的值和当前时间的差值与提前预设的第一时间阈值,如果差值超过第一时间阈值,那么说明待读取数据段被读取时间异常超时,其它应用服务器发现这一状况时即使待读取的数据段的锁状态参数为TRUE状态依然会读取该数据段并写入内存数据库。锁定时间参数的作用是为了防止有应用服务器在建缓存的时候出现异常情况而退出,这个时候应用服务器不会主动把锁状态参数从TRUE状态设为FALSE状态,其他应用服务器可以根据锁状态参数和锁定时间参数,判断锁是否超时。如果锁定时间参数和当前时间的差大于等于设置的最大缓存建立超时时间即第一时间阈值,则会认为有问题,其他应用服务器会把这个时间修改为当前时间,继续对这段数据段建缓存。较佳地,所述分布式锁还为每段数据段设置时间花费参数,所述时间花费参数用于表征步骤S3中应用服务器从所述产品数据库中读取所述待读取的数据段并将读取的数据写入内存数据库中缓存所花费的时间。本方案中,时间花费参数用于监控各段数据段建缓存花费的时间,评估分段的大小是否合理。一般来讲,每段建缓存的时间不能太长,如果太长,则说明数据段应该分得再小一些。较佳地,所述分布式锁还为每段数据段设置更新时间参数,步骤S3中每个应用服务器在将读取的数据写入所述内存数据库中缓存后设置所述更新时间参数为缓存完本文档来自技高网
...
OTA的产品数据库的读取方法

【技术保护点】
一种OTA的产品数据库的读取方法,其特征在于,包括以下步骤:S1、分割所述产品数据库中待缓存的数据为若干数据段;S2、选择若干应用服务器;S3、所述若干应用服务器分别从所述产品数据库中读取所述若干数据段并将读取的数据写入内存数据库中缓存;S4、所述应用服务器在查询数据时从所述内存数据库读取数据进行查询。

【技术特征摘要】
1.一种OTA的产品数据库的读取方法,其特征在于,包括以下步骤:S1、分割所述产品数据库中待缓存的数据为若干数据段;S2、选择若干应用服务器;S3、所述若干应用服务器分别从所述产品数据库中读取所述若干数据段并将读取的数据写入内存数据库中缓存;S4、所述应用服务器在查询数据时从所述内存数据库读取数据进行查询。2.如权利要求1所述的OTA的产品数据库的读取方法,其特征在于,步骤S4还包括以下步骤:所述应用服务器将从所述内存数据库读取的数据保存到所述应用服务器进行本地缓存。3.如权利要求1所述的OTA的产品数据库的读取方法,其特征在于,步骤S3中所述若干应用服务器分别从所述产品数据库中随机读取所述若干数据段。4.如权利要求1所述的OTA的产品数据库的读取方法,其特征在于,所述内存数据库为Redis或Memcached。5.如权利要求4所述的OTA的产品数据库的读取方法,其特征在于,所述内存数据库中采用分布式锁,所述分布式锁为每段数据段设置锁状态参数,所述锁状态参数包括TRUE和FALSE两种状态,步骤S3中每个应用服务器在读取一个待读取的数据段之前判断所述待读取的数据段的所述锁状态参数是否为FALSE状态,若否,则不读取所述待读取的数据段,若是,则读取所述待读取的数据段,同时设置所述待读取的数据段的所述锁状态参数为TRUE状态,并在读取完毕后再设置所述待读取的数据段的所述锁状态参数为FALSE状态。6.如权利要求5所述的OTA的产品数据库的读取方法,其特征在于,所述分布式锁还为每段数据段设置锁定时间参数,步骤...

【专利技术属性】
技术研发人员:管凌云贾晓明陈瑞亮李巍
申请(专利权)人:携程计算机技术上海有限公司
类型:发明
国别省市:上海;31

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

1