CN105630982A - 航班数据缓存方法及系统 - Google Patents

航班数据缓存方法及系统 Download PDF

Info

Publication number
CN105630982A
CN105630982A CN201510994414.5A CN201510994414A CN105630982A CN 105630982 A CN105630982 A CN 105630982A CN 201510994414 A CN201510994414 A CN 201510994414A CN 105630982 A CN105630982 A CN 105630982A
Authority
CN
China
Prior art keywords
data
airline
buffer memory
flight
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201510994414.5A
Other languages
English (en)
Inventor
刘冬
郭丹
朱红林
牛宪龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Travelsky Technology Co Ltd
China Travelsky Holding Co
Original Assignee
China Travelsky Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Travelsky Technology Co Ltd filed Critical China Travelsky Technology Co Ltd
Priority to CN201510994414.5A priority Critical patent/CN105630982A/zh
Publication of CN105630982A publication Critical patent/CN105630982A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种航班数据缓存方法及系统,所述方法包括:配置系统参数,实现航班数据的多层级缓存;缓存数据多层级查询;缓存数据更新;缓存自检。本发明实施例在保证高准确率的情况下高效的获取航班舱位数据,实现了非托管航空公司数据访问准确性和效率的统一,既有效满足了用户对非托管航空公司航班的查询需求,又提高了查询响应时间,并极大减少了航班查询系统对非托管航空公司服务器的访问,降低了双方服务器的压力。

Description

航班数据缓存方法及系统
技术领域
本发明涉及数据处理技术,尤其涉及一种航班数据缓存方法及系统。
背景技术
过去,航班信息只有代理人和航空公司能够查询。随着Internet的发展,很多的旅行信息服务商开始出现,使得个人用户能够通过服务商提供的查询系统自行查询航班信息并选择出行路线。此时,服务商的航班查询系统与航空公司的相关系统之间采用的是直连的实时访问方式。但为了低价而发起的越来越多的查询请求给服务商的航班查询系统、以及航空公司的相关系统带来了巨大压力,压力增大造成访问超时,随之而来的拒售、错售等问题层出不穷。
航空公司与旅行信息服务商之间的航班信息交互除了直连方式外还可以通过AVS(theAvailabilityStatus)报文(用于销售和报告舱位状态的报文)来进行,AVS报文是航空公司周期性发给服务商的关于航班信息、舱位信息的报文。AVS报文的周期比较长,不能反应舱位实时变化,而且航空公司通常会对舱位销售进行策略的控制,因此,单纯采用AVS报文常会出现舱位不准、无法订座等情况。
上述问题对于全球分销系统(GDS,GlobalDistributionSystem)来说主要是非托管航空公司相关信息的实时获取。流量巨大的GDS完全实时访问航空公司的服务器或所在的HOST服务器,必然给服务器带来巨大的压力,因此各GDS目前主要采用缓存技术与实时访问结合的方案来处理这类问题。
航班查询系统访问非托管航空公司相关系统时,针对非托管航空公司的直接请求消耗时间和资源多,平均一个直连请求响应时间在500ms以上,如果每个用户请求都通过直连方式访问非托管航空公司,不但系统的数据压力无法承受,用户体验也相当差。比如,平均一个国际运价搜索的查询请求中包含50条非托管航空公司的航班信息,这50个航班都需要通过直连访问非托管航空公司来获取舱位结果;如果50个请求同时发往非托管航空公司,最后的回报时间取决于耗时最长的那个请求,而如果有个别请求超时(无返回结果),从用户的角度看,整个航班查询的请求回报时间需要20秒以上。
为解决航班查询系统对于非托管航空公司相关系统的访问问题,需要提出一种新的缓存方法及系统,使航班查询系统访问非托管航空公司相关系统时,在保证高准确率的情况下高效的获取航班数据,既提高航班查询系统的响应时间又能够减轻非托管航空公司相关系统的压力。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种航班数据缓存方法及系统。
为达到上述目的,本发明实施例的技术方案是这样实现的:
一种航班数据缓存方法,所述方法包括:
配置系统参数,实现航班数据的多层级缓存;
缓存数据多层级查询;
缓存数据更新;
缓存自检。
其中,所述多层级缓存包括:不同航空公司的航班数据配置不同的缓存区域;以及,针对同一航空公司的航班数据,按用户身份分级进行读写配置;针对同一航空公司的航班数据,配置直飞与联程区分读写。
其中,所述按用户身份分级进行读写配置,包括:将用户按区域进行分级,在每个层级上配置缓存块,同一层级上不同地域的用户对应不同的缓存块,可以选择性的设置为在任意一个层级上区别读取。
其中,所述缓存数据更新包括:实时发送非托管航空公司直连请求更新缓存数据、和/或主动触发更新缓存数据、和/或智能轮询方式更新缓存数据。
其中,所述主动触发更新缓存数据,包括:对于配置为查询缓存的用户,在其请求非托管航空公司相关数据时,直接从缓存中读取相应数据并返回给用户,同时,在后台触发针对非托管航空公司的直连请求,得到响应后,将响应中的相关数据更新到缓存。
其中,所述智能轮询方式更新缓存数据,包括:根据预先配置的原始轮询策略和自我学习调整后的轮询策略,发出直连请求,在收到正常回报之后,将回报中的航班数据更新到缓存。
其中,所述缓存自检包括:按预先配置的时间间隔,循环检查是否有失效的航班数据,如果有,则删除相应的失效节点。
一种缓存系统,所述缓存系统包括:查询模块、更新模块、缓存管理模块、缓存内存和通信模块,其中,缓存内存,用于实现航班数据的多层级缓存;查询模块,用于多层级查询缓存数据;更新模块,用于缓存数据更新;缓存管理模块,用于缓存自检,以及为所述缓存内存配置系统参数;通信模块,用于在用户请求航班数据时实时地或被触发地发出直连请求,并将请求来的数据通过所述更新模块更新到所述缓存内存中。
其中,所述缓存内存用于实现航班数据的多层级缓存,包括:不同航空公司的航班数据配置不同的缓存区域;以及,针对同一航空公司的航班数据,按用户身份分级进行读写配置;针对同一航空公司的航班数据,配置直飞与联程区分读写。
其中,所述更新模块用于缓存数据更新,包括:实时发送非托管航空公司直连请求更新缓存数据、和/或主动触发更新缓存数据、和/或智能轮询方式更新缓存数据。
本发明实施例提供一种高效的航班数据缓存方法及系统,采用多层级缓存结构,能够在查询非托管航空公司航班时,在保证高准确率的情况下高效的获取航班舱位数据,实现了非托管航空公司数据访问准确性和效率的统一。既有效满足了用户对非托管航空公司航班的查询需求,又提高了查询响应时间,并极大减少了航班查询系统对非托管航空公司服务器的访问,降低了双方服务器的压力。目前通过查询该缓存系统获取航班数据,已经实现95%非托管航空公司准确率,接近非托管航空公司直连访问的准确率。
本发明实施例的缓存系统在结构上按航空公司和用户身份区别存储与查询,并可以按直飞或联程分别存储与查询,如此,针对航班数据的特点采用了多层级数据缓存结构和缓存数据管理机制,这个缓存结构同时适用于直飞和O&D联程航班,能够根据用户的信息进行不同级别的精确数据存储。
缓存系统的命中率和准确率由三类更新方式保证:实时非托管航空公司直连请求的数据为缓存提供最基本的数据来源,保障了缓存数据的广泛性和新鲜度;主动触发方式的更新数据为缓存提供有针对性的数据,有针对性的发出非托管航空公司直连请求,使用直连请求的回报数据刷新缓存,提升下一次同类用户查询的命中率,从而提高了缓存命中率;智能轮询方式更新缓存,根据用户访问热点信息统计和热门航线访问趋势统计数据做为轮询样本,用实时最新的数据刷新缓存,保证缓存数据的高准确率,为提升缓存数据的准确率做出重要支撑。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本发明实施例缓存方法的实现流程图;
图2为本发明实施例缓存系统的组成结构示意图;
图3为本发明实施例缓存系统中缓存内存的结构示意图;
图4为本发明实施例查询航班数据时各个服务的访问方式示意图;
图5为本发明实施例通过查询请求更新缓存数据的示意图;
图6为本发明实施例通过智能轮询更新缓存数据时轮询的流程示意图。
具体实施方式
本发明实施例的缓存方法,通过一个能够存储非托管航空公司航班数据的缓存系统实现,该方法包括:
步骤10:配置系统参数,实现航班数据的多层级缓存;
步骤20:缓存数据多层级查询;
步骤30,缓存数据更新;
步骤40,缓存自检。
其中,所述“多层级缓存”是首先按航空公司和用户身份(国家、城市、OFFICE等身份标识)分类存储航班数据,再将航班数据按照按直飞或联程分别存储。
具体地,步骤10的配置可以包括:针对不同航空公司配置不同的缓存区域,在每个缓存区域上进行用户身份分级读写配置、直飞与联程读写配置、联盟航空公司配置等。这里,步骤10的配置还可以包括:实时进行直连请求的用户配置;直接读取缓存并触发直连请求更新缓存的用户配置;缓存的大小、缓存数据的有效时间、缓存自检时间间隔等。
其中,本发明实施例从多维度配置所述多层级缓存,以提高系统缓存读写精度:第一,按航空公司分区存储航班数据,即为每个航空公司设置其自身的缓存区域;第二,按用户身份分级进行读写配置,即将用户按区域进行分级,如可以按照国家、城市、OFFICE等对用户进行分级,并可以选择性的设置在任意一个层级上区别读取,也就是说,按照地域对用户分级,在每个层级上配置缓存块,同一层级上不同地域的用户对应不同的缓存块,可以选择性的设置为在某个层级上区别读取;第三,配置直飞与联程区分读写,即设置对于哪些航空公司将直飞与联程进行区别读写,对于不在设置中的航空公司,所有的直飞航班与联程航班,只要航班号、日期以及用户身份相同,都会在一个缓存块中进行读写;而设置了直飞与联程区分读写的航空公司,在读写时不仅按航班号等信息进行查找,还可以按起飞到达城市对查找到的信息进行匹配,也就是说,对于某个或某些航空公司的缓存区域,按照起飞到达城市和/或航班号将缓存区域分成多个缓存块,在读写时根据查询请求的航班号和/或起飞到达城市查找航班数据。
例如,设置在OFFICE层级进行区别读取,那么对于不同OFFICE的用户,其请求的非托管航空公司航班数据存储在同一缓存区域的不同位置。具体地,OFFICE_A的用户向非托管航空公司相关系统发起直连请求时,非托管航空公司相关系统返回的航班数据将存储到OFFICE_A的缓存块中。在OFFICE_A的用户请求查询非托管航空公司航班数据时,可以直接从OFFICE_A的缓存块读取相应数据并返回给所述用户,如果OFFICE_A的缓存块中已经存有相应数据,则可以直接读取,如果OFFICE_A的缓存块中没存相应数据,则向上一级(即,城市)的缓存块查询,上一级的缓存块有相应数据则直接读取并返回,如果上一级的缓存块也没存相应数据,则可以继续向上一级(即,国家)的缓存块查询。
本发明实施例中涉及的航班数据可以包括航班舱位状态数据以及其他数据,具体内容如下述表1所示,其中,如果用户多次请求同一航班时,非托管航空公司相关系统返回的航班数据中除了航班舱位状态数据变化较大之外,其他数据变化不大,在请求航班数据时用户最关注和最需要的信息就是航班舱位状态数据。
表1
实际应用中,也可以不设置按用户身份分级读写。如果不设置按用户身份分级读写,那么所有用户的读写都将会在一个公共的缓存块中进行。
其中,多维度配置多层级缓存的过程中,按航空公司分区存储时还可以设置联盟航空公司间联程存储,设置了联盟航空公司的两个或两个以上的航空公司都作为同一个航空公司来看待。也就是说,设置联盟航空公司间联程存储的两个或两个以上的航空公司,对应同一个缓存区域,在缓存内存中对应同一节点。
特别的,对于联程航班数据来说,由于航空公司直飞航班请求和联程航班请求同一段直飞航班时舱位状态不一定相同,所以需要针对联程航班请求的航班数据分开存储,如此,能够在查询单段航班时获取到单段航班数据,在用户查询联程航班时可以查询联程的航班数据并返回,没有联程时直接返回直飞单段的航班数据给用户。
具体地,步骤20中进行缓存数据多层级查询时,用户查询非托管航空公司航班数据时,首先判断是否从缓存读取数据,如果是则可以按照以下步骤查询:
步骤21,先根据查询的航空公司找到对应的缓存区域(联程的话按第一段航班所属航空公司来匹配),再根据用户身份找到相匹配的缓存块,如果匹配不上或者没有找到所需的航班数据,则再上向一层级匹配,直到匹配到缓存块。如果在最低等级(即公共缓存区域)仍未找到匹配的航班数据,则返回本地缓存的数据,并触发步骤202;如果匹配到相应缓存区域,则继续步骤203。
步骤22,发送非托管航空公司直连请求的报文;
步骤23,判断读取直飞缓存数据,还是联程缓存数据,如果读取联程缓存数据,则继续判断当前联程涉及的航班是否为联盟航空公司,如果不是联盟航空公司,则匹配航班号、出行日期与起飞到达(OD),找到相应缓存块,读取相应数据并返回,如果是联盟航空公司,则按联程第一段的航空公司找到相关区域,再匹配航班号、出行日期和OD,找到相应缓存块,读取相应数据并返回;如果读取直飞缓存数据,则直接根据航班号和出行日期找到相应缓存块,读取相应数据并返回。
具体地,步骤30的缓存数据更新可以包括:实时发送非托管航空公司直连请求更新缓存、主动触发更新缓存数据,以及智能轮询方式更新缓存数据;
所述“实时发送非托管航空公司直连请求更新缓存”是指用户请求非托管航空公司相关数据时,实时发送直连请求给非托管航空公司相关系统,并将非托管航空公司相关系统返回的结果显示给用户,同时将结果中的数据更新到缓存中。具体地,用户请求非托管航空公司相关数据时,根据配置确定是否进行实时非托管航空公司直连请求,如果是,则向非托管航空公司相关系统发送相应电子数据交换(EDI,ElectronicDataInterchange)请求报文,并等待响应,如果在超时时间内未得到响应,则从缓存中读取相关数据返回给用户;若在超时时间范围内得到了响应,则解析所接收到的响应,获得相关数据并返回给用户,同时将获得的相关数据更新到缓存。其中,根据数据库的配置确定是否进行实时非托管航空公司直连请求,这里的配置原则是当前非托管航空公司是否签有直连请求协议,对于没有直连协议的航空公司无法发送直连请求。
所述主动触发更新缓存数据是指用户直接查询缓存中的数据,并后台触发直连请求更新缓存,也就是说,部分用户在请求非托管航空公司相关数据时,直接从缓存中获取相关数据返回给用户,并在后台向非托管航空公司发送直连请求,将非托管航空公司相关系统返回的结果更新到缓存;具体地,根据配置,一些特定的用户在请求非托管航空公司相关数据时,直接从缓存中读取相应数据并返回给用户,同时,在后台触发针对非托管航空公司的直连请求,得到响应后,将响应中的相关数据更新到缓存。这里的配置是指针对不同用户配置是直接查询缓存还是实时发送直连请求,对于配置为查询缓存的用户,采用主动触发更新缓存,对于配置为实时发送直连请求的用户,则实时发送非托管航空公司直连请求更新缓存。
所述“智能轮询更新缓存”是指解析用户查询请求,根据预先制定的分配策略分配资源,向非托管航空公司相关系统发送直连请求,并将其返回的结果更新到缓存。具体地,
对上个月(轮询周期可以根据实际需要设置,可以是一个月,也可以是一周或者10天等等)的用户非托管航空公司订票数据进行分析,以出票量为依据,对起飞到达的城市对以及出行日期进行等级划分,对不同的等级设置不同的频率,按照该频率发送直连请求,再将非托管航空公司相关系统返回的结果解析后更新到缓存,这是原始更新缓存策略(以下称原始策略)。在原始策略运行时,实时分析用户查询行为,动态调整原始策略,使之能在发送最少直连请求报文的情况下,最大限度地保证缓存的准确性。其中,根据出票量的多少,确定轮询频率,有的城市对比如北京到香港的国泰航空出票量非常多(大于1000),就多轮询几次,让这个航空公司的航班数据在缓存中的状态尽量更准确些。这里,订票数据指的是一个月的订票汇总数据,是统计的结果,可以从外部系统获取,缓存中没有订票数据。
也就是说,本发明实施例中,配置为实时查询的用户查询非托管航空公司相关数据时,直接发送直连请求给非托管航空公司相关系统,等待正常回报后,将回报的航班数据返回给用户,并更新到缓存;对于配置为查询缓存的用户,查询非托管航空公司相关数据时,直接查询缓存中的数据返回给用户,并在后台触发直连请求,等待正常回报后,将回报的航班数据更新到缓存。
对于智能轮询更新缓存,根据原始的轮询策略和自我学习调整后的轮询策略,向非托管航空公司相关系统发送直连请求,在收到正常回报之后,将回报中的航班数据更新到缓存。
需要说明的是,本发明实施例中更新缓存时,将数据写入缓存的过程中,需要查找相应节点的位置,查找过程与上述步骤21-23的匹配过程基本一致,在找到相应节点所在的位置后,更新该节点的数据;如果没有找到相应节点,则插入新节点,并更新该节点的数据。这里,每个航班都有固定的位置,如果这个位置之前还没有缓存数据,就插入新的节点;如果有,就更新这个节点数据。
实际应用中,由于对非托管航空公司发起直连请求是一项费钱的请求,并且它们的响应速度不能保证;因此,需要对区别对待用户。一般来说,代理人用户需要最精确的舱位状态,其每次请求的航班数量都在9个以内,对这类用户配置为实时查询的用户,这类用户的非托管航空公司查询请求,都会发送直连请求,以拿到最准的舱位状态;而对于运价搜索用户,准确率要求不如代理人高,它们请求的航空数量都在100条以上,对这类用户配置为查询缓存的用户,这类用户的非托管航空公司查询请求,直接查询缓存。
存储代理人查询请求中的非托管航空公司航班数据,是非托管航空公司缓存的基石,但仅仅只有这一部分数据不足达到足够高的准确率。因此,本发明实施例中对于运价搜索查询请求,如果请求中的非托管航空公司航班数据在缓存内存中没有查到,则在后台触发针对非托管航空公司相关系统的直连请求,收到回复后,从回复中解析非托管航空公司航班数据并更新到缓存。进一步地,考虑到多个直连请求的回报时间不确定,本发明实施例对于涉及到非托管航空公司的航班查询请求,填入本地AVS舱位数据(本地数据库中存储的数据,通过AVS报更新),这样,缓存中非托管航空公司航班数据将更具针对性,对于运价搜索的查询能够给予更好的支持。
步骤40的缓存自检中,缓存系统按预先配置的时间间隔,循环检查是否有失效的航班数据,如果有,则删除相应的失效节点。
这里,如果自检的时间间隔设置过短,缓存中的数据往往还是有效的,自检效率低,浪费了资源;如果自检的时间间隔设置过长,缓存中的数据就会有不少脏数据(例如,舱位状态已经变更,但缓存中舱位状态数据未变),如此,数据准确率将会下降。为此,本发明实施例采用智能的缓存刷新机制。根据不同航线上舱位更新频率不同,实时调整自检的时间间隔设置。将舱位更新频繁的航线自检的频率加大,即将舱位更新频繁的航线自检的时间间隔设置短一些,而舱位更新少的航线轮询频率减低,即将舱位更新频率低的航线自检的时间间隔设置长一些,从而使用最少的资源提升非托管航空公司舱位状态数据缓存准确率。
下面对本发明实施例缓存方法及系统的具体实现过程做详细说明。
如图2所示,本发明实施例提供的缓存系统包括:查询模块、更新模块和缓存处理模块、通信模块和缓存内存,其中,所述查询模块提供数据查询服务,用于在用户请求航班数据时,采用多层级查询方式从所述缓存内存中查询数据;所述更新模块,提供数据更新服务,用于更新所述缓存内存中的数据;所述缓存处理模块提供缓存创建、缓存管理及失效处理等功能,用于按照多层级缓存读写方式在所述缓存内存中创建数据,以及定期进行缓存自检,也就是说,管理所述缓存内存中的数据以及定时处理所述缓存内存中失效的数据;所述通信模块,用于在用户请求航班数据时实时地或被触发地向非托管航空公司系统发送直连请求,并将请求来的数据通过所述更新模块更新到所述缓存内存中。具体地,所述查询模块没有查到用户请求的数据时或所述缓存处理模块发现缓存内存中的数据过期时或在用户请求航班数据时,通信模块启动,实时或在被触发时向非托管航空公司系统发送直连请求。
其中,所述更新模块用于缓存数据更新,包括:实时发送非托管航空公司直连请求更新缓存数据、和/或主动触发更新缓存数据、和/智能轮询方式更新缓存数据。其具体实现过程与上述方法相应描述相同,不再赘述。
其中,所述缓存内存采用多层级缓存航班数据,具体地:不同航空公司的航班数据配置不同的缓存区域;以及,针对同一航空公司的航班数据,按用户身份分级进行读写配置;针对同一航空公司的航班数据,配置直飞与联程区分读写。
本发明实施例的缓存系统可以使用与业务相关的树形存储结构,比直接使用Hash存储查询效率更高。本发明实施例的缓存系统核心是其缓存内存的结构,称为SeamlessMem。如图3所示,SeamlessMem(Seamless缓存的内存结构)分为三个部分:控制区(ControlArea)、索引及数据区(Index&DataArea)和可利用空间(AvailableSpace)。其中,控制区包含以下成员:缓存模式(Mode)、已存储的数据单元数目(Elem_Num)和配置项(Config),图3中的共享内存IPCKEY是缓存系统的唯一性ID(Shm_Key),其它程序要找到这个缓存,就需要通过IPCKEY来找。配置项(Config)包括共享内存大小(Capacity)、信号量(Sem_Key)、信号量个数(Sem_Num)、有效级别数(Effect_Num)、有效时间(Effect_Time)、各有效级别对应的用户类型(Effect_User)、特殊有效项(Special_Eft)、最大缓存天数(Cach_Day)、失效检查的轮巡时间间隔(Chk_Time)、执行管理命令的等待时间(Wait_Time)、可利用空间下限(Low_Limit)、存取策略(S&A_Num)、共享内存中内容持久化文件的路径(Dump_file)等。这里,存取策略因受POS(PointofSale)的影响,相同查询条件但不同Office的Seamless数据有可能不同,SeamlessMem不可能为所有Office存储其Seamless数据,为此,实际存取数据时,SeamlessMem提供三种存取方式:精确存取、按城市代码存取和共享存取。精确存取是指不同的Office将存取各自的Seamless数据;按城市代码存取是指城市代码相同的Office共用一份数据;共享存取是指所有Office共用一份数据。存取策略用于确定某Office采用以上哪种方式存取。
如图3所示,索引及数据区(Index&DataArea)的组织方式为树索引+链表,树索引为2层36叉+4层10叉树,对应2位航空公司代码和4位航班号(若航班号不足4位则在前面补0),其树叶节点的数量为12960000(36×36×10×10×10×10),若某树叶节点决定的航班存在Seamless数据,则该树叶节点连接一条数据链表(LinkNode)。
LinkNode中含以下数据成员:子链表标识符ID、子链表所含的节点数量LinkNodeNum、数据存储单元Element、指向本子链表下一个节点的指针NexePtr和指向下一条子链表的指针BrotherPtr,其中,ID、LinkNodeCount和BrotherPtr只在每条子链表的第一个节点存在,数据存储单元Element中存储的就是舱位状态数据。
如图3所示,上述所有数据链表连接的数据链表节点(即LinkNode);从可利用空间(AvailableSpace)分配,当某个节点中的数据不再有效时,将该节点从数据链表中删除并交还给可利用空间。初始时,可利用空间为一整块内存,当其从数据链表回收空间后,它逐渐退化为一条单链表。
实施例一
应用本发明实施例的缓存系统,查询航班数据的过程可以这样实现:缓存系统的缓存处理模块定时进行失效管理,删除缓存内存中过期的数据;用户向缓存系统请求非托管航空公司航班信息时,调用查询模块查询缓存内存,查到相应数据且在有效期内则将相应数据返回给用户;如果没有查到相应数据或者失效,则调用通信模块向非托管航空公司相关系统发请求,收到非托管航空公司相关系统的回复后,一方面将回复中的非托管航空公司航班舱位状态数据返回给用户,另一方面调用缓存处理模块将回复中的数据更新至缓存内存。
应用本发明实施例的缓存系统,查询航班数据的过程中各个服务(查询服务等)的访问方式如图4所示。
实施例二
如图5所示,本发明实施例的缓存系统通过查询请求更新缓存数据的过程可以这样实现:得到非托管航空公司相关系统针对代理人查询请求的回复后,缓存系统将回复中涉及非托管航空公司航班舱位状态的数据提取出来,更新到缓存内存中对应该非托管航空公司的缓存区域,实现缓存刷新。具体地,代理人请求调用缓存系统的查询模块,查询模块发现需要异步调用非托管航空公司直连请求,此时查询模块调用通信模块发请求给非托管航空公司相关系统;查询模块接收非托管航空公司相关系统返回的结果,提取其中的非托管航空公司航班舱位状态数据并返回给用户,同时调用缓存管理模块将非托管航空公司航班舱位状态数据写入到缓存内存中。
实施例三
存储代理人查询请求中的非托管航空公司数据,是缓存系统的基石,仅仅只有这一部分数据不足达到足够高的准确率;因为代理人查询请求和运价搜索的查询的内容还是有所区别,代理人可能更关注他所熟悉的那些热门航线,且对运价搜索的查询范围需求更广。
本发明实施例的缓存系统使用主动触发方法更新缓存数据的过程可以这样实现:运价搜索用户调用查询引擎,查询请求中发现有非托管航空公司航班,则查询Seamless缓存系统以获取非托管航空公司航班数据;如果从Seamless缓存系统中没有查到结果,后台主动触发一条Seamless缓存到非托管航空公司的直连请求,通过非托管航空公司直连访问获取实时的航班数据;本次查询请求不会等待回报,继续其它业务逻辑处理;对于在缓存系统中没有的非托管航空公司航班,查询本地的航班数据;其它业务逻辑处理,完成后组报返回;本次查询流程结束;非托管航空公司回报后,将非托管航空公司回报的结果更新到Seamless缓存,如此下次同样的查询请求产生时,缓存能够将返回最新的航班数据给用户。
实施例四
由于舱位数据变化频繁,舱位数据的准确率有待提升,本发明实施例通过使用智能轮询的方法更新缓存数据,保证舱位结果发生变化后能及时的更新到缓存中,从而提高缓存中舱位结果的准确率。
本发明实施例的缓存系统通过智能轮询更新缓存数据的过程可以这样实现:
首先,轮询策略原则可以这样设置:保障需求的同时,减少对现有资源的消耗,降低对本地数据库的压力;保障需求的同时,不能造成对非托管航空公司相关系统的压力;各航线对舱位的准确度要求不同,支持多级别轮询配置(即可以阶段性变化轮询配置),例如,白天高峰时间因为生产系统压力过大可能需要暂停;考虑到生产压力,通过时间配置调整轮询策略,并支持手动配置;已经轮询的记录n小时内(n根据所在的记录级别而定)不再轮询;考虑非托管航空公司相关系统的访问并发数限制;根据轮询结果准确性动态调整轮询时间;
其次,轮询过程中使用两个表:记录有需关注的所有航线的航线轮询表和记录有针对不同轮询配置策略的轮询等级配置表;对于轮询样本,对上个月的用户非托管航空公司订票数据进行分析,以出票量为依据,对起飞到达的城市对以及相关日期进行等级划分,汇总为轮询样本数据;
如图6所示,本轮询流程如下:
步骤601:轮询服务组内登记;登记合格后,可以开始工作;
步骤602:读取所有记录,轮询每一条;
这里,按一定规则将轮询所有航线记录分配到各个轮询服务;对于每个服务每次轮询;对于航线轮询表中的每一条记录,都有一个日期字段,指明该条记录的轮询日期范围(例如,10-20),设置轮询日期,例如从起始日期的第一天开始。
步骤603:根据所属类型,检索轮询登记配置表;
步骤604:根据航线轮询表中协议类型字段判断航线协议类型,如果是直接接入(DA,DirectAccess)协议,继续步骤605-607,如果是Seamless协议,则继续步骤608-611;
其中,DA协议是一种GDS与非托管航空公司直连的协议,以起飞达到城市作为请求输入。Seamless协议是一种GDS与非托管航空公司直连的协议,以航空公司航班号作为请求输入。
步骤605-607:执行DA轮询,查找元素更新标记,判断更新时间和更新频率,DA发报;
步骤608-611:执行Seamless轮询,获取航线的航班计划,查找元素更新标记判断更新时间和更新频率,Seamless发报。
具体地,根据所属类型,检索轮询等级配置表,检查:获取当前时间,检查是否在有效日期范围之间,不在,跳过本记录,继续轮询;当前时间是否处于高峰时间段,如果是,记录高峰时间段的指令发送间隔;满足发报条件,根据航线轮询表中命令类型判断需要轮询的类型,如果配置有DA轮询,查询当前需更新记录的时间;如果获取到时间,并且该时间与当前时间的差值<更新频率时间值,跳过本记录,继续轮询,如果未获取到缓存项,插入一条记录,更新时间为当前时间、更新频率为默认更新频率,如果配置有Seamless轮询,查询本航线对应的航线记录,对于每条记录,查询当前需更新记录的时间;如果获取到时间,并且该时间与当前时间的差值<更新频率时间值,跳过本航班记录,继续下一条;否则,加入到发送队列;如果未获取到缓存项,插入一条记录,更新时间为当前时间、更新频率为默认更新频率,如果Seamless发报航班记录队列为空,跳过本记录,继续轮询;一次处理完成,跳到下一条航线记录;
其中,本发明实施例中配置的所有的航线记录都轮询完成之后,日期加1,转到第一条航线记录,继续轮询;收到结果后,在插入到缓存前,需要比较舱位状态,如果数据相同,认为本次请求浪费,丢弃不更新,同时记录,增加下次轮询的请求时间;如果数据不同,认为本次请求有效,更新数据,同时记录,减少下次轮询的请求时间;同时,更新命中率X:(达标命中率:MIN_RATE;最高命中率:MAX_RATE;MAX_RATE>=MIN_RATE),X<MIN_RATE则将轮询间隔时间减少ITER_TIME;MIN_RATE<=X<=MAX_RATE则轮询间隔时间不变;X>MAX_RATE,则将轮询间隔时间增加ITER_TIME。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种航班数据缓存方法,其特征在于,所述方法包括:
配置系统参数,实现航班数据的多层级缓存;
缓存数据多层级查询;
缓存数据更新;
缓存自检。
2.根据权利要求1所述的方法,其特征在于,所述多层级缓存包括:不同航空公司的航班数据配置不同的缓存区域;以及,针对同一航空公司的航班数据,按用户身份分级进行读写配置;针对同一航空公司的航班数据,配置直飞与联程区分读写。
3.根据权利要求2所述的方法,其特征在于,
所述按用户身份分级进行读写配置,包括:将用户按区域进行分级,在每个层级上配置缓存块,同一层级上不同地域的用户对应不同的缓存块,可以选择性的设置为在任意一个层级上区别读取。
4.根据权利要求1所述的方法,其特征在于,所述缓存数据更新包括:实时发送非托管航空公司直连请求更新缓存数据、和/或主动触发更新缓存数据、和/或智能轮询方式更新缓存数据。
5.根据权利要求4所述的方法,其特征在于,所述主动触发更新缓存数据,包括:对于配置为查询缓存的用户,在其请求非托管航空公司相关数据时,直接从缓存中读取相应数据并返回给用户,同时,在后台触发针对非托管航空公司的直连请求,得到响应后,将响应中的相关数据更新到缓存。
6.根据权利要求4所述的方法,其特征在于,所述智能轮询方式更新缓存数据,包括:根据预先配置的原始轮询策略和自我学习调整后的轮询策略,发出直连请求,在收到正常回报之后,将回报中的航班数据更新到缓存。
7.根据权利要求1所述的方法,其特征在于,所述缓存自检包括:按预先配置的时间间隔,循环检查是否有失效的航班数据,如果有,则删除相应的失效节点。
8.一种缓存系统,其特征在于,所述缓存系统包括:查询模块、更新模块、缓存管理模块、缓存内存和通信模块,其中,
缓存内存,用于实现航班数据的多层级缓存;
查询模块,用于多层级查询缓存数据;
更新模块,用于缓存数据更新;
缓存管理模块,用于缓存自检,以及为所述缓存内存配置系统参数;
通信模块,用于在用户请求航班数据时实时地或被触发地发出直连请求,并将请求来的数据通过所述更新模块更新到所述缓存内存中。
9.根据权利要求8所述的系统,其特征在于,所述缓存内存用于实现航班数据的多层级缓存,包括:不同航空公司的航班数据配置不同的缓存区域;以及,针对同一航空公司的航班数据,按用户身份分级进行读写配置;针对同一航空公司的航班数据,配置直飞与联程区分读写。
10.根据权利要求8所述的系统,其特征在于,所述更新模块用于缓存数据更新,包括:实时发送非托管航空公司直连请求更新缓存数据、和/或主动触发更新缓存数据、和/或智能轮询方式更新缓存数据。
CN201510994414.5A 2015-12-25 2015-12-25 航班数据缓存方法及系统 Pending CN105630982A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510994414.5A CN105630982A (zh) 2015-12-25 2015-12-25 航班数据缓存方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510994414.5A CN105630982A (zh) 2015-12-25 2015-12-25 航班数据缓存方法及系统

Publications (1)

Publication Number Publication Date
CN105630982A true CN105630982A (zh) 2016-06-01

Family

ID=56045915

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510994414.5A Pending CN105630982A (zh) 2015-12-25 2015-12-25 航班数据缓存方法及系统

Country Status (1)

Country Link
CN (1) CN105630982A (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106547828A (zh) * 2016-09-30 2017-03-29 南京途牛科技有限公司 一种基于神经网络的数据库缓存系统及方法
CN106777311A (zh) * 2016-12-30 2017-05-31 中国民航信息网络股份有限公司 航班舱位状态缓存方法和系统
CN106776698A (zh) * 2016-11-14 2017-05-31 北京北纬通信科技股份有限公司 基于优化缓存的票务信息刷新方法及系统
CN106909977A (zh) * 2017-01-18 2017-06-30 四川航空股份有限公司 航空电子票务系统
CN107291901A (zh) * 2017-06-23 2017-10-24 携程旅游网络技术(上海)有限公司 主被动组合获取机票数据的方法、系统、设备及存储介质
CN107291920A (zh) * 2017-06-28 2017-10-24 南京途牛科技有限公司 一种机票查询缓存方法
CN107403270A (zh) * 2017-07-21 2017-11-28 携程旅游网络技术(上海)有限公司 舱位信息自动调度方法、系统、存储介质和电子设备
CN107885743A (zh) * 2016-09-29 2018-04-06 南京途牛科技有限公司 一种基于缓存的航班余位查询方法
CN107944000A (zh) * 2017-12-05 2018-04-20 携程旅游网络技术(上海)有限公司 航班运价更新方法、装置、电子设备、存储介质
CN109582229A (zh) * 2018-11-16 2019-04-05 陕西千山航空电子有限责任公司 一种固态记录设备数据存储和查找方法
CN109597323A (zh) * 2018-11-09 2019-04-09 泰州市柯普尼通讯设备有限公司 船舶航海卫星通讯天线分级式缓存系统及其使用方法
CN109977127A (zh) * 2019-02-28 2019-07-05 北京创鑫旅程网络技术有限公司 数据更新方法及装置
CN110309184A (zh) * 2019-07-10 2019-10-08 中国民航信息网络股份有限公司 一种航空运价数据的缓存方法及系统
CN110442605A (zh) * 2019-07-11 2019-11-12 阿里巴巴集团控股有限公司 服务器的缓存管理方法及装置
CN111949857A (zh) * 2020-08-13 2020-11-17 中国民航信息网络股份有限公司 一种航班查询请求的处理方法、装置及电子设备
CN112115172A (zh) * 2020-09-28 2020-12-22 中国建设银行股份有限公司 航班数据缓存方法及装置
CN113420050A (zh) * 2021-06-28 2021-09-21 平安普惠企业管理有限公司 数据查询管理方法、装置、计算机设备及可读存储介质
CN116166735A (zh) * 2023-04-21 2023-05-26 民航成都信息技术有限公司 航空数据的处理方法、装置、电子设备及存储介质
CN116186059A (zh) * 2023-04-24 2023-05-30 民航成都信息技术有限公司 航班数据的更新方法、系统、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1197876A2 (en) * 2000-10-13 2002-04-17 Miosoft Corporation Persistent data storage techniques
CN101146127A (zh) * 2007-10-30 2008-03-19 金蝶软件(中国)有限公司 一种分布式系统中客户端缓存更新的方法和装置
CN101278540A (zh) * 2005-10-03 2008-10-01 阿玛得斯两合公司 用于保持旨在与大型数据库对接的多层软件系统中的缓存内容的一致性的系统和方法
CN101286981A (zh) * 2008-05-29 2008-10-15 宇龙计算机通信科技(深圳)有限公司 一种数据传输系统、移动终端以及服务器
CN101458706A (zh) * 2008-11-11 2009-06-17 航旅信通(北京)信息技术有限公司 一种准确查询gds航班缓存数据的方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1197876A2 (en) * 2000-10-13 2002-04-17 Miosoft Corporation Persistent data storage techniques
CN101278540A (zh) * 2005-10-03 2008-10-01 阿玛得斯两合公司 用于保持旨在与大型数据库对接的多层软件系统中的缓存内容的一致性的系统和方法
CN101146127A (zh) * 2007-10-30 2008-03-19 金蝶软件(中国)有限公司 一种分布式系统中客户端缓存更新的方法和装置
CN101286981A (zh) * 2008-05-29 2008-10-15 宇龙计算机通信科技(深圳)有限公司 一种数据传输系统、移动终端以及服务器
CN101458706A (zh) * 2008-11-11 2009-06-17 航旅信通(北京)信息技术有限公司 一种准确查询gds航班缓存数据的方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肖挺莉: "基于内存数据库的数据快速处理航显技术", 《中国民航大学学报》 *

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107885743A (zh) * 2016-09-29 2018-04-06 南京途牛科技有限公司 一种基于缓存的航班余位查询方法
CN106547828A (zh) * 2016-09-30 2017-03-29 南京途牛科技有限公司 一种基于神经网络的数据库缓存系统及方法
CN106776698A (zh) * 2016-11-14 2017-05-31 北京北纬通信科技股份有限公司 基于优化缓存的票务信息刷新方法及系统
CN106777311B (zh) * 2016-12-30 2020-05-22 中国民航信息网络股份有限公司 航班舱位状态缓存方法和系统
CN106777311A (zh) * 2016-12-30 2017-05-31 中国民航信息网络股份有限公司 航班舱位状态缓存方法和系统
CN106909977A (zh) * 2017-01-18 2017-06-30 四川航空股份有限公司 航空电子票务系统
CN107291901A (zh) * 2017-06-23 2017-10-24 携程旅游网络技术(上海)有限公司 主被动组合获取机票数据的方法、系统、设备及存储介质
CN107291920A (zh) * 2017-06-28 2017-10-24 南京途牛科技有限公司 一种机票查询缓存方法
CN107291920B (zh) * 2017-06-28 2021-02-02 南京途牛科技有限公司 一种机票查询缓存方法
CN107403270A (zh) * 2017-07-21 2017-11-28 携程旅游网络技术(上海)有限公司 舱位信息自动调度方法、系统、存储介质和电子设备
CN107403270B (zh) * 2017-07-21 2020-10-02 携程旅游网络技术(上海)有限公司 舱位信息自动调度方法、系统、存储介质和电子设备
CN107944000A (zh) * 2017-12-05 2018-04-20 携程旅游网络技术(上海)有限公司 航班运价更新方法、装置、电子设备、存储介质
CN109597323A (zh) * 2018-11-09 2019-04-09 泰州市柯普尼通讯设备有限公司 船舶航海卫星通讯天线分级式缓存系统及其使用方法
CN109582229A (zh) * 2018-11-16 2019-04-05 陕西千山航空电子有限责任公司 一种固态记录设备数据存储和查找方法
CN109977127A (zh) * 2019-02-28 2019-07-05 北京创鑫旅程网络技术有限公司 数据更新方法及装置
CN110309184A (zh) * 2019-07-10 2019-10-08 中国民航信息网络股份有限公司 一种航空运价数据的缓存方法及系统
US11983109B2 (en) 2019-07-10 2024-05-14 Travelsky Technology Limited Air freight rate data caching method and system
CN110309184B (zh) * 2019-07-10 2021-05-25 中国民航信息网络股份有限公司 一种航空运价数据的缓存方法及系统
CN110442605A (zh) * 2019-07-11 2019-11-12 阿里巴巴集团控股有限公司 服务器的缓存管理方法及装置
CN110442605B (zh) * 2019-07-11 2023-08-08 阿里巴巴集团控股有限公司 服务器的缓存管理方法及装置
CN111949857A (zh) * 2020-08-13 2020-11-17 中国民航信息网络股份有限公司 一种航班查询请求的处理方法、装置及电子设备
CN111949857B (zh) * 2020-08-13 2024-06-11 中国民航信息网络股份有限公司 一种航班查询请求的处理方法、装置及电子设备
CN112115172A (zh) * 2020-09-28 2020-12-22 中国建设银行股份有限公司 航班数据缓存方法及装置
CN113420050A (zh) * 2021-06-28 2021-09-21 平安普惠企业管理有限公司 数据查询管理方法、装置、计算机设备及可读存储介质
CN113420050B (zh) * 2021-06-28 2023-08-25 深圳华科讯通科技有限公司 数据查询管理方法、装置、计算机设备及可读存储介质
CN116166735A (zh) * 2023-04-21 2023-05-26 民航成都信息技术有限公司 航空数据的处理方法、装置、电子设备及存储介质
CN116186059A (zh) * 2023-04-24 2023-05-30 民航成都信息技术有限公司 航班数据的更新方法、系统、电子设备及存储介质
CN116186059B (zh) * 2023-04-24 2023-06-30 民航成都信息技术有限公司 航班数据的更新方法、系统、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN105630982A (zh) 航班数据缓存方法及系统
CN101493826B (zh) 基于web应用的数据库系统及其数据管理方法
CN104657483B (zh) 处理事务的方法、处理节点、中心节点和集群
TWI688907B (zh) 基於區塊鏈的房間庫存管理系統
US8661135B2 (en) System and method for providing a platform as a service (PaaS) with a materialized shared space
EP2555129B1 (en) Method and system to maintain strong consistency of distributed replicated contents in a client/server system
CN102638584B (zh) 数据分布缓存方法及系统
CA2827265C (en) Method and system for centralized reservation context management on multi-server reservation system
CN101047512A (zh) 服务注册器以及相关系统和方法
CN105684387A (zh) 用于利用基于通知的无效缓存内容的系统和方法
CN103605698A (zh) 一种用于分布异构数据资源整合的云数据库系统
CN102780603B (zh) 网站流量控制方法及装置
US8768735B2 (en) Automated service fees assessment methods and system
CN106933836A (zh) 一种基于分表的数据存储方法和系统
CN109190070A (zh) 一种数据处理方法、装置、系统及应用服务器
CN103957282B (zh) 一种域内终端用户域名解析加速系统及其方法
CN110474940A (zh) 请求调度方法、装置、电子设备、及介质
CN110191168A (zh) 在线业务数据的处理方法、装置、计算机设备和存储介质
CN103200278A (zh) 源站文件更新发布方法及缓存文件更新方法
CN106777311A (zh) 航班舱位状态缓存方法和系统
CN104850627A (zh) 进行分页展示的方法及装置
US20120233122A1 (en) System and method for session synchronization with independent external systems
CN108647266A (zh) 一种异构数据快速分布存储、交互方法
CN105320676A (zh) 一种客户数据查询服务方法及装置
CN101699436A (zh) 资源管理的方法、装置和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160601