一种股票行情数据处理方法、系统、装置及存储介质与流程

    专利2022-07-08  73


    本申请涉及数据处理技术领域,尤其是一种股票行情数据处理方法、系统、装置及存储介质。



    背景技术:

    随着经济的发展和信息技术的进步,越来越多的行业正大步迈向现代化。在这其中,股票行业由于其直接与人们利益相关,因此,对于获取相关信息的及时程度要求很高。

    当下,直接去股票券商的营业部看盘的方式已经不符合人们的看盘习惯,越来越多的人选择通过终端随时随地地盯盘。对于提供股票行情数据的服务业来说,显然吸引用户的重中之重是保证信息的优质而高速。但是在提升信息传输速度的同时,相关系统的搭建成本也会极速升高。相关技术中,考虑将行情数据尽可能地加载到内存,通过设置锁的配置来实现数据的可用。但是这样大量的行情数据带来的内存需求会急剧攀升,使得系统成本直接指数级别的增长;而且大量锁的引用会导致系统的性能下降,引发一些管理问题,甚至出现死锁的问题。,综合上述,相关技术中存在的技术问题亟需得到解决。



    技术实现要素:

    本申请的目的在于至少一定程度上解决相关技术中存在的技术问题之一。

    为此,本申请实施例的一个目的在于提供一种股票行情数据处理方法,该方法可以有效提高行情数据的处理性能,在成本较低的条件下实现有关信息的快速分发。

    本申请实施例的另一个目的在于提供股票行情数据处理系统。

    为了达到上述技术目的,本申请实施例所采取的技术方案包括:

    第一方面,本申请实施例提供了一种股票行情数据处理方法,包括:

    接收用户发起的数据获取请求;

    根据所述数据获取请求在工作线程中进行服务注册;

    根据所述服务注册的结果,判断目标数据是否为内存变量;

    当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;

    当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。

    另外,根据本申请上述实施例的股票行情数据处理方法,还可以具有以下附加的技术特征:

    进一步地,在本申请的一个实施例中,所述工作线程通过以下步骤设定:

    获取系统的cpu核心数量;

    根据所述cpu核心数量,设定所述工作线程的数量。

    进一步地,在本申请的一个实施例中,所述根据所述数据获取请求在工作线程中进行服务注册,包括:

    获取所述数据获取请求的优先级信息;

    根据所述优先级信息,通过对应优先级的路由对所述数据获取请求进行服务注册。

    进一步地,在本申请的一个实施例中,所述根据所述数据获取请求在工作线程中进行服务注册,还包括以下步骤:

    当确定所述对应优先级的路由被占用,通过下一级优先级的路由对所述数据获取请求进行服务注册。

    进一步地,在本申请的一个实施例中,所述当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户,包括:

    当所述目标数据不为内存变量,判断所述目标数据是否为lru缓存变量;

    当所述目标数据为lru缓存变量,从所述lru缓存中读取所述目标数据并发送给用户;

    当所述目标数据不为lru缓存变量,从硬盘中读取所述目标数据并发送给用户。

    进一步地,在本申请的一个实施例中,所述从硬盘中读取所述目标数据并发送给用户,包括:

    启动协程从硬盘中读取所述目标数据并发送给用户。

    第二方面,本申请实施例提供了一种股票行情数据处理系统,包括:

    接收单元,用于接收用户发起的数据获取请求;

    注册单元,用于根据所述数据获取请求在工作线程中进行服务注册;

    判断单元,用于根据所述服务注册的结果,判断目标数据是否为内存变量;

    第一处理单元,用于当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;

    第二处理单元,用于当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。

    第三方面,本申请实施例提供了一种股票行情数据处理装置,包括:

    至少一个处理器;

    至少一个存储器,用于存储至少一个程序;

    当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现第一方面所述的股票行情数据处理方法。

    第四方面,本申请实施例还提供了一种计算机可读存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于实现第二方面所述的股票行情数据处理方法。

    本申请的优点和有益效果将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到:

    本申请实施例中的股票行情数据处理方法,通过接收用户发起的数据获取请求;根据所述数据获取请求在工作线程中进行服务注册;根据所述服务注册的结果,判断目标数据是否为内存变量;当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。该方法可以有效提高行情数据的处理性能,在成本较低的条件下实现有关信息的快速分发,对于股票行情这类高i/o类型的服务有很大的效率提升。

    附图说明

    为了更清楚地说明本申请实施例或者现有技术中的技术方案,下面对本申请实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本申请的技术方案中的部分实施例,对于本领域的技术人员来说,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。

    图1为本申请一种股票行情数据处理系统具体实施例的流程示意图;

    图2为本申请一种股票行情数据处理系统具体实施例的布局示意图;

    图3为本申请一种股票行情数据处理系统具体实施例的结构示意图;

    图4为本申请一种股票行情数据处理装置具体实施例的结构示意图。

    具体实施方式

    下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。

    本申请实施例,为了解决相关技术中的技术问题,对于处理股票行情数据的系统的工作层进行改善,主要包括三个部分:对工作线程的多线程布局;使用统一的api进行服务注册;基于分步命中实现数据的读取,基于上述技术手段,提高处理相关数据的性能。

    参照图1,本申请实施例中提供一种股票行情数据处理方法,本申请实施例中的处理方法,可应用于终端中,也可应用于服务器中,还可以是运行于终端或服务器中的软件等。终端可以是平板电脑、笔记本电脑、台式计算机等,但并不局限于此。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。该方法主要包括以下步骤:

    步骤110、接收用户发起的数据获取请求;

    本申请实施例中,对于用户希望获取的股票行情数据,接收用户发起的数据获取请求,根据该数据请求执行对应的任务。具体地,所有的数据请求,都在工作线程内部执行完成。本申请实施例中,参照图2,系统的线程可以采用多线程的布局,首先,线程的布局可以与系统的机器匹配,这样能够最大限度地使用服务器资源,一般来说,可以默认将机器的cpu核心数量乘以2,作为工作线程的数量;将机器的cpu核心数量,作为网络线程的数量,其线程各自实现对应的功能,同时可以通过配置文件指定各个其他服务的线程数量。在各个线程之间,可以通过主题订阅的消息模式,实现线程与线程的通讯。主题订阅的消息模式是基于内存级别的消息通知机制,使得任何线程都只关心自己需要订阅的主题,其余的消息可以自行过滤掉,这样可以有效防止消息的广播风暴,能够合理的利用系统的资源。具体地,本申请实施例中,所有的线程均可以使用统一的线程基类(其内封装了消息订阅的各种模型),从具体的业务角度上作区分,分为网络线程和工作线程。工作线程主要是接口层,负责用户数据请求的回应、数据推送等业务服务,工作线程的接口实现,可以通过暴露路由接口,由其他服务提供具体的实现代码。这样可以使得工作线程不直接编写业务层代码,只需提供注册接口,具体的各个处理,都由其他数据服务实现。

    步骤120、根据所述数据获取请求在工作线程中进行服务注册;

    本申请实施例中,可以采用统一的api进行服务注册。具体地,工作线程通过虚基类的方式,提供出一套api路由接口,工作线程内部通过持有不同服务的路由接口,来处理不同请求类型的数据服务。数据获取请求服务可以通过集成虚类,然后通过工作线程给出的注册接口,将实现的服务注册到各个工作线程(即程序启动的时候,各个服务会通过一个固定的函数,将各自的处理类注册到工作线程,工作线程通过虚基持有各个处理类的指针)。

    当进行服务注册的时候,可以先获取所述数据获取请求的优先级信息,该优先级信息可以是由用户身份确定,然后基于该优先级信息,对应的请求被对应优先级的路由处理。在一些实施例中,也可以优先被高优先级的路由处理,如果这个路由并没有完整处理这个消息,或者对应的优先级的路由暂时被占用,那么请求可以继续被下一个优先级的路由处理,直到这个消息被处理,或者没有更多的路由。

    步骤130、根据所述服务注册的结果,判断目标数据是否为内存变量;

    本申请实施例中,采用分步命中的方法来实现数据的读取。具体地,为了平衡系统的读取数据和搭建成本,应当采用内存和硬盘两者共同存储的方式。而采用分步命中的方式,主要目的是为了平衡内存与硬盘的关系,因为内存的数据获取速度极快,而硬盘的数据获取速度慢;但是相对地,内存的数据存储量小,硬盘的数据存储量大。所以当一个数据获取请求过来的时候,可以首先直接检查需要的数据是否是内存变量,当目标数据属于内存变量的时候,可以直接从内存获取所述目标数据并发送给用户。

    步骤140、当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;

    步骤150、当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。

    本申请实施例中,当目标数据不属于内存变量的时候,可以执行lru算法,判断目标数据是否为lru缓存变量(缓存变量也可以认为是内存变量的一种),当所述目标数据为lru缓存变量,从所述lru缓存中读取所述目标数据并发送给用户,lru算法是被封装成一个实例的算法,里面的数据是自管理的,可以控制并记录命中的次数和数据量大小,进而决定某一个数据是否保存在硬盘还是内存。可以通过动态控制lru缓存的大小,改变命中内存的效率,进而提高程序获取数据的效率。当判断到目标数据不为lru缓存变量时,则从硬盘中读取所述目标数据并发送给用户。当然,也可以由各个路由实现从其他存储的获取,例如可以是redis,mysql,mongodb等。

    下面参照附图详细描述根据本申请实施例提出的股票行情数据处理系统。

    参照图3,本申请实施例中提出的股票行情数据处理系统,包括:

    接收单元101,用于接收用户发起的数据获取请求;

    注册单元102,用于根据所述数据获取请求在工作线程中进行服务注册;

    判断单元103,用于根据所述服务注册的结果,判断目标数据是否为内存变量;

    第一处理单元104,用于当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;

    第二处理单元105,用于当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。

    可以理解的是,上述方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

    参照图4,本申请实施例提供了股票行情数据处理装置,包括:

    至少一个处理器201;

    至少一个存储器202,用于存储至少一个程序;

    当至少一个程序被至少一个处理器201执行时,使得至少一个处理器201实现的股票行情数据处理方法。

    同理,上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

    本申请实施例还提供了一种计算机可读存储介质,其中存储有处理器201可执行的程序,处理器201可执行的程序在由处理器201执行时用于执行上述的股票行情数据处理方法。

    同理,上述方法实施例中的内容均适用于本计算机可读存储介质实施例中,本计算机可读存储介质实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同。

    在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或方框有时能以相反顺序被执行。此外,在本申请的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。

    此外,虽然在功能性模块的背景下描述了本申请,但应当理解的是,除非另有相反说明,功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本申请是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本申请。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本申请的范围,本申请的范围由所附权利要求书及其等同方案的全部范围来决定。

    功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

    在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

    计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

    应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

    在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

    尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。

    以上是对本申请的较佳实施进行了具体说明,但本申请并不限于实施例,熟悉本领域的技术人员在不违背本申请精神的前提下可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。


    技术特征:

    1.一种股票行情数据处理方法,其特征在于,包括:

    接收用户发起的数据获取请求;

    根据所述数据获取请求在工作线程中进行服务注册;

    根据所述服务注册的结果,判断目标数据是否为内存变量;

    当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;

    当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。

    2.根据权利要求1所述的股票行情数据处理方法,其特征在于,所述工作线程通过以下步骤设定:

    获取系统的cpu核心数量;

    根据所述cpu核心数量,设定所述工作线程的数量。

    3.根据权利要求1所述的股票行情数据处理方法,其特征在于,所述根据所述数据获取请求在工作线程中进行服务注册,包括:

    获取所述数据获取请求的优先级信息;

    根据所述优先级信息,通过对应优先级的路由对所述数据获取请求进行服务注册。

    4.根据权利要求3所述的股票行情数据处理方法,其特征在于,所述根据所述数据获取请求在工作线程中进行服务注册,还包括以下步骤:

    当确定所述对应优先级的路由被占用,通过下一级优先级的路由对所述数据获取请求进行服务注册。

    5.根据权利要求1所述的股票行情数据处理方法,其特征在于,所述当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户,包括:

    当所述目标数据不为内存变量,判断所述目标数据是否为lru缓存变量;

    当所述目标数据为lru缓存变量,从所述lru缓存中读取所述目标数据并发送给用户;

    当所述目标数据不为lru缓存变量,从硬盘中读取所述目标数据并发送给用户。

    6.根据权利要求1-5中任一项所述的股票行情数据处理方法,其特征在于,所述从硬盘中读取所述目标数据并发送给用户,包括:

    启动协程从硬盘中读取所述目标数据并发送给用户。

    7.一种股票行情数据处理系统,其特征在于,包括:

    接收单元,用于接收用户发起的数据获取请求;

    注册单元,用于根据所述数据获取请求在工作线程中进行服务注册;

    判断单元,用于根据所述服务注册的结果,判断目标数据是否为内存变量;

    第一处理单元,用于当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;

    第二处理单元,用于当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。

    8.一种股票行情数据处理装置,其特征在于,包括:

    至少一个处理器;

    至少一个存储器,用于存储至少一个程序;

    当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-6中任一项所述的股票行情数据处理方法。

    9.一种计算机可读存储介质,其中存储有处理器可执行的程序,其特征在于:所述处理器可执行的程序在由处理器执行时用于实现如权利要求1-6中任一项所述的股票行情数据处理方法。

    技术总结
    本申请公开了一种股票行情数据处理方法、系统、装置及存储介质。该方法包括以下步骤:接收用户发起的数据获取请求;根据所述数据获取请求在工作线程中进行服务注册;根据所述服务注册的结果,判断目标数据是否为内存变量;当所述目标数据为内存变量,从内存获取所述目标数据并发送给用户;当所述目标数据不为内存变量,从硬盘中读取所述目标数据并发送给用户。该系统包括接收单元、注册单元、判断单元、第一处理单元和第二处理单元。该方法可以有效提高行情数据的处理性能,在成本较低的条件下实现有关信息的快速分发,对于股票行情这类高I/O类型的服务有很大的效率提升。本申请可广泛应用于数据处理技术领域内。

    技术研发人员:曾赞达;罗文杰;柯年军;卢树文;周伟杰
    受保护的技术使用者:广州经传多赢投资咨询有限公司
    技术研发日:2020.11.25
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22943.html

    最新回复(0)