股票行情数据的过滤方法、过滤装置和推送系统与流程

文档序号:11520591阅读:489来源:国知局
股票行情数据的过滤方法、过滤装置和推送系统与流程

本发明涉及股票数据技术领域,具体而言,涉及一种股票行情数据的过滤方法、过滤装置和推送系统。



背景技术:

随着智能操作系统广泛应用到智能手机、平板电脑以及智能电视中,现有的股票行情数据获取方式更多仍停留在pc时代,即主要靠手动刷新页面的方式进行拉取。也有少数软件采用推送的方式更新股票行情数据,但是对于高并发、海量终端的场景下,普遍存在着延时高及数据丢失的问题。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明的目的在于提供一种股票行情数据的过滤方法、过滤装置和推送系统,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。

本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。

根据本发明的第一方面,提供了一种股票行情数据的过滤方法,所述过滤方法应用于股票行情数据的推送系统,所述推送系统至少包括提供股票行情数据的第一模块和分发股票行情数据的第二模块,所述过滤方法包括:获取来自所述第一模块的实时股票行情数据;获取所述第二模块发送的所有订阅终端订阅的所有股票信息;根据获取到的所述实时股票行情数据和所述所有股票信息,对所述实时股票行情数据进行过滤处理,得到过滤后的股票行情数据;将所述过滤后的股票行情数据发送至所述第二模块,以使所述第二模块将所述过滤后的股票行情数据分发至相应的订阅终端。

在本发明的一些实施例中,基于前述方案,对所述实时股票行情数据进行过滤处理的步骤,包括:检测所述实时股票行情数据的产生时间是否在预定时长内;过滤掉所述实时股票行情数据中产生时间超过所述预定时长的股票行情数据。

在本发明的一些实施例中,基于前述方案,对所述实时股票行情数据进行过滤处理的步骤,还包括:根据所述所有股票信息,判断所述实时股票行情数据中是否存在与未被订阅的股票信息相关的股票行情数据;过滤掉所述实时股票行情数据中与未被订阅的股票信息相关的股票行情数据。

在本发明的一些实施例中,基于前述方案,对所述实时股票行情数据进行过滤处理的步骤,还包括:检测所述实时股票行情数据的各项指标相较于前一次的股票行情数据的各项指标是否发生变化;过滤掉所述实时股票行情数据中相较于前一次的股票行情数据的各项指标没有发生变化的股票行情数据。

在本发明的一些实施例中,基于前述方案,还包括:在获取到来自所述第一模块的实时股票行情数据之后,将所述实时股票行情数据存储至内存队列中。

在本发明的一些实施例中,基于前述方案,不间断地从所述第一模块中获取所述实时股票行情数据。

在本发明的一些实施例中,基于前述方案,周期性轮询所述第二模块,以获取到所述第二模块发送的所述所有股票信息。

根据本发明的第二方面,提供了一种股票行情数据的过滤装置,所述过滤装置应用于股票行情数据的推送系统,所述推送系统至少包括提供股票行情数据的第一模块和分发股票行情数据的第二模块,所述过滤装置包括:第一获取单元,用于获取来自所述第一模块的实时股票行情数据;第二获取单元,用于获取所述第二模块发送的所有订阅终端订阅的所有股票信息;处理单元,用于根据获取到的所述实时股票行情数据和所述所有股票信息,对所述实时股票行情数据进行过滤处理,得到过滤后的股票行情数据;发送单元,用于将所述过滤后的股票行情数据发送至所述第二模块,以使所述第二模块将所述过滤后的股票行情数据分发至相应的订阅终端。

根据本发明的第三方面,提供了一种股票行情数据的推送系统,包括:第一模块、第二模块和第三模块,所述第三模块包括如上述第二方面中所述的股票行情数据的过滤装置;其中,所述第一模块用于提供实时股票行情数据;所述第二模块用于获取所有订阅终端订阅的所有股票信息,并用于接收所述第三模块发送的过滤后的股票行情数据,将所述过滤后的股票行情数据分发至相应的订阅终端。

在本发明的一些实施例中,基于前述方案,所述第三模块的个数与所述第一模块中的实时股票行情数据的数据量成正相关关系;所述第二模块的个数与所述第三模块过滤后的股票行情数据的数据量成正相关关系,在所述第二模块的个数为多个时,多个所述第二模块相互连接构成集群系统。

在本发明的一些实施例所提供的技术方案中,通过获取来自第一模块的实时股票行情数据,并获取第二模块发送的所有订阅终端订阅的所有股票信息,进而基于上述实时股票行情数据和上述所有股票信息对实时股票行情数据进行过滤处理,使得(上述第三模块)无需关注哪个终端订阅了哪只股票信息,只需根据获取到的实时股票行情数据和所有订阅终端订阅的所有股票信息来对实时股票行情数据进行过滤处理,进而能够有效提高对实时股票行情数据的过滤效率,避免将无用数据推送至第二模块而导致传输延迟及丢失有用数据的问题。

此外,通过对实时股票行情数据的产生时间、是否有终端订阅、是否是重复数据进行判断,可以有效滤除过期数据、无效数据和重复数据,进而能够减少推送至第二模块乃至订阅终端的数据量,从而有利于提高数据传输效率,降低数据传输延迟,并且也能够避免有用数据丢失的问题。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1示意性示出了根据本发明的实施例的股票行情数据的过滤方法的流程图;

图2示意性示出了根据本发明的实施例的股票行情数据的过滤装置的框图;

图3示意性示出了根据本发明的实施例的股票行情数据的推送系统的结构示意图;

图4示意性示出了根据本发明的实施例的股票行情数据的推送系统的一种通信架构示意图;

图5示意性示出了根据本发明的实施例的股票行情数据的推送系统的分布式扩展示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

图1示意性示出了根据本发明的实施例的股票行情数据的过滤方法的流程图,其中,该过滤方法应用于股票行情数据的推送系统,所述推送系统至少包括提供股票行情数据的第一模块和分发股票行情数据的第二模块。

参照图1,根据本发明的实施例的股票行情数据的过滤方法,包括:

步骤s102,获取来自所述第一模块的实时股票行情数据。

根据本发明的示例性实施例,可以不间断地从第一模块中获取所述实时股票行情数据,这样能够保证向第二模块乃至订阅终端推送最新的股票行情数据。

在本发明的实施例中,在获取到来自所述第一模块的实时股票行情数据之后,可以将所述实时股票行情数据存储至内存队列中。

通过将获取到的实时股票行情数据存储至内存队列中,可以保证数据存储速度,进而可以避免第一模块中的数据由于无法及时传送出去而积压过多影响第一模块的性能。

步骤s104,获取所述第二模块发送的所有订阅终端订阅的所有股票信息。

根据本发明的示例性实施例,可以周期性轮询所述第二模块,以获取到所述第二模块发送的所述所有股票信息。当然,也可以实时获取来自第二模块的所有订阅终端订阅的所有股票信息。本发明的实施方式并不限于此。

步骤s106,根据获取到的所述实时股票行情数据和所述所有股票信息,对所述实时股票行情数据进行过滤处理,得到过滤后的股票行情数据。

针对步骤s106,本发明提出了的过滤方案主要是用于过滤过期数据、无效数据和重复数据。具体如下:

过滤过期数据

根据本发明的示例性实施例,步骤s106包括:检测所述实时股票行情数据的产生时间是否在预定时长内;过滤掉所述实时股票行情数据中产生时间超过所述预定时长的股票行情数据。

过滤无效数据

根据本发明的示例性实施例,步骤s106包括:根据所述所有股票信息,判断所述实时股票行情数据中是否存在与未被订阅的股票信息相关的股票行情数据;过滤掉所述实时股票行情数据中与未被订阅的股票信息相关的股票行情数据。

过滤重复数据

根据本发明的示例性实施例,步骤s106包括:检测所述实时股票行情数据的各项指标相较于前一次的股票行情数据的各项指标是否发生变化;过滤掉所述实时股票行情数据中相较于前一次的股票行情数据的各项指标没有发生变化的股票行情数据。

步骤s108,将所述过滤后的股票行情数据发送至所述第二模块,以使所述第二模块将所述过滤后的股票行情数据分发至相应的订阅终端。

相应地,本发明的实施例还提出了一种股票行情数据的过滤装置,同样地,该过滤装置应用于股票行情数据的推送系统,所述推送系统至少包括提供股票行情数据的第一模块和分发股票行情数据的第二模块,具体如图2所示。

参照图2,根据本发明的实施例的股票行情数据的过滤装置200,包括:第一获取单元202、第二获取单元204、处理单元206和发送单元208。

具体地,第一获取单元202用于获取来自所述第一模块的实时股票行情数据;第二获取单元204用于获取所述第二模块发送的所有订阅终端订阅的所有股票信息;处理单元206用于根据获取到的所述实时股票行情数据和所述所有股票信息,对所述实时股票行情数据进行过滤处理,得到过滤后的股票行情数据;发送单元208用于将所述过滤后的股票行情数据发送至所述第二模块,以使所述第二模块将所述过滤后的股票行情数据分发至相应的订阅终端。

需要说明的是,上述股票行情数据的过滤装置200中各模块/单元的具体细节已经在对应的股票行情数据的过滤方法中进行了详细的描述,因此此处不再赘述。

进一步地,本发明的实施例还提出了一种股票行情数据的推送系统,包括:第一模块、第二模块和第三模块,所述第三模块包括如图2中所示的股票行情数据的过滤装置200;其中,所述第一模块用于提供实时股票行情数据;所述第二模块用于获取所有订阅终端订阅的所有股票信息,并用于接收所述第三模块发送的过滤后的股票行情数据,将所述过滤后的股票行情数据分发至相应的订阅终端。

在本发明的一些实施例中,基于前述方案,所述第三模块的个数与所述第一模块中的实时股票行情数据的数据量成正相关关系;所述第二模块的个数与所述第三模块过滤后的股票行情数据的数据量成正相关关系,在所述第二模块的个数为多个时,多个所述第二模块相互连接构成集群系统。

需要说明的是:本发明上述实施例中的第一模块和第二模块中的每个模块可以仅由单个模块单元构成,也可以由多个模块单元构成。

作为本发明的示例性实施例,以下以上述第一模块为队列模块、上述第二模块为分发模块和接入模块、上述第三模块为推送模块为例,结合图3至图5对本发明的技术方案进行详细说明:

如图3所示,根据本发明的实施例的股票行情数据的推送系统,包括:队列模块m100、推送模块m200、分发模块m300和接入模块m400。各个模块之间采用层级结构,推送模块m200、分发模块m300和接入模块m400可根据接入的终端m500数量和股票交易频度进行不停机横向扩展。其中终端m500可为智能手机、平板电脑、智能电视中以及pc等,但不限于此,可以为任何具有股票交易功能的终端设备。

具体来说,该股票行情数据的推送系统包括至少一个用于接收和存储股票实时行情数据的队列模块m100、至少一个用于从所述队列模块中分拣出与终端m500订阅的股票信息匹配的实时行情数据的推送模块m200、至少一个用于与终端建立连接并存储终端订阅的股票信息的接入模块m400;以及至少一个用于控制推送模块m200与接入模块m400数据流转的分发模块m300。

在本发明的示例性实施例中,终端m500与接入模块m400可以建立tcp(transmissioncontrolprotocol,传输控制协议)长连接,并向该接入模块m400注册订阅股票信息;分发模块m300通过轮询的方式收集所有终端m500订阅的股票,并缓存在该模块内;推送模块m200同样定时的从分发模块m300获取所有的订阅股票集合;同时推送模块m200不间断从队列模块m100中获取股票实时行情;推送模块m200根据获取的实时行情数据与股票订阅集合进行匹配,将与终端订阅的股票信息匹配的实时行情数据推送到分发模块m300;分发模块m300将接收到行情数据推送给其它分发模块m300和接入模块m400;行情数据最终由接入模块m400直接推送终端m500。

在本发明的实施例中,接入模块m400只负责存储连接到该模块的终端的股票订阅信息,并将相应的股票行情数据推送给终端m500。其中,接入模块m400的数量可以根据终端m500的数量来进行扩展。

分发模块m300通过配置,划分所管辖的接入模块m400。实际使用中,可根据用户所在区域,跨机房的部署多个分发模块m300。分发模块m300之间通过互相配置构成集群,进行数据转发,实现无限横向扩展。

同时,分发模块m300收集所管辖内的接入模块m400汇聚的所有股票订阅信息,并通过互相转发,最终所有分发模块m300都持有全部终端m500的股票订阅信息。

推送模块m200定时轮询分发模块m300收集到所有股票订阅信息,同时不间断的从队列模块m100的高速队列中获取实时行情数据,并对股票行情数据进行过滤,然后推送到分发模块300。其中,如图3中的交叉箭头所示,在必要的时候,可以由多个推送模块m200同时向同一个分发模块300推送行情数据(的不同部分)以提高推送效率,反之也可以由同一个推送模块m200同时向多个分发模块300推送(相同或不同的)行情数据,具体可以根据需要和效率而定,并无特别限制。

推送模块m200只将终端订阅的股票行情数据进行推送,最大利用推送资源,没有多余数据的传输,也大大节省了流量带宽。

在本发明的示例性实施例中,推送模块m200与队列模块m100的数量比为n:1,其中n为大于或等于1的整数,通常来说n大于2。

以下对海量终端连接下的分布式扩展,以及高频度股票交易下拥塞控制进行详细说明:

股票行情推送具有两大特点:1、可订阅关注的股票总数是限定的,由现实世界交易所存在的股票总数决定;2、海量终端用户同一时刻订阅的股票会集中在一些热门股票。

基于上述特点,本发明的实施例采用分层架构的推送系统。具体地,海量终端m500只与无配置、高性能的接入模块m400进行通信,终端m500将关注的股票订阅在与之相连的接入模块m400中。其特色在于,接入模块m400会实时根据终端m500的订阅信息,建立股票的订阅终端m500集合,将关注相同股票的终端m500进行聚合,以这样的终端m500集合作为一个推送单元进行行情分发。每个接入模块m400都会为其接入终端m500正在关注的每一只股票都维护一个这样的终端m500集合,终端m500离线、发送指定通信协议将从集合中移除。现实世界股票总数数量级恒定,该集合可以完全存储在接入模块m400的内存当中,使用linkedhashmap数据结构进行存储,在能够快速响应海量终端m500频繁的接入、离线的同时,又能在分发时提供快速的集合遍历效率。分发模块m300隔离了终端m500,推送模块m200只需与分发模块m300通信即可获取终端m500订阅股票的数量,且推送模块m200并不需要关心股票内的订阅终端m500集合。

分发模块m300与接入模块m400采用如图4所示的通信架构,分发模块m300与接入模块m400都会在启动时同时建立两个端口。通过采用分开的端口,可以提高安全性,同时可以带来更高的灵活性,实际部署中还可以将两个端口监听到不同的网卡,实现内外流量隔离。分发模块m300对外端口m301可采用http(hypertexttransferprotocol超文本传输协议)协议便于对接,接入模块m400对外端口m401可采用mqtt(messagequeuingtelemetrytransport,消息队列遥测传输)协议,节省带宽同时提高效率。分发模块m300对内端口m302和接入模块m400对内端口m402采用相同的通信协议,如可采用二进制序列化协议,调用使用tcp长连接池方式,高效节流。

模块的扩展类似于积木搭建的方式,当终端m500较少时只需部署一个分发模块m300和一个接入模块m400针对全球的终端m500,当用户增多时可以适当增加接入模块m400,当向其它区域、海外扩充业务时,可以在全球各热门区域都分别部署,通过分发模块m300的内部通信端口扩展构成如图5所示的分布式架构。

需要说明的是,分发模块m300之间的连接关系不限于图5中所示的环形连接,也可以是链形连接、交叉连接等,本发明的实施方式不限于此。

推送模块m200从队列模块m100取得数据后立即放入到推送模块m200内的队列中,推送模块m200内的队列是一个内存队列,保证队列模块m100不会由于数据传输较慢导致数据积压而影响性能。

推送模块m200在启动时会开启三个循环,第一个用于循环的从分发模块m300中获取当前时刻接入终端m500关注的股票集合并缓存在内存中,第二个用于循环的从队列模块m100获取实时数据存入内部队列,第三个用于循环从内部队列中过滤实时行情数据进行推送。

推送模块m200第一个启动循环从分发模块m300获取终端m500所有关注的股票集合,其特色在于无需获取到每只股票具体的订阅终端m500,只需获取全部连接终端m500关注了哪些股票。

推送模块m200第三个启动循环从内部队列获取行情数据,首先检测行情数据产生时间是否在t1秒(如3秒)之内,超过t1秒视为过期放弃此次行情数据推送。行情数据如果没有过期进一步检测该只股票是否有终端m500关注,获取第一个循环建立的股票集合,如果不在该集合内,视为该只股票没有终端m500关注,放弃此次行情数据推送。行情数据如果有终端m500关注,还需判断此次的行情数据相较于上一次的行情数据的各指标是否变化,如果没有变化,视为重复数据放弃此次推送。经过上述层层过滤,过期数据、无效数据、重复数据都被滤除,流入到分发模块m300的实时行情数据将大大减少,减轻下流压力。

分发模块m300在启动时会开启两个循环,第一个用于循环的从其它分发模块m300以及管辖内的接入模块m400获取当前时刻接入终端m500关注的股票集合并缓存在内存中,同推送模块m200一样,无需获取到每只股票具体的订阅终端m500,只需获取全部连接终端m500关注了哪些股票,此外分发模块m300还会统计每只股票当前的关注终端m500总数,用于数据分析和统计。

分发模块m300会根据当前的模块总数在启动时预设每秒分发行情数据的个数上限,在收到推送模块m200的推送数据时,先判断收到的数据是否达到单位时间(如每秒)内能够发送的数据上限,达到上限自动放弃此次行情数据分发,并在日志中记录该错误提示。如果没有达到处理上限,则存入分发模块m300的内存队列。

分发模块m300启动时的第二个循环会从m300的内存队列中获取并再次过滤数据,首先检测行情数据取出的时间与存入队列的时间差值,大于t2秒(如1秒)则认为系统产生拥塞放弃此次行情数据分发,在日志中记录该错误提示。运维人员可监控上述日志判断是否要进行模块扩展。最后分发模块m300启动多个线程将此行情数据同时推送到管辖内的接入模块m400和相互扩展的分发模块m300。

接入模块m400在收到分发模块m300的分发数据时,首先存入内部队列。接入模块m400在启动时会开启循环,获取队列中的行情数据。取出行情数据时,先查找该只股票在当前接入模块m400是否有关注终端m500集合,不存在终端m500集合,不进行任何操作,否则开启线程遍历终端m500集合,将行情数据依次推送给终端m500。

在本发明上述实施例的技术方案中,股票行情数据在各个环节的流转都使用了内部队列进行解耦,快速响应上游请求;同时,可以在上游环节过滤过期、重复、无效的数据,减少无用数据的流转;此外,各层模块都可以设置自身的处理能力,超出能力上限时可以提示运维人员进行扩展。

通过以上的详细描述,本领域的技术人员易于理解,本发明实施例的技术方案具有以下优点中的一个或多个:

首先,根据本发明的一些实施方式,支持千万级终端接入,能够极大地降低终端接入成本,在海量终端接入和高频繁股票交易的情况下,也能够及时推送股票行情;同时将关注相同股票的终端进行聚合,以此集合作为推送单元,大大提升股票行情的推送效率。

其次,分发模块之间通过互相配置构成集群,进行数据转发,实现无限横向扩展,满足了高并发场景的需求。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1