一种批量抽取班次信息的班次查询管控方法与流程

专利2024-08-11  55



1.本发明属于站点班次查询领域,尤其涉及一种批量抽取班次信息的班次查询管控方法。


背景技术:

2.在互联网售票业务中,班次的数据量非常庞大,根据不同的站点、不同的预售期、不用的线路,车站站务系统会生成一系列的班次数据,但是车站的服务器配置以及网络环境有限,高并发的班次数据查询很容易造成车站服务崩溃,影响网络售票与分销商售票时的班次查询效率。


技术实现要素:

3.为了缓解车站数据服务在高峰期班次查询压力,解决高并发的班次数据查询造成车站服务崩溃的问题,本发明提出了一种批量抽取班次信息的班次查询管控方法,包括:s1:确定待抽取班次的始发区域,在预设的低峰期遍历始发区域内的车站形成车站列表;s2:通过对车站列表进行解析,获取始发区域对应的目的站点,结合始发区域的预售期获取始发区域到目的站点的班次信息,将所述班次信息发送并存储到缓存数据库中;s3:基于预设抽取频率执行s1至s2,对缓存数据库中的班次信息进行更新;s4:通过所述缓存数据库为网络售票和分销商售票提供班次查询服务。
4.可选的,所述车站列表为xml文件,所述xml文件中配置的信息包括始发区域内各个车站的站务系统请求地址。
5.可选的,所述s2包括:通过对车站列表进行xml解析,基于http协议访问始发区域内各个车站的站务系统请求地址,得到始发区域对应的目的站点;将车站列表中的车站作为始发站点,获取始发区域为各个始发站点配置的预售期;根据预售期确定抽取班次的时间跨度,基于时间跨度获取始发站点到目的站点的班次信息。
6.可选的,所述s3包括:将所述目的站点的车站编号作为关键词key,基于所述关键词key将班次数据存放到缓存数据库中。
7.所述缓存数据库为redis数据库。
8.可选的,所述基于预设抽取频率执行s1至s2,包括:通过spring集成quartz定时器设置预设抽取频率,基于所述预设抽取频率定时触发s1至s2的执行。
9.可选的,所述s2还包括:在基于http协议访问始发区域内各个车站的站务系统请求地址的同时,定期向站务系统请求地址发送调用信号,若调用失败的次数超过达到预设的重试次数,则生成网络连通异常的告警信息。
10.可选的,在s3之后,所述班次查询管控方法还包括对缓存数据库中的班次信息进行数据完整性监控,所述数据完整性监控验的过程包括:获取始发区域在预设单位时间内班次抽取数量的最小值;确定与始发区域对应的班次参考值,计算所述最小值与所述班次参考值的比值,若所述比值大于预设阈值则判定为正常入库,否则判定为入库失败。
11.可选的,所述数据完整性包括:分别对应不同的始发区域构建可视化页面,当通过数据完整性校验时,在始发区域的对应可视化页面显示绿色,当未通过数据完整性校验时,在始发区域的对应可视化页面显示红色。
12.可选的,所述班次查询管控方法在执行s4时,还包括对所述缓存数据库进行查询限流监控,所述查询限流监控的过程包括:判断缓存数据库接收到的查询请求是否来自分销商接口,若是,则查询始发区域是否开启查询限流监控;若始发区域开启查询限流监控,则确定始发区域的限流模式以及限流次数,并对限流次数变量进行初始化;获取分销商接口发送的查询请求在缓存数据库中的班次查询结果,当班次查询结果为空时,限流次数变量的赋值加1;当限流次数变量的赋值达到所述限流次数时,按照所述限流模式对所述分销商接口的查询请求进行限流。
13.本发明提供的技术方案带来的有益效果是:(1)通过提前获取配置在低峰期进行批量拉取班次,不影响站务系统的流量压力,同时配合缓存库,对班次的缓存操作,可以提高用户对于班次查询的效率;
8.(2)考虑到班次信息在缓存数据库中存储时的数据完整性问题,在站点纬度下通过对于获取到的班次数据进行最小班次和班次参考值计算出的班次完整度进行一个阈值的比较,来标记班次数据是否完整。同时通过定时器进行接口尝试请求,模拟心跳方式对站点网络连通性监控同时可视化展示,运维人员可以直接查看网络情况;
9.(3)对缓存数据库的班次查询限流可以有效的防止分销商使用第三方接口对于无班次的线路的无效查询,减少缓存数据库的服务器查询压力。
附图说明
14.为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
15.图1为本发明实施例提出的一种批量抽取班次信息的班次查询管控方法的流程示意图;图2为本发明实施例中查询限流监控的流程示意图。
具体实施方式
16.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
18.应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
19.应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
20.应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含a、b和c”、“包含a、b、c”是指a、b、c三者都包含,“包含a、b或c”是指包含a、b、c三者之一,“包含a、b和/或c”是指包含a、b、c三者中任1个或任2个或3个。
21.应当理解,在本发明中,“与a对应的b”、“与a相对应的b”、“a与b相对应”或者“b与a相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。a与b的匹配,是a与b的相似度大于或等于预设的阈值。
22.取决于语境,如在此所使用的“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。
23.下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
24.实施例:如图1所示,本实施例提出了一种批量抽取班次信息的班次查询管控方法,包括:s1:确定待抽取班次的始发区域,在预设的低峰期遍历始发区域内的车站形成车站列表;s2:通过对车站列表进行解析,获取始发区域对应的目的站点,结合始发区域的预售期获取始发区域到目的站点的班次信息,将所述班次信息发送并存储到缓存数据库中;s3:基于预设抽取频率执行s1至s2,对缓存数据库中的班次信息进行更新;s4:通过所述缓存数据库为网络售票和分销商售票提供班次查询服务。
25.本实施例通过在低峰期按计划对车站的班次数据进行抽取,并缓存到高可用的线上数据库中提供给网络售票及分销商使用,实现以各个区域为单位的最新班次的同步,进而减少车站数据服务在高峰期班次查询压力,把查询服务的压力转移到高可用的数据服务器中,优化用户体验。
26.本实施例基于spring和mybatis技术框架构建上述s1-s4的算法实现,进一步的,
通过spring集成quartz定时器设置预设抽取频率,基于所述预设抽取频率定时触发s1至s2的执行。具体的,可在本实施例中设置低峰期为每天凌晨0:00到4:30,使用cron表达式每天23点55分触发拉取配置抽取班次的区域作为始发区域,通过redis推送到队列。同时抽取班次的cron表达式从0点开始每隔半个小时从redis队列开始对始发区域进行顺次抽取。
27.在进行抽取时,首先获取每个始发区域下配置的车站列表,具体通过遍历始发区域中各个车站形成车站列表。在本实施例中,所述车站列表为xml文件,所述xml文件中配置的信息包括始发区域内各个车站的站务系统请求地址,还包括站务系统的工号、车站编号、车站预售期等相关配置参数。
28.在本实施例中,为获取始发区域中各个车站对应的目的站点,进而实现按计划批量抽取班次,可以通过对车站列表进行xml解析,基于http协议访问始发区域内各个车站的站务系统请求地址,得到始发区域对应的目的站点;将车站列表中的车站作为始发站点,获取始发区域为各个始发站点配置的预售期;根据预售期确定抽取班次的时间跨度,基于时间跨度获取始发站点到目的站点的班次信息。
29.所述预售期即始发区域规定的提前售票时间,不同始发区域规定的预售期可能不同,例如当预售期为15天时,对应的抽取班次的时间跨度为1小时,即抽取发车时间间隔为1小时的一系列班次信息,同理当预售期为30天时,对应的抽取班次的时间跨度为2小时,即不同预售期对应的抽取班次的时间跨度不同。本实施例中预售期和时间跨度的对应关系是根据人工经验确定的,根据预售期来控制抽取班次的时间跨度,使班次信息的抽取频率能够根据实际售票情况进行灵活调整。
30.随后,将所述目的站点的车站编号作为关键词key,基于所述关键词key将班次数据存放到缓存数据库中。本实施例中,所述缓存数据库为redis数据库,redis是完全开源的高性能非关系型数据库,具有极高的读写速度,其作为缓存数据库,能够提高缓存数据的读取速度,从而减少访问mysql数据库的次数,提高班次查询效率。
31.本实施例在车站列表的解析基础上,通过http协议远程调用相应的站务系统以获取目的站点,再通过远程调用站务系统获取始发站点到目的站点的相应班次列表,同时对站务系统的mysql数据库和redis缓存数据库中的班次列表进行更新。如果始发站点到目的站点有班次,则将班次存入mysql数据库和redis缓存数据库;若没有,则删除mysql数据库中的班次数据和redis数据库中的缓存数据,同时发送一个新的在早上5点到7点每隔半个小时消费的redis消息队列来重新抽取班次,重复上面操作防止遗漏。除此之外,在本实施例中车站列表还用于在可视化界面展示车站名称,便于运维人员直观获取始发区域内的车站情况。
32.本实施例为了解决班次信息传输到线上的缓存数据库时随之而来的数据是否完整的问题,提出了通过逻辑判断对网络连通性以及班次抽取结果进行监控,并使用可视化界面对结果进行展示的方案,其中:从网络连通性的角度进行数据完整性监控包括:在基于http协议访问始发区域内各个车站的站务系统请求地址的同时,定期向站务系统请求地址发送调用信号,若调用失败的次数超过达到预设的重试次数,则生成网络连通异常的告警信息。
33.在本实施例中,网络连通性是指监控各个始发区域的站务系统网络是否畅通的服务,通过spring集成quartz定时每5分钟触发,从mysql数据库查询出车站配置,然后实时通
过http协议调用车站配置好的站务地址接口,并且重试次数为3次,重试次数的超时时间为40s,用于避免因为网络波动干扰结果,调用成功返回true,失败返回false,同时发送短信redis消息,通过短信平台向运维人员通知告警。
34.从班次结果抽取的角度进行数据完整性监控包括:在s3之后,获取始发区域在预设单位时间内班次抽取数量的最小值;确定与始发区域对应的班次参考值,计算所述最小值与所述班次参考值的比值,若所述比值大于预设阈值则判定为正常入库,否则判定为入库失败。本实施例中,所述预设阈值为0.8,即当【单位时间内班次抽取数量的最小值/班次参考值】大于0.8时,视为班次已正常缓存入库,否则视为班次异常缓存。
35.同时,本实施例分别对应不同的始发区域构建可视化页面,当通过数据完整性校验时,在始发区域的对应可视化页面显示绿色,当未通过数据完整性校验时,在始发区域的对应可视化页面显示红色,以便于运维人员及时查看。
36.本实施例通过上述过程,实现了在低峰期为了解决有计划的接口调用来抽取班次数据,同时对班次数据进行缓存以提高网络售票和第三方经销商的查询效率。由于有第三方使用接口获取班次数据,部分线路是不存在班次,导致第三方会高并发重复补偿请求接口,导致服务器压力剧增,所以需要一种对于第三方来进行班次查询请求的流量动态限制的功能。因此,为了解决因第三方查询不到班次而无线循环查询空班次的补偿机制,使得站务系统接口和缓存数据库查询接口的请求压力变大的问题,本实施例在执行s4时,还包括对所述缓存数据库进行查询限流监控,所述查询限流监控的过程包括:判断缓存数据库接收到的查询请求是否来自分销商接口,若是,则查询始发区域是否开启查询限流监控;若始发区域开启查询限流监控,则确定始发区域的限流模式以及限流次数,并对限流次数变量进行初始化;获取分销商接口发送的查询请求在缓存数据库中的班次查询结果,当班次查询结果为空时,限流次数变量的赋值加1;当限流次数变量的赋值达到所述限流次数时,按照所述限流模式对所述分销商接口的查询请求进行限流。
37.在本实施例中,缓存数据库会根据分销商接口连续轮空的查询请求,定义限流开关【限流标识+始发地名称+目的地名称+发车日期】来查询redis限流命中数据。所述限流标识用来标记使用那种限流模式,所述限流模式包括固定时间模式和时间递增模式,所述固定时间模式指redis设置限流开关redis key【限流标识+始发地名称+目的地名称+发车日期】会在某设定时间后过期,所述时间递增模式指redis设置限流开关redis key【限流标识+始发地名称+目的地名称+发车日期】按照配置好的固定时间数组递增控制。
38.所述查询限流监控的流程如图2所示,包括:当开始触发查询限流监控时,判断查询请求是否来自分销商,若不是则不限制分销商的查询请求流程。若是,则判断始发区域是否配置限流次数,具体为判断始发区域的配置文件中是否包含以下关键词:【是否开启限流】、【限流模式】以及【限流次数】,若不是则不限制分销商的查询请求流程。若是,则判断分销商的查询请求是否命中限流开关,若命中则直接返回分销商的查询请求,向分销商提示其查询已被限流。若未命中,则获取始发区域配置的【限流次数】,并记录查询请求结果为空的次数,若查询请求结果为空的次数尚未达到【限流次数】,则继续查询班次,并将限流次数
变量的value+1,再重复上述过程。若查询请求结果为空的次数达到【限流次数】,则进入判断限流模式流程,根据限流模式对此第三方分销商来源对应始发地的查询进行限流。若限流模式为固定时间模式,则redis设置限流开关redis key在一小时后过期,若限流模式为时间递增模式,则redis设置限流开关redis key在获取时间按照配置好的固定时间数组下标滑动。
39.通过上述查询限流监控的过程,解决了第三方分销商循环查询空班次而使缓存数据库接口请求压力过大的问题,避免了这类无效查询请求。
40.上述实施例中的各个序号仅仅为了描述,不代表各部件的组装或使用过程中的先后顺序。
41.以上所述仅为本发明的实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种批量抽取班次信息的班次查询管控方法,其特征在于,所述班次查询管控方法包括:s1:确定待抽取班次的始发区域,在预设的低峰期遍历始发区域内的车站形成车站列表;s2:通过对车站列表进行解析,获取始发区域对应的目的站点,结合始发区域的预售期获取始发区域到目的站点的班次信息,将所述班次信息发送并存储到缓存数据库中;s3:基于预设抽取频率执行s1至s2,对缓存数据库中的班次信息进行更新;s4:通过所述缓存数据库为网络售票和分销商售票提供班次查询服务。2.根据权利要求1所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述车站列表为xml文件,所述xml文件中配置的信息包括始发区域内各个车站的站务系统请求地址。3.根据权利要求2所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述s2包括:通过对车站列表进行xml解析,基于http协议访问始发区域内各个车站的站务系统请求地址,得到始发区域对应的目的站点;将车站列表中的车站作为始发站点,获取始发区域为各个始发站点配置的预售期;根据预售期确定抽取班次的时间跨度,基于时间跨度获取始发站点到目的站点的班次信息。4.根据权利要求1所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述s3包括:将所述目的站点的车站编号作为关键词key,基于所述关键词key将班次数据存放到缓存数据库中。5.根据权利要求1所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述缓存数据库为redis数据库。6.根据权利要求1所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述基于预设抽取频率执行s1至s2,包括:通过spring集成quartz定时器设置预设抽取频率,基于所述预设抽取频率定时触发s1至s2的执行。7.根据权利要求3所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述s2还包括:在基于http协议访问始发区域内各个车站的站务系统请求地址的同时,定期向站务系统请求地址发送调用信号,若调用失败的次数超过达到预设的重试次数,则生成网络连通异常的告警信息。8.根据权利要求1所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,在s3之后,所述班次查询管控方法还包括对缓存数据库中的班次信息进行数据完整性监控,所述数据完整性监控验的过程包括:获取始发区域在预设单位时间内班次抽取数量的最小值;确定与始发区域对应的班次参考值,计算所述最小值与所述班次参考值的比值,若所述比值大于预设阈值则判定为正常入库,否则判定为入库失败。9.根据权利要求8所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述数据完整性包括:分别对应不同的始发区域构建可视化页面,当通过数据完整性校验时,在始发区域的
对应可视化页面显示绿色,当未通过数据完整性校验时,在始发区域的对应可视化页面显示红色。10.根据权利要求1所述的一种批量抽取班次信息的班次查询管控方法,其特征在于,所述班次查询管控方法在执行s4时,还包括对所述缓存数据库进行查询限流监控,所述查询限流监控的过程包括:判断缓存数据库接收到的查询请求是否来自分销商接口,若是,则查询始发区域是否开启查询限流监控;若始发区域开启查询限流监控,则确定始发区域的限流模式以及限流次数,并对限流次数变量进行初始化;获取分销商接口发送的查询请求在缓存数据库中的班次查询结果,当班次查询结果为空时,限流次数变量的赋值加1;当限流次数变量的赋值达到所述限流次数时,按照所述限流模式对所述分销商接口的查询请求进行限流。

技术总结
本发明提出了一种批量抽取班次信息的班次查询管控方法,包括:S1:确定待抽取班次的始发区域,在预设的低峰期遍历始发区域内的车站形成车站列表;S2:通过对车站列表进行解析,获取始发区域对应的目的站点,结合始发区域的预售期获取始发区域到目的站点的班次信息,将所述班次信息发送并存储到缓存数据库中;S3:基于预设抽取频率执行S1至S2,对缓存数据库中的班次信息进行更新;S4:通过所述缓存数据库为网络售票和分销商售票提供班次查询服务。通过提前获取配置在低峰期进行批量拉取班次,不影响站务系统的流量压力,同时配合缓存库,对班次的缓存操作,可以提高用户对于班次查询的效率。率。率。


技术研发人员:郑理 陈建敏 周哲毅 林周颖
受保护的技术使用者:浙江恒生长运网络科技有限公司
技术研发日:2022.07.07
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-9320.html

最新回复(0)