CN115220935A - 数据处理方法及装置、存储介质 - Google Patents
数据处理方法及装置、存储介质 Download PDFInfo
- Publication number
- CN115220935A CN115220935A CN202210891887.2A CN202210891887A CN115220935A CN 115220935 A CN115220935 A CN 115220935A CN 202210891887 A CN202210891887 A CN 202210891887A CN 115220935 A CN115220935 A CN 115220935A
- Authority
- CN
- China
- Prior art keywords
- data
- message
- result
- message queue
- processing
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 190
- 238000012544 monitoring process Methods 0.000 claims abstract description 70
- 239000000463 material Substances 0.000 claims description 55
- 238000004422 calculation algorithm Methods 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 47
- 230000008569 process Effects 0.000 claims description 32
- 238000009472 formulation Methods 0.000 claims description 4
- 239000000203 mixture Substances 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 101100328519 Caenorhabditis elegans cnt-2 gene Proteins 0.000 description 6
- 102100040428 Chitobiosyldiphosphodolichol beta-mannosyltransferase Human genes 0.000 description 6
- 101000891557 Homo sapiens Chitobiosyldiphosphodolichol beta-mannosyltransferase Proteins 0.000 description 6
- 101100328518 Caenorhabditis elegans cnt-1 gene Proteins 0.000 description 5
- 101150004094 PRO2 gene Proteins 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 101100495270 Caenorhabditis elegans cdc-26 gene Proteins 0.000 description 4
- 101100495256 Caenorhabditis elegans mat-3 gene Proteins 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 101100491335 Caenorhabditis elegans mat-2 gene Proteins 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06312—Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06315—Needs-based resource requirements planning or analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/08—Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
- G06Q10/087—Inventory or stock management, e.g. order filling, procurement or balancing against orders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/04—Manufacturing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Theoretical Computer Science (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- Physics & Mathematics (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Development Economics (AREA)
- Game Theory and Decision Science (AREA)
- Educational Administration (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Manufacturing & Machinery (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
数据处理方法及装置、存储介质,所述数据处理方法包括:从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列;听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果;根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列;监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。本实施例提供的方案,可以实现异步处理,减少处理时间,且实现解耦和限流削峰。
Description
技术领域
本文涉及数据处理技术,尤指一种数据处理方法及装置、存储介质。
背景技术
工厂在生产计划制定过程中,结合战略目标、产能瓶颈、产品优先级、物料库存等因素,会产生多个版本的计划,并根据情况变化随时对生产计划进行反复迭代调整。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本公开实施例提供了一种数据处理方法及装置、存储介质。
本公开实施例提供了一种数据处理方法,包括:
从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列;
监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列;
监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。
在一示例性实施例中,一种处理结果对应一个结果消息队列。
在一示例性实施例中,所述第一消息中包括所述数据的存储路径;所述结果消息中包括所述处理结果的存储路径。
在一示例性实施例中,所述生成至少一种处理结果包括:生成概要结果数据和明细结果数据,所述概要结果数据的数据量小于所述明细结果数据的数据量;
所述结果消息队列包括第二消息队列和第三消息队列;
所述根据处理结果生成结果消息至所述处理结果对应的结果消息队列包括:
根据所述概要结果数据生成第二消息至第二消息队列,以及,根据所述明细结果数据生成第三消息至第三消息队列;
所述监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方包括:
监听所述第二消息队列,监听到所述第二消息队列中存在第二消息后,根据所述第二消息队列中的所述第二消息获取概要结果数据,发送所述概要结果数据至所述调用方;
以及,监听所述第三消息队列,监听到所述第三消息队列中存在第三消息后,根据第三消息队列中的所述第三消息获取明细结果数据,发送所述明细结果数据至所述调用方。
在一示例性实施例中,所述数据包括产品需求信息和相关物料信息;
所述概要结果数据包括以下至少之一:所述产品的齐套数量、所述产品的需求数量与所述齐套数量之间差缺的数量;所述明细结果数据包括:所述产品的可能的物料配方。
在一示例性实施例中,所述从调用方接收数据包括:
从所述调用方接收分包所得的数据包;
接收完同一批次数据的数据包后,将该批次数据的数据包合并生成数据文件,其中,一个批次数据为可以进行一次所述预设处理的数据;
所述根据所述数据生成第一消息发送至第一消息队列包括:将当前批次的数据的数据文件的存储路径发送至所述第一消息队列。
在一示例性实施例中,所述从所述调用方接收数据包,接收完同一批次数据的数据包包括:
获取所述数据包中携带的批次信息和总包数,对接收到的批次信息相同且非重复的数据包进行计数,当计数值达到所述总包数时,确定接收完同一批次数据的数据包。
在一示例性实施例中,所述发送所述处理结果至所述调用方包括:
将同一批次数据的同一种处理结果按预设大小拆分为数据包,发送拆分所得的所述数据包至所述调用方。
在一示例性实施例中,所述处理结果包括概要结果数据和明细结果数据,所述方法还包括,发送拆分所得的所述数据包至所述调用方时,携带数据种类指示信息,指示所述数据包为概要结果数据或者明细结果数据。
在一示例性实施例中,所述根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果包括:使用多进程分别从所述第一消息队列中的多个第一消息中获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果。
在一示例性实施例中,所述从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列包括:
接口应用服务从调用方接收数据,根据所述数据生成第一消息发送至消息中间件;所述消息中间件将所述第一消息发送给第一消息队列;
所述监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列包括:
算法服务监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述消息中间件;所述消息中间件将所述结果消息发送至所述处理结果对应的结果消息队列;
所述监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方包括:
所述接口应用服务监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。
本公开实施例提供一种计算机设备,包括处理器以及存储有可在处理器上运行的计算机程序的存储器,其中,所述处理器执行所述程序时实现上述任一实施例所述数据处理方法的步骤。
本公开实施例提供一种计算机可读存储介质,存储有程序指令,当该程序指令被执行时可实现上述任一实施例所述的数据处理方法。
本公开实施例提供一种数据处理装置,包括:接口应用服务、消息中间件和算法服务,其中:
所述接口应用服务被配置为,从调用方接收数据,根据所述数据生成第一消息发送至消息中间件;以及,监听结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的结果消息获取处理结果,发送所述处理结果至所述调用方;
所述算法服务被配置为,监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述消息中间件;
所述消息中间件被配置为,接收所述第一消息,将所述第一消息发送至第一消息队列;以及,接收所述结果消息,将所述结果消息发送至对应的结果消息队列。
本公开实施例包括数据处理方法及装置、存储介质,所述数据处理方法包括:从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列;听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果;根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列;监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。本公开实施例提供的数据处理方法,使用不同消息队列实现数据的接收、处理和返回处理结果,可以实现异步处理,减少处理时间,且数据的接收、处理和结果返回之间可以实现解耦,另外,待处理的消息在消息队列中缓冲,可以限流削峰。
本公开的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本公开的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本公开技术方案的理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1为本公开实施例提供的数据处理方法流程图;
图2为本公开实施例提供的数据处理装置示意图;
图3为本公开实施例提供的消息中间件示意图;
图4为一示例性实施提供的数据处理方法流程图;
图5为一示例性实施例提供的数据处理装置框图。
具体实施方式
本公开描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本公开所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本公开包括并设想了与本领域普通技术人员已知的特征和元件的组合。本公开已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本公开中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本公开实施例的精神和范围内。
图1为本公开实施例提供的一种数据处理方法流程图。如图1所示,本公开实施例提供一种数据处理方法,包括:
步骤101,从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列;
步骤102,监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列;
步骤103,监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。
本公开实施例提供的数据处理方法,使用不同消息队列实现数据的接收、处理和返回处理结果,可以实现异步处理,减少处理时间,且数据的接收、处理和结果返回之间可以实现解耦,另外,待处理的消息在消息队列中缓冲,可以限流削峰。
在一示例性实施例中,所述调用方可以是业务的管控方,或者,可以是第三方。当调用方为第三方时,可以提供可视化用户界面,便于操作和以及提供可视化结果,提高用户体验。
在一示例性实施例中,一种处理结果可以对应一个结果消息队列。但本公开实施例不限于此,一种处理结果可以对应多个结果消息队列。一种处理结果对应一个结果消息队列时,需要监听的消息队列数量少,可以降低系统资源消耗。
在一示例性实施例中,所述第一消息队列可以包括一个或多个消息队列。第一消息队列只有一个消息队列时,可以只监听一个消息队列,降低系统资源消耗。
在一示例性实施例中,不同种类的处理结果可以对应不同的结果消息队列。
在一示例性实施例中,所述第一消息中可以包括所述数据的存储路径;所述结果消息中可以包括所述处理结果的存储路径。本实施中,将存储路径发送给消息队列,相比直接发送数据,可以减轻消息队列的承载压力,避免消息队列过载崩溃。
在一示例性实施例中,所述生成至少一种处理结果可以包括:生成概要结果数据和明细结果数据,所述概要结果数据的数据量小于所述明细结果数据的数据量;
所述结果消息队列包括第二消息队列和第三消息队列;
所述根据处理结果生成结果消息至所述处理结果对应的结果消息队列包括:
根据所述概要结果数据生成第二消息至第二消息队列,以及,根据所述明细结果数据生成第三消息至第三消息队列;
所述监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方可以包括:
监听所述第二消息队列,监听到所述第二消息队列中存在第二消息后,根据所述第二消息队列中的所述第二消息获取概要结果数据,发送所述概要结果数据至所述调用方;
以及,监听所述第三消息队列,监听到所述第三消息队列中存在第三消息后,根据第三消息队列中的所述第三消息获取明细结果数据,发送所述明细结果数据至所述调用方。
本实施例提供的方案,生成处理结果时,生成数据量小的概要结果数据,可以占用较少传输资源,减少传输时长,及时将结果反馈给调用方,增强实时性。
在一示例性实施例中,所述数据可以包括产品需求信息和相关物料信息;
所述概要结果数据可以包括以下至少之一:所述产品的齐套数量、所述产品的需求数量与所述齐套数量之间差缺的数量;所述明细结果数据包括:所述产品的可能的物料配方。
本实施提供的方案,可以应用在产品的齐套计算。通过反馈概要结果数据,可以及时反馈齐套数量,便于及时进行生成计划的制定和调整。
在一示例性实施例中,所述从调用方接收数据可以包括:
从所述调用方接收分包所得的数据包;
接收完同一批次数据的数据包后,将该批次数据的数据包合并生成数据文件,其中,一个批次数据为可以进行一次所述预设处理的数据;
所述根据所述数据生成第一消息发送至第一消息队列可以包括:将当前批次的数据的数据文件的存储路径发送至所述第一消息队列。
本实施例中,通过接收分包所得的数据包,可以减轻服务器压力,避免一次性传输大数量导致的服务器处理失败。
在一示例性实施例中,所述从所述调用方接收数据包,接收完同一批次数据的数据包可以包括:
获取所述数据包中携带的批次信息和总包数,对接收到的批次信息相同且非重复的数据包进行计数,当计数值达到所述总包数时,确定接收完同一批次数据的数据包。本实施例中,由于数据包可能乱序发送,通过对数据包进行计数的方式实现对批次数据的完整性验证。
在一示例性实施例中,所述发送所述处理结果至所述调用方可以包括:
将同一批次数据的同一种处理结果按预设大小拆分为数据包,发送拆分所得的所述数据包至所述调用方。本实施例中,通过拆包的方式进行结果数据的发送,可以减轻服务器压力,避免一次性传输大数量导致的服务器处理失败。
在一示例性实施例中,所述处理结果可以包括概要结果数据和明细结果数据,所述方法还可以包括,发送拆分所得的所述数据包至所述调用方时,携带数据种类指示信息,指示所述数据包为概要结果数据或者明细结果数据。本实施例提供的方案,对返回的结果数据的类型进行提示。
在一示例性实施例中,所述根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果可以包括:使用多进程分别从所述第一消息队列中的多个第一消息中获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果。本实施例中,通过多进程进行第一消息的处理,可以提高处理效率,避免存在多个第一消息时造成堆积与计算响应延迟。
图2为一示例性实施例提供的数据处理装置示意图。如图2所示,本实施例提供的数据处理装置可以包括:接口应用服务21、消息中间件22和算法服务23,其中:
所述接口应用服务21被配置为,从调用方20接收数据,根据所述数据生成第一消息发送至所述消息中间件22;以及,监听结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的结果消息获取处理结果,发送所述处理结果至所述调用方20;
所述算法服务23被配置为,监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述消息中间件22;
所述消息中间件22被配置为,接收所述第一消息,将所述第一消息发送至第一消息队列;以及,接收所述结果消息,将所述结果消息发送至对应的结果消息队列。
在一示例性实施例中,所述数据处理装置还可以包括数据库24。所述接口应用服务21与所述数据库24交互实现对批次数据的完整性验证,交互的实现将在后续示例中详细说明。
在一示例性实施例中,所述接口应用服务21可以是应用程序编程接口(Application Programming Interface,API)接口应用服务。所述数据库24可以基于MySQL实现,但不限于此,可以是其他类型的数据库,比如SQL等。所述消息队列可以是RabbitMQ消息队列,但不限于此,可以是RocketMQ消息队列、ActiveMQ消息队列或者Kafka消息队列等。
在一示例性实施例中,所述接口应用服务21、消息中间件22、算法服务23和数据库24等可以以docker容器隔离部署。docker容器是一个开源的应用容器引擎,开发者可以以统一的方式打包应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上。每个容器拥有自己的隔离化用户空间。建立接口应用服务21、消息中间件22、算法服务23或数据库24的docker容器时,可以从镜像仓库中下载一个合适的镜像,通过建立该镜像的一个应用实例即可生成相应的docker容器。在一示例性实施例中,接口应用服务21、消息中间件22、数据库23和算法服务24等之间的数据共享可通过映射至同一本地路径的方式实现。
图3为一示例性实施例提供的消息中间件的示意图。如图3所示,消息中间件22可以包括一个或多个消息交换机31和至少一个消息队列32。图3中仅示出了一个消息交换机31,但本公开实施例不限于此,可以是多个消息交换机31,分别连接多个消息队列32。多个消息交换机31可以形成多级,即,消息通过多级消息交换机后投递到消息队列中。消息交换机31接收到消息后,根据消息中携带的路由键routing_key将消息投递到后级消息交换机31或者投递到相应的消息队列32,消息投递到后级消息交换机31时,由后级消息交换机31继续投递,直至投递到对应的消息队列中。本实施例中,消息中间件22可以包括三个消息队列:第一消息队列321、第二消息队列322和第三消息队列323,分别接收接口应用服务21发送的第一消息、算法服务23发送的第二消息和第三消息。
下面通过一个示例对本公开实施例技术方案的实现进行说明。
本实施中,调用方20将同一批次数据进行分包发送,即同一批次数据分为多个数据包后发送。接口应用服务21接收数据包,当同一批次数据的数据包接收完成后,接口应用服务21合并该批次数据的数据包存储为数据文件,生成包括数据文件的存储路径的第一消息,将第一消息发送给消息中间件22,消息中间件22将第一消息发送至第一消息队列;算法服务23监听第一消息队列,算法服务23监听到所述第一消息队列中存在第一消息时,获取所述第一消息,根据所述第一消息携带的数据文件的存储路径获取所述数据文件中的数据,根据所述数据进行预设计算,生成概要结果数据和明细结果数据,存储所述概要结果数据为概要结果数据文件,存储所述明细结果数据为明细结果数据文件,生成包括概要结果数据的存储路径的第二消息,生成包括明细结果数据的存储路径的第三消息,将所述第二消息和第三消息发给消息中间件22,所述消息中间件22将所述第二消息发送到第二消息队列322,将所述第三消息发送到第三消息队列323中;接口应用服务21监听第二消息队列322和第三消息队列323,接口应用服务21监听到所述第二消息队列中存在第二消息时,获取所述第二消息,根据所述第二消息携带的概要结果数据文件的存储路径获取概要结果数据,根据所述明细结果数据文件的存储路径获取明细结果数据,将所述概要结果数据分包处理后发送给调用方20,将所述明细结果数据分包处理后发送给调用方20。
图4为一示例性实施例提供的数据处理方法示意图。如图4所示,本实施例提供的数据处理方法包括:
步骤401,接口应用服务21接收调用方20发送的数据;
所述数据可以为分包数据,即,一个批次的数据拆分为多个数据包后发送,每个数据包可以包括多条数据。比如,可以将表3中的一行数据作为一条数据,但本公开实施例不限于此,一条数据可以包括多行数据。其中,一个批次数据是指完整的可用于一次算法计算的输入数据。
在一示例性实施例中,所述接口应用服务21可以通过超文本传输协议(HyperText Transfer Protocol,HTTP)与所述调用方20进行通信,但本公开实施例不限于此,可以通过其他协议与所述调用方20进行通信。
在一示例性实施例中,数据包中可以携带数据包所属的数据批次信息,比如数据包中可以携带批次号、总包数和当前数据包号,如表1所示。其中,batchid表示一批完整的数据的批次号,为批次数据的唯一标识,不同批次数据的batchid不同;total_split_package表示该批次数据被拆分的总包数;currentpackage表示当前数据包的编号。所述批次号可以为字符串,但不限于此,可以是数字。
表1数据包中携带的信息示意表
batchid | 批次号(唯一ID) |
total_split_package | 总包数 |
currentpackage | 当前数据包号 |
在一示例性实施例中,所述接口应用服务21接收数据包时,由于数据包可能乱序到达,可以进行完整性验证,即验证是否接收完毕一个批次数据的全部数据包。一种验证方式为:可以记录接收到属于同一批次数据的数据包的数量,当接收到该同一批次数据的数据包数量与该批次数据的总包数相同时,则表示完整接收了该批次数据的全部数据包。
在一示例性实施例中,所述接口应用服务21可以通过与数据库24交互实现完整性验证。可以在数据库24中创建两个数据表_api_package和_api_package_item。其中表_api_package用于存放批次数据相关信息,表_api_package_item用于存放批次内各数据包的信息。表_api_package和表_api_package_item的字段如表2所示。
表2_api_package和_api_package_item数据表
接口应用服务21接收到一个数据包时,判断表_api_package中该数据包的batchid是否存在,若不存在说明是该批次数据的第一个数据包,则在_api_package表中插入一条记录,该记录中,package_id字段的取值增加一次计数,batch_id字段记录为当前接收到的数据包的batchid,total_split_package为当前接收到的数据包中携带的总包数;设置初始状态数据完整性字段if_completed=0,设置数据信息是否发送到消息队列字段if_send=0,在receive_start_at字段中记录该接收批次数据的开始时间;
以及,在表_api_package_item中插入一条该数据包的记录,该记录中,item_id增加一次计数,package_id与表_api_package中字段package_id的值一致,batch_id字段记录数据包的batchid,current_package字段记录当前数据包号;received_data字段记录当前数据包数据的存储路径,created_at字段记录开始接收数据包的时间。
在接收数据包的过程中,使用第一计数器cnt1对该批次数据的数据包计数,接收到第一个数据包时记录cnt1的计数值=1。当后续该批次数据的数据包到达时,若数据包中携带的batchid在表_api_package中已经存在,则表_api_package中不增加新的记录,在表_api_package_item中添加新的记录,以记录新接收到的数据包的相关信息,对该批次接收到的数据包计数cnt1+=1。
当数据包存在重复时,对后来接收到的重复数据包做丢弃处理,以此保证数据的一致性与完整性。
当第一计数器cnt1的计数值=total_split_package,说明该批次数据已经完整到达本地且被成功接收。此时,修改表_api_package中该批次数据的记录中的字段if_completed,设置if_completed=1,表示该批次数据完整接收,通过receive_end_at字段记录接收该批次数据的结束时间,对第一计数器cnt1的计数值进行复位。
表2中的字段仅为示例,在其他示例性实施例中,可以增加或者减少字段,比如,可以只记录接收到的数据包的批次信息,对同批次的数据包的数量进行计数。
步骤402,接口应用服务21将同一批次的数据合并生成数据文件,根据所述数据文件的存储路径生成第一消息发送至第一消息队列321;
当完整接收到同一批次的数据后,接口应用服务21将该批次所有数据包的数据进行合并处理,将合并后所得的完整数据写入本地文件,生成该批次数据的数据文件,发送第一消息至第一消息队列321,所述第一消息携带所述数据文件的存储路径。所述第一消息中还可以携带:消息交换机名称、路由键和数据标识package_id信息(即表2中的package_id),其中,路由键为路由规则,消息交换机根据路由键将消息发送到对应的消息队列,本实施例中,第一消息中的路由键指示将第一消息发送到第一消息队列321。第一消息被发送到消息交换机名称指示的消息交换机,消息交换机根据第一消息中携带的路由键将第一消息投递到第一消息队列321。后续供算法服务23根据该数据文件的存储路径读取该数据文件进行计算。接口应用服务21更新数据表_api_package中该批次数据对应的记录的字段if_send=1,表示根据当前批次的数据生成的数据文件的存储路径已成功发送至第一消息队列321;以及,设置该批次数据对应的记录的字段request_data记录该批次数据的数据文件的存储路径。接口应用服务21可以将一个批次数据的数据包合并所得的数据生成一个日志文件存储在本地。
上述实施例中,使用package_id对批次数据进行标识。当batchid为字符,package_id为数字时,使用package_id对批次数据进行标识,相比使用batchid占用的存储资源更少,可以节约资源,另外,package_id为数字时,可以建立数据表索引,提高对批次数据进行查询时的查询效率。但本公开实施例不限于此,可以不使用package_id,直接使用batchid对批次数据进行标识,即上述表2和后续表7中可以没有package_id。
本公开实施例中,第一消息队列321中的第一消息可以为数据文件的路径信息,是一种轻量级的消息通信机制,相比直接将数据文件放在消息队列中,可以减小第一消息队列的承载压力,避免第一消息队列过载崩溃。
在另一示例性实施例中,当数据文件的数据量小于等于预设阈值时,可以将数据文件直接发送至所述第一消息队列321。所述预设阈值可以根据需要设置。
在一示例性实施例中,所述数据可以是产品物料数据,可以包括产品的需求信息和相关物料信息。对于不同工厂,产品种类和数量可能不同,使用的材料也可能不同,一个批次的数据的大小不固定;另外,一个批次的数据可能是不同时间范围内的产品物料数据,比如,可能是月度级别的产品物料数据,或者,可能是天级别的产品物料数据,数据量差别较大,其中,有些批次数据存在比较大的数据量,直接将数据文件的数据发送至消息队列,可能导致消息队列过载崩溃。本公开实施例中,将数据文件的存储路径发送至消息队列,占用资源较少,可以避免消息队列崩溃。
步骤403,算法服务23监听所述第一消息队列321,监听到所述第一消息队列321中存在第一消息后,获取所述第一消息队列321中所述第一消息,根据所述第一消息中携带的数据文件的存储路径获取数据文件的数据,根据所述数据进行预设处理,生成概要结果数据和明细结果数据并存储。
所述预设处理可以基于预设的算法进行计算,或者,进行其他数据处理,等等。所述预设处理可以根据需要设置。
所述算法服务23可以和消息中间件22之间建立通信,通过心跳机制保持所述所述算法服务23与所述消息中间件22之间的连接,算法服务23可以订阅第一消息队列321的消息,消息到达第一消息队列321后,即触发所述算法服务23从所述第一消息队列321中获取消息。
本实施例中,算法服务23可以为齐套算法服务,通过齐套算法对数据进行处理。齐套算法是指根据产品、所需物料、产品的需求、物料的库存等,计算可以生产的产品数量。对于一个工厂有多款产品待生产,每款产品需要不同用量的多种材料,材料可以分为必选料和不同优先级的替代料。在已有定量材料的基础上,进行统筹计算获得生产方案,即确定给定产品需求和物料库存下各产品的生产数量,比如,可以是产能或收益最大化的生产方案。
在一示例性实施中,所述数据可以如表3所示,一个批次数据可以包括多条数据,每条数据可以包括但不限于:产品号、物料号、替代组标记、物料使用优先级、单耗、物料库存、产品需求量等。其中,对于同一产品型号,具有相同替代组标记的物料为替代物料,单耗是指生产一件产品需要消耗几件相应物料。
表3从调用方接收到的数据
以表3中第一条为例,产品PRO-1需要消耗物料mat-1,物料mat-1无替代物料(替代组标记为空),一个PRO-1消耗一个mat-1(单耗为1),mat-1的库存为3000,产品PRO-1的需求量为8000。
由表3可知,产品PRO-1中,物料mat-3和物料mat-4为替代料关系(mat-3mat-4具有相同的替代组标记D),即该产品PRO-1有2种配方,配方1:{mat-1,mat-2,mat-3},配方2:{mat-1,mat-2,mat-4}。产品PRO-2和产品PRO-3中,存在共用物料mat-6。
如表3所示,对于产品PRO-1,现有需求为8000,但由于物料库存不够,因此采用配方1可有齐套数量500件,因为物料mat-3仅可满足500件产品需求;采用配方2可有齐套数量20件,因为物料mat-4仅可满足20件产品需求。对于产品PRO-2和PRO-3,可以满足需求,即产品PRO-2齐套数量为100(物料mat-5,物料mat-6库存300,单耗2,100个产品PRO-2需要200件物料mat-5和200件物料mat-6),产品PRO-3齐套数量为20(物料mat-6库存剩余100件,物料mat-7有500件,20个产品PRO-3需要20件物料mat-6,20*3=60件物料mat-7,均可满足)。
表3所示数据仅为示例,实际数据数据量可能远大于表3所示的数据量。
齐套算法服务关注可成套生产的产品数量,及相对于需求之间的差缺数量。对于具有复杂替代关系的物料及产品,可以输出对于不同的物料组配情况下的产品详细的产量值和物料消耗情况。物料共用及替代复杂时,计算得到的明细结果体量会增大很多。
因此,本公开实施例中,将齐套算法服务的计算结果分为概要结果数据和明细结果数据。其中概要结果数据仅记录可齐套的产品数量和产品缺口数量,是关键性的结论数据。明细结果数据包含不同组配情况下,每个产品可能的配方情况,及各配套物料的详细使用情况,可以作为调用方20的辅助参考数据。
表4为一示例性实施例提供的概要结果数据表。如表4所示,所述概要结果数据可以包括以下至少之一:产品的齐套数量,所述产品的需求数量与所述齐套数量之间的差缺数量。即产品的差缺数量=产品的需求数量-产品的齐套数量。
比如,产品PRO-1的齐套数量为520,差缺数量为8000-520=7480;产品PRO-2的齐套数量为100,差缺数量为0;产品PRO-3的齐套数量为20,差缺数量为0。可以看到,概要结果数据的数量量较少,一个产品型号只有一条数据,且该条数据的数据量也很少,占用的传输资源、传输时间少,可以更快的传输给调用方20,便于调用方20及时获知概要信息,实时性更好。
表4概要结果数据表
表5为一示例性实施例提供的明细结果数据表。所述明细结果数据可以包括产品的可能的物料配方,即产品可能使用的物料的使用量信息。如表5所示,所述明细结果数据可以包括产品号、虚拟产品号、物料号、单耗和物料使用量。其中,虚拟产品号可以对使用替代物料的产品进行区分,产品无替代物料时,虚拟产品号可以和产品号一致。可以看到,一个产品存在多条明细结果数据,多于一个产品的概要结果数据(只有一条),且一条明细结果数据的数据量大于一条概要结果数据的数据量。因此,明细结果数据的数据量远远大于概要结果数据的数据量,传输时占用的资源多,传输时长更长。传输概要结果数据可以获得更好的实时性,便于调用方20提前了解概要信息。
表5明细结果数据表
表4和表5所示的概要结果数据和明细结果数据仅为示例,实际应用时,数据量可能远大于表4和表5中所示的数据量。
在一示例性实施例中,所述算法服务23可以使用多进程进行第一消息的处理,提高处理效率。不同工厂、不同类型的产品及物料数据的数据体量差别较大,使得对不同批次数据进行计算时,运行时间可以为几秒到几十分钟不等。对于这种情况,采用单个线程进行消息的处理时,在存在短时多批次数据请求时,第一消息队列中会存在大量等待被处理的第一消息,使得第一消息的处理的时间延迟。本实施例中,可以采用多进程的处理方式,当多个第一消息到达第一消息队列321时,所述算法服务23发起多个进程,并发处理所述多个第一消息,避免因单一第一消息长时间占用CPU进行计算造成第一消息堆积与计算响应延迟,提高处理效率。
线程是程序中的执行流,是程序执行的最小处理单位,是中央处理单元(CPU)调度的最小单位。一个进程可以包括多个线程。单核CPU支持一个进程,多核CPU可以支持多个进程。在一示例性实施中,可以通过进程池的方式实现多进程。进程池中包括多个进程,多个进程可以并发的从存储有待处理任务的任务队列中取出任务并执行,提高处理效率。一个任务比如为取出第一消息进行预设处理。
概要结果数据和明细结果数据进行存储时,可以通过文件名进行区分,比如,概要结果数据的文件名中可以包括res_simple信息,明细结果数据的文件名中可以包括res_detail信息。但本公开实施例不限于此,可以通过其他方式进行概要结果数据的区分和明细结果数据的区分,比如存储到预设的不同的存储空间中,等等。
在一示例性实施例中,算法服务23在处理过程中,将执行情况记录至日志文件存储在本地,比如可以记录错误信息,便于出现问题时的快速定位与问题解决。算法服务23可以将一个批次数据的概要结果数据生成一个日志文件,以及,将一个批次数据的明细结果数据生成一个日志文件。
步骤404,所述算法服务23将所述概要结果数据存储为概要结果数据文件,将明细结果数据存储为明细结果数据文件,将包括所述概要结果数据文件的存储路径的第二消息发送至第二消息队列322,将包括所述明细结果数据文件的存储路径的第三消息发送至第三消息队列323;算法服务23和消息中间件22可以为第二消息队列322和第三消息队列323设置相应的接口,分别传输所述第二消息和所述第三消息。
在一示例性实施例中,所述第二消息和第三消息中可以包括如下字段:消息交换机名称字段(exchange,该字段携带消息交换机名称,消息发送到该字段指示的消息交换机),路由键字段(routing_key,该字段携带路由规则,即指示通过消息交换机路由到哪个消息队列,消息交换机根据路由键将消息投递到相应的消息队列),数据标识字段(package_id,该字段与前述表2的package_id字段一致,标识本地接收到的批次数据,即结果数据为package_id指示的批次数据的结果数据),算法执行结果指示字段(code,该字段用于指示算法服务23的预设处理是否执行成功,比如,执行成功时可以将code设置为0,执行失败时可以将code设置为1,仅为示例,可以设置为其他值,或者,通过其他方式进行指示);信息提示字段(msg,预设处理执行成功时可以为空字符串(但不限于此,可以是其他预定义的信息),预设处理执行失败时携带错误信息提示);存储路径字段(respath,携带结果数据的存储路径)。如表6所示。其中,第二消息的路由键字段指示将第二消息投递到第二消息队列322,第二消息的存储路径字段携带概要结果数据文件的存储路径;第三消息的路由键字段指示将第三消息投递到第三消息队列323,第三消息的存储路径字段携带明细结果数据文件的存储路径。表6所示字段仅为示例,可以根据需要增加或减少字段。
表6消息中传递的信息内容
步骤405,所述接口应用服务21监听所述第二消息队列322和第三消息队列323,监听到所述第二消息队列322中存在第二消息后,从所述第二消息队列322获取第二消息,根据所述第二消息中的概要结果数据文件的存储路径获取概要结果数据,将所述概要结果数据按照预设大小进行拆包,拆分为数据包后发送所述数据包至所述调用方20;以及,监听到所述第三消息队列323中存在第三消息后,从所述第三消息队列323获取第三消息,根据所述第三消息中的明细结果数据文件的存储路径获取明细结果数据,将所述明细结果数据按照预设大小进行拆包,拆分为数据包后发送所述数据包至所述调用方20。
在一示例性实施例中,所述接口应用服务21发送数据包至所述调用方20时,可以携带数据种类指示信息,指示所述数据包为概要结果数据或者明细结果数据。
在一示例性实施例中,所述接口应用服务21发送所述数据包至所述调用方20时,可以携带所述数据包对应的批次数据的批次号(数据包为该批次数据的结果数据),总包数(数据包为概要结果数据时,总包数为概要结果数据的总包数;数据包为明细结果数据时,总包数为明细结果数据的总包数)和当前数据包号、数据种类指示信息(指示所述数据包为概要结果数据或者明细结果数据)。
在一示例性实施例中,所述预设大小可以根据业务及数据传输要求确定。
在一示例性实施例中,所述预设大小比如为1000条(仅为示例,可以为其他值),则可以按照1000条数据为一包进行分包,则总共传输的数据包数为总数据条数/1000,最后一个数据包的数据条数为实际剩余的数据包数。
在一示例性实施例中,可以将表4和表5中的一行作为一条数据,此处仅为示例,一条数据可以包括多行。
在一示例性实施例中,数据包的数据格式包括但不限于为json。
在一示例性实施例中,与接收数据处理过程类似,概要结果数据和明细结果数据的发送处理也可以通过数据库(包括但不限于mysql数据库)进行数据记录。可以创建两个数据表_result_package_item和_result_package。其中表_result_package用于存放批次数据的结果数据相关信息,表_result_package_item用于存放批次内结果数据数据包的细节信息,如表7所示。
表7结果数据发送信息记录表
当某一批次数据对应的概要结果数据的第一个数据包开始发送至调用方时,判断_result_package中该数据包所属的批次数据的package_id是否存在,如果不存在,或者,package_id存在但queue字段指示为明细结果数据时,在表_result_package中创建一条记录,该条记录中,result_id字段的取值增加一次计数,package_id字段值为当前批次数据的package_id,total_split_package字段中的总包数为概要结果数据的总包数,send_start_at字段记录概要结果数据开始发送的时间,result_data字段记录概要结果数据文件的存储路径,queue字段中记录概要结果数据所在的消息队列名称(第二消息队列),或者,可以设置为指示当前为概要结果数据的预设指示信息;此时code字段可以为0,msg字段可以为空字符串;code字段和msg字段的信息可以从第二消息中获取;
以及,在表_result_package_item中创建一条记录,记录该数据包的详细信息,该记录中,result_item_id增加一次计数,result_id字段与表_result_package中的result_id字段一致,package_id字段记录当前数据包为那个批次数据的结果数据(即当前数据包为passage_id指示的批次数据的结果数据),current_package字段记录当前数据包号,result_data字段记录当前数据包数据的存储路径,created_at字段记录当前数据包开始发送的时间。
使用第二计数器cnt2对概要结果数据的数据包进行计数,发送概要结果数据的第一个数据包时,第二计数器cnt2的计数值=1,继续发送该概要结果数据后续数据包时,在表_result_package_item中添加新的记录,记录新发送的数据包的信息,第二计数器cnt2进行累加操作cnt2+=1。当第二计数器cnt2的计数值与待发送的概要结果数据的总包数相等时,该批次数据的概要结果数据全部发送成功,在表_result_package中概要结果数据对应的记录中的send_end_at字段记录概要结果数据发送结束的时间,对第二计数器cnt2进行复位。
当该批次数据对应的明细结果数据的第一个数据包开始发送至调用方时,判断_result_package中该数据包所属的批次数据的package_id是否存在,如果不存在,或者,package_id存在但queue字段指示为概要结果数据时,在表_result_package中创建一条记录,该条记录中,如果表_result_package中已存在该明细结果数据对应的批次数据的package_id(发送概要结果数据时已建立了相关的记录),因此,result_id字段不变(与发送概要结果数据时创建的记录中的result_id一致,即发送一个批次数据的结果数据时,result_id只增加一次),package_id字段值为当前明细结果数据对应的批次数据的package_id,total_split_package字段中的总包数为明细结果数据的总包数,send_start_at字段记录明细结果数据开始发送的时间,result_data字段记录明细结果数据文件的存储路径,queue字段中记录明细结果数据所在的消息队列名称(第三消息队列),或者,可以设置为指示当前为明细结果数据的预设指示信息;此时code字段可以为0,msg字段可以为空字符串;code字段和msg字段的信息可以从第三消息中获取;
以及,在表_result_package_item中创建一条该数据包的详细信息,与发送概要结果数据时的记录类似,不再赘述。
使用第三计数器cnt3对明细结果数据的数据包进行计数,发送明细结果数据的第一个数据包时,第三计数器cnt3的计数值=1,继续发送该明细结果数据的后续数据包时,在表_result_package_item中添加新的记录,记录新发送的数据包的信息,第三计数器进行累加操作cnt3+=1。当第三计数器cnt3的计数值与待发送的明细结果数据的总包数相等时,该批次数据的明细结果数据全部发送成功,在表_result_package中明细结果数据对应的记录中send_end_at字段记录明细结果数据发送结束的时间,对第三计数器cnt3进行复位。
result_item_id字段在每发送一个数据包时增加一次计数(比如增加1),可以不区分数据包的类型,即发送一个概要结果数据的数据包时,result_item_id增加一次计数,发送一个明细结果数据的数据包时,result_item_id增加一次计数。
表7中的字段仅为示例,在其他示例性实施例中,可以增加或者减少字段,比如,可以只记录发送的数据包的批次信息,对同批次的数据包的数量进行计数。
在另一示例性实施例中,可以创建四个数据表_result_package_item_1、_result_package_1和_result_package_item_2、_result_package_2。其中表_result_package_1用于存放批次数据的概要结果数据相关信息,表_result_package_item_1用于存放批次内概要结果数据数据包的细节信息,表_result_package_2用于存放批次数据的明细结果数据相关信息,表_result_package_item_2用于存放批次内明细结果数据数据包的细节信息。
在一示例性实施例中,数据包的发送可以采用消息确认机制,当数据包成功发送时,调用方20成功接收数据包时,返回确认信息至接口应用服务21,接口应用服务21接收到所述确认信息后,继续发送下一个数据包。当发送失败时接口应用服务21发送重试请求(携带数据包),一旦重试请求超出限制,则中断程序。
在一示例性实施例中,提供一种数据处理方法,包括:
接口应用服务21接收调用方20发送的数据包,所述数据包中携带批次号、总包数和当前数据包号;
所述接口应用服务21接收到所述数据包后,记录所述数据包的批次号、总包数和当前数据包号,当接收到的同一批次号的数据包的数量与总包数一致时,将同一批次号的数据包合并为数据文件,根据所述数据文件的存储路径生成第一消息,所述第一消息中携带:数据文件的存储路径、消息交换机名称、路由键和数据标识;所述接口应用服务21发送所述第一消息至消息中间件,由该第一消息中的消息交换机名称指示的消息交换机根据路由键将所述第一消息发送至第一消息队列321;算法服务23监听到所述第一消息队列321中的第一消息后,获取所述第一消息队列321中的所述第一消息,根据所述第一消息中携带的数据文件的存储路径获取数据文件的数据,根据所述数据进行预设处理,生成概要结果数据和明细结果数据,将所述概要结果数据存储为概要结果数据文件,明细结果数据存储为明细结果数据文件,生成第二消息和第三消息;所述第二消息中携带:概要结果数据文件的存储路径、消息交换机名称、路由键和数据标识;所述第三消息中携带:概要结果数据文件的存储路径、消息交换机名称、路由键和数据标识;所述算法服务23发送所述第二消息至消息中间件,由该第二消息中的消息交换机名称指示的消息交换机根据第二消息中的路由键将所述第二消息发送至第二消息队列322;以及,发送所述第三消息至消息中间件,由该第三消息中的消息交换机名称指示的消息交换机根据第三消息中的路由键将所述第三消息发送至第三消息队列323;
接口应用服务21监听到所述第二消息队列322中存在第二消息后,在所述第二消息队列322获取所述第二消息,根据所述第二消息中的概要结果数据文件的存储路径获取概要结果数据,将所述概要结果数据按照预设大小进行拆包,拆分为数据包后发送所述数据包至所述调用方20;以及,监听到所述第三消息队列323中存在第三消息后,从所述第三消息队列323获取第三消息,根据所述第三消息中的明细结果数据文件的存储路径获取明细结果数据,将所述明细结果数据按照预设大小进行拆包,拆分为数据包后发送所述数据包至所述调用方20。
在一示例性实施例中,可以存在多个算法服务,此时,可以设置多个第一消息队列和多个结果消息队列,比如,包括两个第一消息队列,分别称为第一输入队列和第二输入队列,多个结果消息队列分别为第二消息队列、第三消息队列,第四消息队列和第五消息队列。以存在两个算法服务:第一算法服务和第二算法服务为例,每种算法服务生成两种处理结果为例,其中:
当调用第一算法服务时,接口应用服务将第一消息发送消息中间件,消息中间件将第一消息发送给第一输入队列;第一算法服务监听第一输入队列,监听到第一输入队列中的第一消息时,根据第一消息获取数据,进行第一算法处理,生成两种处理结果(第一种处理结果和第二种处理结果),生成携带第一种处理结果的存储地址的第二消息,将第二消息发送至消息中间件,消息中间件将第二消息发送至第二消息队列;生成携带第二种处理结果的存储地址的第三消息,将第三消息发送至消息中间件,消息中间件将第三消息发送至第三消息队列;接口应用服务监听第二消息队列,监听到第二消息队列中存在第二消息时,根据第二消息获取第一种处理结果,发送给调用方;接口应用服务监听第三消息队列,监听到第三消息队列中存在第三消息时,根据第三消息获取第二种处理结果,发送给调用方;
当调用第二算法服务时,接口应用服务将第一消息发送消息中间件,消息中间件将第一消息发送给第二输入队列;第二算法服务监听第二输入队列,监听到第二输入队列中的第一消息时,根据第一消息获取数据,进行第二算法处理,生成两种处理结果(第三种处理结果和第四种处理结果),生成携带第三种处理结果的存储地址的第二消息,将第二消息发送至消息中间件,消息中间件将第二消息发送至第四消息队列;生成携带第四种处理结果的存储地址的第三消息,将第三消息发送至消息中间件,消息中间件将第三消息发送至第五消息队列;接口应用服务监听第四消息队列,监听到第四消息队列中存在第二消息时,根据第二消息获取第三种处理结果,发送给调用方;接口应用服务监听第五消息队列,监听到第五消息队列中存在第三消息时,根据第三消息获取第四种处理结果,发送给调用方。
在一示例性实施例中,可以根据用户指令或者系统配置在不同的算法服务进之间行切换。
上述处理仅为示例,在另一示例性实施例中,存在多个算法服务时,可以设置一个第一消息队列和多个结果消息队列,多个算法服务共用所述多个结果消息队列。接口应用服务将第一消息发送消息中间件,消息中间件将第一消息发送至第一消息队列;多个算法服务均监听第一消息队列,被调用的算法服务监听到所述第一消息队列中存在第一消息时,根据第一消息获取数据,进行第一算法处理,生成多种处理结果,比如,第一种处理结果和第二种处理结果,生成携带第一种处理结果的存储地址的第二消息,将第二消息发送至消息中间件,消息中间件将第二消息发送至第二消息队列;生成携带第二种处理结果的存储地址的第三消息,将第三消息发送至消息中间件,消息中间件将第三消息发送至第三消息队列;接口应用服务监听第二消息队列,监听到第二消息队列中存在第二消息时,根据第二消息获取第一种处理结果,发送给调用方;接口应用服务监听第三消息队列,监听到第三消息队列中存在第三消息时,根据第三消息获取第二种处理结果,发送给调用方。不用的算法服务可以根据用户指令或系统配置确定是否调用。
本公开实施提供一种计算机设备,包括处理器以及存储有可在处理器上运行的计算机程序的存储器,其中,所述处理器执行所述程序时实现上述任一实施例所述数据处理方法的步骤。
本公开实施例提供一种计算机可读存储介质,存储有程序指令,当该程序指令被执行时可实现上述任一实施例所述的数据处理方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (14)
1.一种数据处理方法,其特征在于,包括:
从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列;
监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列;
监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。
2.根据权利要求1所述的数据处理方法,其特征在于,一种处理结果对应一个结果消息队列。
3.根据权利要求1所述的数据处理方法,其特征在于,所述第一消息中包括所述数据的存储路径;所述结果消息中包括所述处理结果的存储路径。
4.根据权利要求1所述的数据处理方法,其特征在于,所述生成至少一种处理结果包括:生成概要结果数据和明细结果数据,所述概要结果数据的数据量小于所述明细结果数据的数据量;
所述结果消息队列包括第二消息队列和第三消息队列;
所述根据处理结果生成结果消息至所述处理结果对应的结果消息队列包括:
根据所述概要结果数据生成第二消息至第二消息队列,以及,根据所述明细结果数据生成第三消息至第三消息队列;
所述监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方包括:
监听所述第二消息队列,监听到所述第二消息队列中存在第二消息后,根据所述第二消息队列中的所述第二消息获取概要结果数据,发送所述概要结果数据至所述调用方;
以及,监听所述第三消息队列,监听到所述第三消息队列中存在第三消息后,根据第三消息队列中的所述第三消息获取明细结果数据,发送所述明细结果数据至所述调用方。
5.根据权利要求4所述的数据处理方法,其特征在于,所述数据包括产品需求信息和相关物料信息;
所述概要结果数据包括以下至少之一:所述产品的齐套数量、所述产品的需求数量与所述齐套数量之间差缺的数量;所述明细结果数据包括:所述产品的可能的物料配方。
6.根据权利要求1所述的数据处理方法,其特征在于,所述从调用方接收数据包括:
从所述调用方接收分包所得的数据包;
接收完同一批次数据的数据包后,将该批次数据的数据包合并生成数据文件,其中,一个批次数据为可以进行一次所述预设处理的数据;
所述根据所述数据生成第一消息发送至第一消息队列包括:将当前批次的数据的数据文件的存储路径发送至所述第一消息队列。
7.根据权利要求6所述的数据处理方法,其特征在于,所述从所述调用方接收数据包,接收完同一批次数据的数据包包括:
获取所述数据包中携带的批次信息和总包数,对接收到的批次信息相同且非重复的数据包进行计数,当计数值达到所述总包数时,确定接收完同一批次数据的数据包。
8.根据权利要求6所述的数据处理方法,其特征在于,所述发送所述处理结果至所述调用方包括:
将同一批次数据的同一种处理结果按预设大小拆分为数据包,发送拆分所得的所述数据包至所述调用方。
9.根据权利要求8所述的数据处理方法,其特征在于,所述处理结果包括概要结果数据和明细结果数据,所述方法还包括,发送拆分所得的所述数据包至所述调用方时,携带数据种类指示信息,指示所述数据包为概要结果数据或者明细结果数据。
10.根据权利要求1至9任一所述的数据处理方法,其特征在于,所述根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果包括:使用多进程分别从所述第一消息队列中的多个第一消息中获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果。
11.根据权利要求1至9任一所述的数据处理方法,其特征在于,所述从调用方接收数据,根据所述数据生成第一消息发送至第一消息队列包括:
接口应用服务从调用方接收数据,根据所述数据生成第一消息发送至消息中间件;所述消息中间件将所述第一消息发送给第一消息队列;
所述监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述处理结果对应的结果消息队列包括:
算法服务监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述消息中间件;所述消息中间件将所述结果消息发送至所述处理结果对应的结果消息队列;
所述监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方包括:
所述接口应用服务监听所述结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的所述结果消息获取处理结果,发送所述处理结果至所述调用方。
12.一种计算机设备,包括处理器以及存储有可在处理器上运行的计算机程序的存储器,其中,所述处理器执行所述程序时实现如权利要求1-11中任一项所述数据处理方法的步骤。
13.一种计算机可读存储介质,存储有程序指令,当该程序指令被执行时可实现权利要求1-11任一项所述的数据处理方法。
14.一种数据处理装置,其特征在于,包括:接口应用服务、消息中间件和算法服务,其中:
所述接口应用服务被配置为,从调用方接收数据,根据所述数据生成第一消息发送至消息中间件;以及,监听结果消息队列,监听到所述结果消息队列中存在结果消息后,根据所述结果消息队列的结果消息获取处理结果,发送所述处理结果至所述调用方;
所述算法服务被配置为,监听所述第一消息队列,监听到所述第一消息队列中存在第一消息后,根据所述第一消息队列中的所述第一消息获取所述数据,根据所述数据进行预设处理,生成至少一种处理结果,根据所述处理结果生成结果消息发送至所述消息中间件;
所述消息中间件被配置为,接收所述第一消息,将所述第一消息发送至第一消息队列;以及,接收所述结果消息,将所述结果消息发送至对应的结果消息队列。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891887.2A CN115220935A (zh) | 2022-07-27 | 2022-07-27 | 数据处理方法及装置、存储介质 |
PCT/CN2023/106367 WO2024022087A1 (zh) | 2022-07-27 | 2023-07-07 | 数据处理方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210891887.2A CN115220935A (zh) | 2022-07-27 | 2022-07-27 | 数据处理方法及装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115220935A true CN115220935A (zh) | 2022-10-21 |
Family
ID=83614140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210891887.2A Pending CN115220935A (zh) | 2022-07-27 | 2022-07-27 | 数据处理方法及装置、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115220935A (zh) |
WO (1) | WO2024022087A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115564317A (zh) * | 2022-12-01 | 2023-01-03 | 苏州慧工云信息科技有限公司 | 自动化物料供应管理方法、系统及存储介质 |
WO2024022087A1 (zh) * | 2022-07-27 | 2024-02-01 | 京东方科技集团股份有限公司 | 数据处理方法及装置、存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159520A (zh) * | 2007-10-29 | 2008-04-09 | 中兴通讯股份有限公司 | 数据传输方法 |
CN105450618B (zh) * | 2014-09-26 | 2019-06-04 | Tcl集团股份有限公司 | 一种api服务器处理大数据的运算方法及其系统 |
US9313154B1 (en) * | 2015-03-25 | 2016-04-12 | Snapchat, Inc. | Message queues for rapid re-hosting of client devices |
CN111222862A (zh) * | 2018-11-27 | 2020-06-02 | 北京京东金融科技控股有限公司 | 数据处理方法及系统、介质和计算机系统 |
CN114510299A (zh) * | 2020-11-16 | 2022-05-17 | 北京有限元科技有限公司 | 处理人工智能业务的方法、装置以及存储介质 |
CN115220935A (zh) * | 2022-07-27 | 2022-10-21 | 京东方科技集团股份有限公司 | 数据处理方法及装置、存储介质 |
-
2022
- 2022-07-27 CN CN202210891887.2A patent/CN115220935A/zh active Pending
-
2023
- 2023-07-07 WO PCT/CN2023/106367 patent/WO2024022087A1/zh unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024022087A1 (zh) * | 2022-07-27 | 2024-02-01 | 京东方科技集团股份有限公司 | 数据处理方法及装置、存储介质 |
CN115564317A (zh) * | 2022-12-01 | 2023-01-03 | 苏州慧工云信息科技有限公司 | 自动化物料供应管理方法、系统及存储介质 |
CN115564317B (zh) * | 2022-12-01 | 2023-04-18 | 苏州慧工云信息科技有限公司 | 自动化物料供应管理方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024022087A1 (zh) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115220935A (zh) | 数据处理方法及装置、存储介质 | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
CN112527525B (zh) | 基于消息队列的分布式事件总线处理方法、终端及介质 | |
US9888048B1 (en) | Supporting millions of parallel light weight data streams in a distributed system | |
US20130067024A1 (en) | Distributing multi-source push notifications to multiple targets | |
US7890955B2 (en) | Policy based message aggregation framework | |
US7921427B2 (en) | Method and system for processing messages in an application cluster | |
CN112583931B (zh) | 消息处理方法、消息中间件、电子设备和存储介质 | |
US20130067015A1 (en) | Counting and reseting broadcast system badge counters | |
US20130066980A1 (en) | Mapping raw event data to customized notifications | |
CN109254854A (zh) | 异步调用方法、计算机装置及存储介质 | |
CN113742109B (zh) | 第三方服务对接方法、装置、设备及存储介质 | |
CN115622906A (zh) | 一种应用日志抓取系统及方法 | |
CN110620722B (zh) | 一种订单处理的方法和装置 | |
CN113590354A (zh) | 基于区块链的信息推送方法、装置、设备、介质和程序产品 | |
EP3026860B1 (en) | Method and system for transmission management of full configuration synchronization between eml-nml | |
CN113342503A (zh) | 实时进度反馈方法、装置、设备及存储介质 | |
CN114610765B (zh) | 流计算方法、装置、设备及存储介质 | |
CN113645260A (zh) | 业务重试方法、装置、存储介质及电子设备 | |
EP1952318A1 (en) | Independent message stores and message transport agents | |
CN115934292A (zh) | 微服务应用的调用方法、装置及设备 | |
CN110011845A (zh) | 日志采集方法及系统 | |
CN115373886A (zh) | 服务群组容器停机方法、装置、计算机设备和存储介质 | |
CN112860770B (zh) | 报表生成的方法、装置、电子设备和存储介质 | |
CN113254097A (zh) | 配置信息的下发方法和装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |