发明内容
鉴于上述问题,本发明实施例提供了一种基于全链路的全域资产报表生成方法,用于解决现有技术中存在的上述问题。
根据本发明实施例的一个方面,本申请提供了一种基于全链路的全域资产报表生成方法,其特征在于,所述方法包括:监控服务模块于第一预设时间点启动第一工作模块;
所述第一工作模块将最近交易日数据导入数据表中;
所述第一工作模块将所述数据表写入消息队列;
所述第一工作模块将所述消息队列的数据格式转换为与数据库相适应的格式;
所述第一工作模块将格式转换后的所述消息队列的数据同步至所述数据库;
所述第一工作模块根据业务属性给所述数据库的数据添加第一标签并根据所述第一标签将所述数据库的数据分为多个第一小组;
所述第一工作模块根据所述业务属性建立多个业务分区,每个所述业务分区根据所述第一标签消费并计算所述第一小组的数据以生成并输出第一报表;
所述第一工作模块获取实时数据;
所述第一工作模块根据所述业务属性给所述实时数据添加第二标签并根据所述第二标签将所述实时数据分为多个第二小组;
基于消费并计算后的所述第一小组的数据,每个所述业务分区根据所述第二标签消费并计算所述第二小组的数据以生成并输出第二报表;
所述监控服务模块判断所述第一工作模块的每个所述业务分区根据所述第二标签消费并计算所述第二小组的数据是否完成;
若所述监控服务模块监控到所述第一工作模块的每个所述业务分区均根据所述标签消费并计算完成所述第二小组的数据,所述监控服务模块启动第二工作模块;
所述第二工作模块获取所述第一工作模块的数据,所述第一工作模块的数据为所述第一工作模块的所有消费并计算后的所述第二小组的数据;
所述第二工作模块根据按键分区处理函数对所述第一工作模块的数据并行计算;
所述第二工作模块根据全局窗口聚合并行计算后的所述第一工作模块的数据为第二工作模块的数据;
所述第二工作模块根据所述第二工作模块的数据输出第三报表。
在一些实施例中,所述方法还包括:
响应于所述监控服务模块监控到所述第二工作模块将所述第二工作模块的数据输出至第三工作模块,所述监控服务模块启动所述第三工作模块,所述第二工作模块的数据包括第一数据和第二数据;
所述第三工作模块获取所述第二工作模块的数据;
所述第三工作模块采用所述按键分区处理函数,根据第一计算方式对所述第一数据并行计算,以及根据第二计算方式对所述第二数据并行计算;
所述第三工作模块根据全局窗口聚合并行计算后的所述第一数据和所述第二数据为第三工作模块的数据;所述第三工作模块根据所述第三工作模块的数据输出第四报表。
在一些实施例中,所述监控服务模块每天自动启动;
所述监控服务模块监控所述第一工作模块、所述第二工作模块和所述第三工作模块的每个模块相对应的提示装置是否提示需要启动;
若是,所述监控服务模块启动与提示需要启动的所述提示装置相对应的所述第一工作模块、所述第二工作模块和所述第三工作模块中的一个或多个。
在一些实施例中,在所述响应于所述监控服务模块监控到所述第二工作模块将所述第二工作模块的数据输出至第三工作模块之前,包括:
所述第二工作模块根据定时器将所述第二工作模块的数据按照批次输出,所述定时器支持配置时间间隔。
在一些实施例中,所述第一工作模块设置有资源锁机制,所述第一工作模块包括交易模块、清算模块和风控模块,所述资源锁机制用于分配所述交易模块、所述清算模块和所述风控模块之间的资源。
在一些实施例中,所述方法还包括:
所述风控模块根据实时行情按批次运算所述清算模块的数据。
在一些实施例中,所述方法还包括:
所述监控服务模块获取并保存所述第一工作模块的数据于大数据集群;
若所述第一工作模块出现服务数据计算错误或异常退出,所述第一工作模块获取并应用根据新的服务数据计算的相应服务代码,以解决所述服务数据计算错误或异常退出;
所述监控服务模块重启所述第一工作模块;
所述第一工作模块根据所述大数据集群的数据恢复数据处理状态至所述出现服务数据计算错误或异常退出之前的状态。
在一些实施例中,所述第一工作模块根据所述大数据集群的数据恢复数据处理状态至所述出现服务数据计算错误或异常退出之前的状态,包括:
所述第一工作模块根据所述大数据集群的数据过滤所述第一工作模块处理过的服务数据。
在一些实施例中,所述方法还包括:
全链路时延数据探针跟踪统计所述第一工作模块、所述第二工作模块和所述第三工作模块的工作情况;
客户端获取并展示所述第一工作模块、所述第二工作模块和所述第三工作模块的工作情况。
在一些实施例中,所述第一工作模块将最近交易日数据导入数据表中,包括:
所述第一工作模块获取交易日历表;
所述第一工作模块根据所述交易日历表获取所述最近交易日;
所述第一工作模块获取所述最近交易日的数据。
本发明实施例通过第一工作模块的处理实时数据和过往数据,可以快速生成第一报表和第二报表,第一报表用于展示股市或证券过去的交易讯息,第二报表用于展示股市或证券的实时交易讯息。监控服务模块在监控到第一工作模块的每个业务分区均根据标签消费并计算完成第二小组的数据后,启动第二工作模块,第二工作模块对第一工作模块的数据进行检查,通过先并行计算再聚合的计算方法快速准确地生成第三报表。生成第三报表的时候,股市和证券不再产生新的实时数据,系统不会再获取新的交易信息,此时第二工作模块对第一工作模块的数据进行了检查,最后第二工作模块生成的第三报表相对于第二报表来说,由于第三报表的数据经过了检查,所以第三报表的数据更加准确。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
本发明人注意到,随着金融领域的发展,目前的金融全域资产管理具有计算链路长、业务复杂和多源异构数据量庞大等特点,而运用传统信息系统建设模式容易产生大量的数据孤岛现象,导致数据分散、口径不一致、数据质量差等问题,从而无法保障数据的实时可靠性,无法便捷访问以及无法快速响应业务需求,传统信息系统建设模式无法应对越来越复杂的场景需求,最终影响了数据价值的发挥。如何快速并准确地输出报表,是目前需要解决的问题。
发明人经过深入研究,设计了一种基于全链路的全域资产报表生成方法,通过监控服务模块对整个链路的监控调度,实现了整个链路的自动化运行,每个工作模块工作完后,监控服务模块自动启动下一项工作,提高了报表生成方法的整体效率。通过第二工作模块和第三工作模块对第一工作模块的数据重复计算,减少了第一工作模块的计算错误,提高了基于全链路的全域资产报表生成方法的准确度。其次,通过第二工作模块和第三工作模块的分合笔运算,使得数据可以并行计算,系统在同一时间可以处理多组数据,进一步提高了报表生成方法的工作效率。
图1是本发明实施例提供的基于全链路的全域资产报表生成方法的流程图。该方法由计算设备执行,该计算设备可以是包括一个或多个处理器的计算设备,该处理器可能是中央处理器CPU,或者是特定集成电路ASIC(Application Specific IntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路,在此不做限定。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC,在此不做限定。
如图1所示,该方法包括如下步骤:
步骤101:监控服务模块于第一预设时间点启动第一工作模块。
监控服务模块可以为全局Zookeeper监控服务,或者可以为redis消息监控服务,或者也可以为其他能够起到监控并调度各工作模块,实现整个链路的自动化监控运行的作用的监控服务。在一些实施例中,监控服务模块采用全局Zookeeper监控服务,全局Zookeeper监控服务采用 SpringBoot 微服务架构,使用 zookeeper API,可以更好地实现对整个链路的自动化监控运行。
第一预设时间点为预先设置的时间节点,时间节点为证券或股市开市之前的时间点,需要预留足够的时间使得后续第一工作模块在股市开市之前就可以完成对过往数据的处理。例如股市于早上九点半开市,预先设置的时间节点可以为早上八点,预留了一个半小时给第一工作模块对过往数据进行处理。由于股市节假日不开市,则对节假日也不进行时间节点的预先设置。到了该时间节点,监控服务模块通过监控调度功能启动第一工作模块,使得整个链路可以自启动,不需要人为启动,实现了整个链路的自动化监控运行,提高了报表生成方法的工作效率。
第一工作模块包括交易、清算、风控、资讯和实时行情等多个子模块,各子模块均受到监控服务模块的监控调度从而相互协调工作。
步骤102:第一工作模块将最近交易日数据导入数据表中。
最近交易日数据中包含多个股票数据或是多个证券数据,股票数据和证券数据中又包含了日期、净值、交易等数据,第一工作模块根据多个股票或多个证券的日期、净值、交易等数据建立多个数据表,然后根据多个数据表之间所具有的共同字段建立数据表之间的依赖关系,例如具有日期的数据表与随着日期变更的股值通过日期建立日期关系,又或者把同一股票的多个具有交易数据的数据表汇总根据该股票的股值建立交易关系。最近交易日为上一个交易日,由于节假日证卷行业没有实时交易数据,无需进行数据处理,所以不能简单判断昨日就是今日的最近交易日。在一些实施例中,第一工作模块通过设置交易日历表来获取最近交易日,交易日历表为记载了系统有交易记录存在的日期的日历表。
步骤103:第一工作模块将数据表写入消息队列。
消息队列可以为Kafka、RabbitMQ、RocketMQ、ZeroMQ或其他消息队列。
步骤104:第一工作模块将消息队列的数据格式转换为与数据库相适应的格式。
数据库可以采用Oracle数据库、MySQL数据库、MongoDB数据库或其他数据库,用于储存数据。
步骤105:第一工作模块将格式转换后的消息队列的数据同步至数据库。
步骤103至步骤105中,通过第一工作模块将消息队列的数据格式转换为与数据库相适应的格式,使得消息队列的数据可以更好地存储进数据库中,实现了数据格式的统一,从而后续可以高效输出实时指标。在一些实施例中,消息队列采用L0层,第一工作模块把L0层的数据转化为数据库特有的数仓模型以方便存入Oracle数据库中。
步骤106:第一工作模块根据业务属性给数据库的数据添加第一标签并根据第一标签将数据库的数据分为多个第一小组。
业务属性包括风控、试算、合规、头寸和分析等与金融领域有关的业务工作。
步骤107:第一工作模块根据业务属性建立多个业务分区,每个业务分区根据第一标签消费并计算第一小组的数据以生成并输出第一报表。
步骤106至步骤107中,第一工作模块为具有不同业务属性的数据添加不同的第一标签,并将数据库的数据划分为需要进行风控计算的数据、需要进行试算的数据、需要进行合规的数据或需要进行其他业务属性计算的数据等多个第一小组。第一工作模块建立与业务属性对应的多个分区,即建立多个风控分区、试算分区、合规分区或其他业务属性分区以对分别对第一小组的数据进行消费和计算从而生成并输出第一报表,例如风控分区对股票和证券进行风控计算,试算分区对股票和证券进行试算计算,第一报表可以通过展示计算各分区的计算结果以向用户展示过去的交易讯息。消费是指之前的消息队列发布订阅,消费者(即工作模块)可以获取消息队列的数据。通过上述步骤,使得数据可以并行处理,系统可以同时处理多组数据,提高了报表生成方法的工作效率。
通过步骤101至步骤107,使得第一工作模块可以对过去的交易讯息进行处理,获得准确的过去的交易讯息,从而后续让第一工作模块可以在过去的交易讯息的基础上,对之后获取的实时数据处理。
步骤108:第一工作模块获取实时数据。
步骤109:第一工作模块根据业务属性给实时数据添加第二标签并根据第二标签将实时数据分为多个第二小组。
步骤110:基于消费并计算后的第一小组的数据,每个业务分区根据第二标签消费并计算第二小组的数据以生成并输出第二报表。
步骤108至步骤110中,实时数据为证券行业或股市等开市后产生的实时数据,证券或股市开市后,实时数据随着交易的进行会不断更新,第一工作模块会不断获取新的实时数据直到证券或股市休市为止。
第一工作模块为具有不同业务属性的实时数据添加不同的第二标签,并将实时数据划分为需要进行风控计算的数据、需要进行试算的数据、需要进行合规的数据或需要进行其他业务属性计算的数据等多个第二小组。由于股市或证券的数据的连续性,所以实时数据是以消费并计算后的第一小组的数据为基础继续获取的,即消费并计算了某一只证券过去的风控计算数据,那么第一工作模块获取的这只证券与风控计算有关的实时数据会基于过去的风控计算数据来进行计算,以保证计算出来的数据的准确性。多个分区以对实时数据进行消费和计算从而生成并输出第二报表,输出的第二报表可以向用户展示实时的交易讯息。
步骤111:监控服务模块判断第一工作模块的每个业务分区根据第二标签消费并计算第二小组的数据是否完成。
步骤112:若监控服务模块监控到第一工作模块的每个业务分区均根据标签消费并计算完成第二小组的数据,监控服务模块启动第二工作模块。
步骤111至步骤112中,当监控服务模块监控到第一工作模块的每个业务分区均根据第二标签消费并计算完成第二小组的数据,即监控服务模块监控到第一工作模块数据计算完成,监控服务模块启动第二工作模块。
第一工作模块在对实时数据的处理过程中可能存在不同问题,例如第一工作模块对实时数据进行消费并计算时,由于在证券或股市休市前,实时数据是不断更新的,所以第一工作模块在中间的时间点所获取的实时数据不一定准确,从而无法完全正确地计算出基金净值信息。只有当所有实时数据全部处理完即股市或证券休市之后,实时数据不会出现新的变化,此时需要第二工作模块对之前的第一工作模块的数据进行检验工作,输出准确度更高的报表。第二工作模块主要包括清算模块,清算模块主要用于对第一工作模块的数据进行检查。
步骤113:第二工作模块获取第一工作模块的数据,第一工作模块的数据为第一工作模块的所有消费并计算后的第二小组的数据。
第一工作模块的数据包括获取的实时数据和数据库的数据,后续第二工作模块对实时数据和数据库的数据进行处理以起到检查第二报表的作用。
步骤114:第二工作模块根据按键分区处理函数对第一工作模块的数据并行计算。
步骤115:第二工作模块根据全局窗口聚合并行计算后的第一工作模块的数据为第二工作模块的数据。
步骤116:第二工作模块根据第二工作模块的数据输出第三报表。
步骤113至步骤116中,由于第一工作模块的数据是根据业务分区来消费和计算得到的,已经将第一工作模块的数据根据业务属性进行了分类,第二工作模块对第一工作模块的数据通过按键分区处理函数可以进行并行计算。通过并行计算,使得第二工作模块可以同时对多个第一工作模块的数据进行检查计算,提高了报表生成方法的工作效率。
第二工作模块根据全局窗口聚合并行计算后的第一工作模块数据,其中聚合需要通过设置相同主键对并行计算后的第一工作模块数据进行聚合。例如,设置相同主键为某只证券,第二工作模块汇总与该证券相关的风控计算数据、交易计算数据和咨询数据等业务数据。在一些实施例中,第二工作模块不需要对所有的数据都先并行计算再聚合,有的数据例如费用分合笔计算就需要先并行计算再聚合,持仓资金只需要并行计算,担保交收只需要全局窗口聚合计算,在此不做限定,根据实际需要选择需要选取的计算方式对数据进行计算。通过第二工作模块对第一工作模块的数据先并行计算再聚合,使得最后输出的第三报表数据更完善更准确,提高了基于全链路的全域资产报表生成方法的准确性。
通过步骤101至步骤116,实时数据和过往数据在第一工作模块的处理下,可以快速生成第一报表和第二报表,第一报表用于展示股市或证券过去的交易讯息,第二报表用于展示股市或证券的实时交易讯息。监控服务模块在监控到第一工作模块的每个业务分区均根据标签消费并计算完成第二小组的数据后,启动第二工作模块,第二工作模块对第一工作模块的数据进行检查,通过先并行计算再聚合的计算方法快速准确地生成第三报表。生成第三报表的时候,股市和证券不再产生新的实时数据,系统不会再获取新的交易信息,此时第二工作模块对第一工作模块的数据进行了检查,最后第二工作模块生成的第三报表相对于第二报表来说,由于第三报表的数据经过了检查,所以第三报表的数据更加准确。
在一些实施例中,基于全链路的全域资产报表生成方法还包括:
步骤a01:响应于监控服务模块监控到第二工作模块将第二工作模块的数据输出至第三工作模块,监控服务模块启动第三工作模块,第二工作模块的数据包括第一数据和第二数据。
第二工作模块的数据包括获取的所有实时数据和数据库的数据,后续第三工作模块对实时数据和数据库的数据进行处理以起到检查第三报表的作用。
第一数据为常规数据,例如股市或证券的交易数据。第二数据为特殊数据,例如港股通的交易数据。
步骤a02:第三工作模块获取第二工作模块的数据。
步骤a03:第三工作模块采用按键分区处理函数根据第一计算方式对第一数据并行计算,以及根据第二计算方式对第二数据并行计算。
第一计算方式与第二工作模块对第一工作模块的数据并行计算的计算方式相同,第一数据可以被第一计算方式计算。
第二计算方式与第二工作模块对第一工作模块的数据并行计算的计算方式不相同,第二计算方式适用于计算第二数据,第二数据为特殊的数据,第一计算方式计算该类数据将导致计算出错,因此第一计算方式不适用于第二数据。例如港股通的交易数据为第二数据,需要采用特定的第二计算方式对其进行运算。
步骤a04:第三工作模块根据全局窗口聚合并行计算后的第一数据和第二数据为第三工作模块的数据。
步骤a05:第三工作模块根据第三工作模块的数据输出第四报表。
步骤a01至步骤a05中,第二工作模块将第二工作模块的数据输出至第三工作模块可以是分批次批量输出数据,也可以是一条数据接一条数据的连续输出,在此不做限定,根据实际需要设置。第三工作模块对第二工作模块的数据进行了如第二工作模块对第一工作模块的数据一样的处理,对第二工作模块的数据通过重复计算进行了检查,提高了报表生成方法的工作效率。
第三工作模块获取第二工作模块的数据后,由于第二工作模块数据中存在第一数据和第二数据,其中第二数据为特殊数据,例如港股通的交易数据,港股通的交易数据计算方式与常规计算方式不同,所以第三工作模块在对第二工作模块的数据并行计算的时候,需要对第一数据采用第一计算方式(即常规计算方式)计算,还会采用适用于第二数据的第二计算方式对第二数据进行计算。通过对第一数据采用第一计算方式,使得第三工作模块对第二工作模块的数据中的第一数据再一次进行了数据检查,从而进一步提高了基于全链路的全域资产报表生成方法的准确性。通过采用适用于第二数据的第二计算方式对第二数据进行计算,第三工作模块对第二数据进行了针对性处理,避免统一采用第一计算方式计算所有数据导致的计算出错,使得最后生成的第四报表更加准确。
监控服务模块在监控到第二工作模块将第二工作模块的数据输出至第三工作模块后,启动第三工作模块,第三工作模块对第二工作模块的数据进行检查,也是通过先并行计算再聚合的计算方法快速准确地生成第四报表,但在检查计算的过程中,第三工作模块会对第二工作模块的数据中的第二数据采用第二计算方式进行特殊计算,例如对港股通的数据进行特殊计算,最后生成的第四报表相对于第三报表由于进行了再次检查并且对部分数据进行了特殊处理,使得最后生成的第四报表的准确性更高。
在一些实施例中,基于全链路的全域资产报表生成方法还包括:
步骤b01:监控服务模块每天自动启动。
监控服务模块每天自动启动,当系统所有模块运行结束后,监控服务模块也会相应自动关机,通过上述方式,实现了整个链路的自动化监控运行。
步骤b02:监控服务模块监控第一工作模块、第二工作模块和第三工作模块的每个模块相对应的提示装置是否提示需要启动。
步骤b03:若是,监控服务模块启动与提示需要启动的提示装置相对应的第一工作模块、第二工作模块和第三工作模块中的一个或多个。
步骤b02至步骤b03中,监控服务模块通过监控提示装置的状态启动第一工作模块、第二工作模块和第三工作模块中的一个或多个,提示装置的状态为需要启动和不需要启动。在一些实施例中,提示装置还会提示第一工作模块、第二工作模块和第三工作模块中的各子模块是否需要启动。
通过步骤b01至步骤b03,使得监控服务模块可以更好地实现对整个链路的自动化监控运行,整个链路的运行更加流畅,进一步提高了报表生成方法的工作效率。
在一些实施例中,在步骤a01之前,第二工作模块根据定时器将第二工作模块的数据按照批次输出,定时器支持配置时间间隔。
当第二工作模块输出数据到数据库时,由于数据库的创建需要耗费大量时间,所以第二工作模块如果创建一个数据库再一条数据一条数据输出,则导致第二工作模块的输出数据效率较低。通过在第二工作模块中设置定时器,定时器可以按时间输出设定数量的数据,使得第二工作模块每创建一个数据库,可以按时输出一批数据,从而提高了第二工作模块的数据输出效率。在一些实施例中,第一工作模块和第三工作模块也采用了定时器输出数据,进一步提高了报表生成方法的工作效率。
在一些实施例中,第一工作模块设置有资源锁机制,第一工作模块包括交易模块、清算模块和风控模块,资源锁机制用于分配交易模块、清算模块和风控模块之间的资源。
由于第一工作模块中各个子模块依赖于大数据集群计算,需要对计算资源进行合理地分配和释放,所以需要在第一工作模块中设置资源锁机制,用于根据各子模块之间的依赖关系控制计算资源的分配和释放。例如,当交易模块运行时,资源锁机制分配资源到交易模块,当交易模块运行完成后,资源锁机制将把分配给交易模块的资源分配到下一个需要计算的子模块如风控模块或清算模块中。在一些实施例中,第二工作模块和第三工作模块也设置有资源锁机制,用于分配第二工作模块和第三工作模块中的各子模块之间的计算资源。
在一些实施例中,基于全链路的全域资产报表生成方法还包括:
步骤c01:风控模块根据实时行情按批次运算清算模块的数据。
风控模块作为实时Flink任务,在实时行情的触发下,按批次对清算模块的数据进行消费计算。例如,实时行情每隔3秒触发一次,风控模块每隔3秒对清算模块的数据汇总进行一次消费计算,使得基于全链路的全域资产报表生成方法的实时性更强,能够将最新的证券或股市的行情展示出来。
在一些实施例中,基于全链路的全域资产报表生成方法还包括:
步骤d01:监控服务模块获取并保存第一工作模块的数据于大数据集群。
步骤d02:若第一工作模块出现服务数据计算错误或异常退出,第一工作模块获取并应用根据新的服务数据计算的相应服务代码,以解决服务数据计算错误或异常退出。
步骤d03:监控服务模块重启第一工作模块。
步骤d04:第一工作模块根据大数据集群的数据恢复数据处理状态至出现服务数据计算错误或异常退出之前的状态。
步骤d01至步骤d04中,监控服务模块将第一工作模块的数据保存于大数据集群中,当第一工作模块出现服务数据计算错误或异常退出时,监控服务模块监控到到上述状况将对该状况进行实时反馈,以使用户对第一工作模块的服务代码进行调整以解决服务数据计算错误或异常退出的问题,第一工作模块因此获得了新的服务数据计算的相应服务代码。第一工作模块获得新的服务数据计算的相应服务代码后,监控服务模块重启第一工作模块,第一工作模块重启后根据之前保存到大数据集群中的数据,将工作状态恢复至出现服务数据计算错误或异常退出之前的状态,例如,第一工作模块要处理一百个数据,之前处理到第五十个数据的时候异常退出了,那么重启后的第一工作模块会从第五十个数据开始重新处理数据。
通过上述步骤,在监控服务模块对第一工作模块出现的问题快速定位,并解决了第一工作模块出现的问题后,第一工作模块可以迅速恢复到之前的工作状态,使得基于全链路的全域资产报表生成方法具有一定的容错能力,同时还提高了报表生成方法的工作效率。其次,当第一工作模块出现问题时,只需要对第一工作模块进行重启,无需重启整个链路,减少了系统的恢复时间,提高了基于全链路的全域资产报表生成方法的整体可靠性。在一些实施例中,监控服务模块还将第二工作模块和第三工作模块的数据保存于大数据集群中,以当第二工作模块和第三工作模块出现与第一工作模块相同的问题时,能够快速恢复整个系统的运行,提高了报表生成方法的工作效率。
在一些实施例中,步骤d04包括:
步骤d041:第一工作模块根据大数据集群的数据过滤第一工作模块处理过的服务数据。
当第一工作模块重启时,监控服务模块调用存储在大数据集群的第一工作模块的数据,将其上传至第一工作模块以帮助第一工作模块恢复处理状态至出现服务数据计算错误或异常退出之前的状态。其中存储在大数据集群的第一工作模块的数据由于之前计算过一次,所以为了避免重复计算,判断第一工作模块的数据中已经计算过的数据是否正确,将其中已经计算过的正确的数据过滤掉,例如第一工作模块根据原服务代码数据从第一个数据计算到第五十个数据,从第五十个数据开始出现服务数据计算错误,用户调整服务代码,用于计算前五十个数据的服务代码无需调整,当第一工作模块获取大数据集群的第一工作模块的数据后,会判断前五十个数据是已经计算过的正确数据,将其过滤,从第五十一个数据开始根据新的服务代码计算。上述步骤可以节省第一工作模块重复计算的时间,从而提高了报表生成方法的工作效率。在一些实施例中,第二工作模块和第三工作模块也根据大数据集群的数据过滤第二工作模块和第三工作模块的数据,以避免第二工作模块和第三工作模块的重复计算,进一步提高了报表生成方法的工作效率。
在一些实施例中,基于全链路的全域资产报表生成方法还包括:
步骤e01:全链路时延数据探针跟踪统计第一工作模块、第二工作模块和第三工作模块的工作情况。全链路时延探针可以为Kafka探针、Redis镜像数据事务性的Spring探针、业务流计算监控的Oracle探针或者其他类型的探针。第一工作模块、第二工作模块和第三工作模块的工作情况可以是各工作模块的工作进度,例如清算模块正在清算数据;也可以是各工作模块处理数据的时间,例如第一工作模块处理离线数据共耗时多久;或者也可以是各工作模块出现服务数据计算错误或异常退出;或者也可以是其他工作情况。全链路时延数据探针可以用于获取每个工作模块的工作进度、获取每个工作模块处理数据的时间和定位出现问题的工作模块,还可以用于用户做一些自定义的延伸和扩展以满足其他监控需求。
步骤e02:客户端获取并展示第一工作模块、第二工作模块和第三工作模块的工作情况。
步骤e01至步骤e02中,全链路时延数据探针用于协助监控服务模块调节各工作模块之间的工作情况,进一步实现了整个链路的自动化运行,提高了报表生成方法的工作效率。前端通过获取并展示第一工作模块、第二工作模块和第三工作模块的工作情况,使得用户可以更清楚地了解到系统的当前工作状态,以让用户可以更好地对系统做自定义的调整。
在一些实施例中,步骤120包括:
步骤f01:第一工作模块获取交易日历表。
步骤f02:第一工作模块根据交易日历表获取最近交易日。
步骤f03:第一工作模块获取最近交易日的数据。
步骤f01至步骤f03中,为了避免节假日中系统运行导致的不必要的资源浪费,第一工作模块通过交易日历表判断今日是否为节假日后的第一个交易日,即如果今日是周一,则会获取到上周五的准确数据。通过上述方式,减小了第一功能模块的资源损耗。此外,当系统第一次部署时,系统可以支持任意历史日期的跑数溯源,为各工作模块准备相应的历史数据。
图2示出了本发明实施例提供的计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图2所示,该计算设备可以包括:处理器(processor)202、通信接口(Communications Interface)204、存储器(memory)206、以及通信总线208。
其中:处理器202、通信接口204、以及存储器206通过通信总线208完成相互间的通信。通信接口204,用于与其它设备比如客户端或其它服务器等的网元通信。处理器202,用于执行程序210,具体可以执行上述用于基于全链路的全域资产报表生成方法实施例中的相关步骤。
具体地,程序210可以包括程序代码,该程序代码包括计算机可执行指令。
处理器202可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器206,用于存放程序210。存储器206可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
本发明实施例还提供一种计算机可读存储介质,存储介质中存储有至少一可执行指令,可执行指令在运行时执行上述任一实施例的基于全链路的全域资产报表生成方法的操作。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。