CN106648564A - 一种用于采集业务数据的方法和装置 - Google Patents
一种用于采集业务数据的方法和装置 Download PDFInfo
- Publication number
- CN106648564A CN106648564A CN201510727851.0A CN201510727851A CN106648564A CN 106648564 A CN106648564 A CN 106648564A CN 201510727851 A CN201510727851 A CN 201510727851A CN 106648564 A CN106648564 A CN 106648564A
- Authority
- CN
- China
- Prior art keywords
- service data
- code
- data acquisition
- acquisition function
- updated
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种用于采集业务数据的方法、一种用于采集业务数据的装置、以及一种用于采集业务数据的系统。所述方法包括以下步骤:获取更新了业务数据采集功能的代码;根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。该方法可以在不中断业务系统服务的情况下,随时按照业务的需要,自由地对业务的相关数据进行采集监控,不仅能够增加查找业务系统故障点的手段、提高解决业务系统存在问题的效率,而且可以达到进一步提升用户体验的效果。
Description
技术领域
本申请涉及数据采集领域,具体涉及一种用于采集业务数据的方法和装置。本申请还涉及一种用于采集业务数据的系统。
背景技术
业务数据采集和监控是对业务系统进行性能优化、或故障查找时普遍需要用到的技术手段。当由于故障或设计缺陷导致业务失败或性能低下时,业务数据的采集和监控能够帮助业务人员快速定位问题的位置,从而尽快解决问题,提高业务系统性能,改善用户体验。
现有的业务数据的采集监控通常依赖于业务系统开始运行前预先设计的业务数据采集监控方案,业务数据采集监控的数据源通常是采用硬编码方式预先设定的输出数据或数据库数据等。
采用上述数据采集监控方案的业务系统投入运行后,如果由于运行前设计时无法预知的原因导致业务的故障甚至失败、或性能不能达到预期时,则无法设置新的数据采集位置,也无法对没有包含在现有业务数据采集方案内的其他数据进行采集,也就无从发现导致故障、失败或性能达不到预期的原因。
在这种情况下,如果想要对数据采集位置进行变更或对采集的数据进行变更,则需要中断业务、并对业务系统的代码进行修改,例如,调整采集业务数据的位置或调整采集的业务数据,修改完毕再重新启动整个系统的运行。
显然,现有的业务数据采集方式,在数据采集需求发生变更时,处理效率低下,而且通常无法保证业务的连续性,影响用户的使用体验。
申请内容
本申请提供一种用于采集业务数据的方法,以解决现有技术在数据采集需求发生变更时,处理效率低下、无法保证业务的连续性、影响用户的使用体验的问题。此外,本申请还提供一种用于采集业务数据的装置、以及一种用于采集业务数据的系统。
本申请提供的一种用于采集业务数据的方法,包括以下步骤:
获取更新了业务数据采集功能的代码;
根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
可选地,所述获取更新了业务数据采集功能的代码,包括:
按照设定的时间间隔从配置服务器下载所述代码;或者,
接收配置服务器推送的所述代码。
可选地,所述业务数据采集功能包括,采集所述业务程序中的预设方法的以下原始业务数据之一或者任意组合:入口参数值、返回值、抛出的异常。
可选地,所述业务数据采集功能还包括:根据采集到的原始业务数据采用预设算法生成数据采集结果。
可选地,所述根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能包括:
与所述正在运行的业务程序建立通信通道;
通过所述通信通道执行所述更新操作。
可选地,所述正在运行的业务程序是采用Java编写的;
所述与所述正在运行的业务程序建立通信通道包括:利用JVM提供的attach功能,建立所述通信通道;
所述通过所述通信通道执行所述更新操作,包括:利用JVMTI提供的instrument机制,执行所述更新操作。
可选地,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java类文件;
所述通过所述通信通道执行所述更新操作,包括:用所述Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
可选地,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java源代码;
所述根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码以实现所述业务数据采集功能还包括:根据所述Java源代码生成Java类文件;
所述通过所述通信通道执行所述更新操作,包括:用所述生成的Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
可选地,所述根据所述Java源代码生成Java类文件包括:利用groovy脚本将所述Java源代码编译成Java类文件。
可选地,还包括以下步骤:
获取更新指令;
所述根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能包括:
按照更新指令的指示,根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
可选地,所述更新指令包括:待更新的正在运行的业务程序的相应代码的标识。
可选地,所述更新指令包括:预设的更新时间。
可选地,所述方法在提供物流服务的节点上实施,所述提供物流服务的节点包括:创建订单节点、发货节点、揽收节点、或者签收节点。
本申请提供的一种用于采集业务数据的装置,包括:
代码获取单元,用于获取更新了业务数据采集功能的代码;
代码更新单元,用于根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
可选地,所述代码获取单元,具体用于:
按照设定的时间间隔从配置服务器下载所述代码;或者,
接收配置服务器推送的所述代码。
可选地,所述代码更新单元,包括:
通道建立子单元,用于与正在运行的业务程序建立通信通道;
更新执行子单元,用于通过所述通信通道执行所述更新操作。
可选地,所述正在运行的业务程序是采用Java编写的;
所述通道建立子单元,具体用于利用JVM提供的attach功能,建立所述通信通道;
所述更新执行子单元,具体用于利用JVMTI提供的instrument机制,执行所述更新操作。
可选地,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java类文件;
所述更新执行子单元,具体用于用所述Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
可选地,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java源代码;所述更新单元还包括:
类文件生成子单元,用于将所述Java源代码生成Java类文件;
所述更新执行子单元,具体用于用所述生成的Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
可选地,还包括:
指令获取单元,用于获取更新指令;
所述代码更新单元,具体用于按照所述指令的指示,根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
可选地,该装置部署于用于提供物流服务的节点上,所述用于提供物流服务的节点包括:创建订单节点、发货节点、揽收节点、或者签收节点。
本申请提供的一种用于采集业务数据的系统,包括配置服务器和客户端,配置服务器和客户端之间通过网络相连;其特征在于,
所述配置服务器用于存储更新了业务数据采集功能的代码;
所述客户端用于从配置服务器获取更新了业务数据采集功能的代码,并根据所述代码更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
可选地,所述客户端具体用于按照设定的时间间隔,通过网络从配置服务器下载所述代码,并用所述代码更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
可选地,所述配置服务器还用于通过网络推送更新了业务数据采集功能的代码到所述客户端。
可选地,所述配置服务器还用于向客户端下达指令,指示客户端根据所述更新了业务数据采集功能的代码更新正在运行的业务程序的相应代码;
所述客户端还用于接收配置服务器下达的指令,并按照指令实现所述用更新了业务数据采集功能的代码更新正在运行的业务程序的相应代码的功能。
与现有技术相比,本申请具有以下优点:
本申请的技术方案针对运行中的业务系统,根据获取的更新了业务数据采集功能的代码更新正在运行的相应代码,以实现所述业务数据采集功能。
本申请的技术方案通过动态、实时地更新正在运行的业务程序的业务数据采集代码,从而在不中断业务系统服务的情况下,随时按照业务的需要,自由地对业务的相关数据进行采集监控。不仅能够增加查找业务系统故障点的手段、提高解决业务系统存在问题的效率,而且可以达到进一步提升用户体验的效果。
附图说明
图1是本申请的第一实施例提供的一种用于采集业务数据方法的流程示意图;
图2是本申请的第一实施例提供的一种用于采集业务数据方法的步骤S102的流程示意图;
图3是本申请的第一实施例提供的一种用于采集业务数据方法应用于物流服务系统的示意图;
图4是本申请的第二实施例提供的一种用于采集业务数据装置的结构框图;
图5是本申请的第三实施例提供的一种用于采集业务数据系统的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请的第一实施例,一种用于采集业务数据的方法的实施例,流程示意图如图1所示,所述方法包括以下步骤:
步骤S101,获取更新了业务数据采集功能的代码。
为了便于对业务处理过程进行监控,业务程序的代码中除了包含实现业务功能的代码,通常还包含实现业务数据采集功能的代码,系统维护人员可以根据业务数据采集需求的变化,更新这部分代码,从而生成所述更新了业务数据采集功能的代码。
本步骤的任务即为获取所述更新了业务数据采集功能的代码,其获取方式可以有多种,例如,系统维护人员可以将更新了业务数据采集功能的代码,复制到实施了本申请方法的业务节点上,那么本步骤可以通过读取本地存储的所述代码,从而获取更新了业务数据采集功能的代码。
考虑到在很多应用中,具备业务数据采集功能的业务节点可能有多个,为了减少系统维护人员的工作量,并且实现多业务节点的集中管理,本实施例提供从配置服务器获取所述代码的优选实施方式,即:由系统维护人员通过配置服务器的控制台或者其他人机交互界面,输入所述更新了业务数据采集功能的代码,并将所述代码存储在配置服务器上,实施了本申请所提供方法的业务节点可以通过如下所述的两种方式获取所述代码:
方式一,按照设定的时间间隔从配置服务器下载所述的更新了业务数据采集功能的代码。例如,按照设定的时间间隔访问配置服务器用于存放所述代码的目录,通过版本号等信息判断其中存放的所述代码是否被更新过,若更新过,则可以下载所述代码。
方式二,接收由配置服务器推送来的所述更新了业务数据采集功能的代码。例如,业务节点与配置服务器可以建立TCP长连接,当系统维护人员更新了业务数据采集功能的代码后,配置服务器可以主动将所述代码通过长连接推送给相应的业务节点。
所述更新了业务数据采集功能的代码,其实现的业务数据采集功能包括,对业务程序中的某个或者某些预设方法(也可以称为函数)的入口参数值,返回值,或程序执行异常时抛出的异常信息进行采集,采集得到的结果可以在显示设备上输出、存储在本地存储介质中、或者直接上传到用于对采集到的数据进行监控分析的服务端,从而为系统维护人员分析和查找问题提供帮助。
进一步地,在实现上述基本采集功能的基础上,所述代码实现的业务数据采集功能还可以包含根据采集到的原始数据,采用设定的算法生成特定格式的、或者内容更为丰富的业务相关数据作为采集结果,以便于与系统维护人员所采用的分析系统(例如日志分析系统)对接,从而便于更进一步地分析所述业务程序的运行状况、并解决可能存在的问题。
由此可见,本步骤获取的更新了业务数据采集功能的代码,其中不仅可以对业务数据采集点进行变更,而且可以对利用采集到的原始数据生成采集结果的算法进行变更,从而能够满足业务数据采集需求的多样化,灵活地实现各种所需的业务数据采集方案。
所述更新了业务数据采集功能的代码既可以是业务程序的源代码,也可以是源代码经过编译后生成的运行所需的代码(也可以称为目标代码)。例如,对于采用Java语言的业务程序来说,所述更新了业务数据采集功能的代码可以是Java源代码,这样有利于系统维护人员阅读、修改、管理业务数据采集功能;或者,所述更新了业务数据采集功能的代码还可以是Java源代码经过编译后产生的类文件,这样集中编译能够简化后续步骤,提高效率。
需要说明的是,在具体实施本方法时,在执行下述步骤S102之前,除了可以执行本步骤获取更新了业务数据采集功能的代码,还可以执行获取更新指令的操作,例如,可以从配置服务器获取更新正在运行的业务程序相应代码的指令。所述指令中可以包含待更新的业务程序相应代码的标识,用以指定待更新的业务程序的相应代码,例如对于采用Java编写的业务程序,所述标识可以是待更新的类名称,后续步骤S102则可以根据指定的类名称,执行相应的更新操作;此外,所述指令还可以包含预设的执行更新操作的时间,在这种情况下,可以在到达指定的时间点时,触发步骤S102的执行。采用上述获取更新指令的方式,可以灵活,方便地对步骤102执行的更新操作进行更为精细的控制,有助于实现更为完善的业务数据采集功能。
步骤S102,根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
本步骤的处理过程主要包括:与业务程序建立通信通道、通过通信通道实现用所述代码更新业务程序相应代码的功能。如果在步骤S101中获取的代码为源代码,则可以先通过编译等方式生成可用于替换的目标代码。下面以获取到的代码是源代码为例,对本步骤的处理过程作进一步说明。请参考附图2,所述处理过程包括步骤S102-1至步骤S102-3:
步骤S102-1,根据更新了业务数据采集功能的源代码生成运行所需的目标代码。
本步骤根据已获取的所述源代码动态生成目标代码,在具体实施中,可以利用与所述源代码对应的编译器或者目标代码生成工具实现所述功能。
对于获取的所述源代码是Java源代码的情况,可以采用多种方式实现根据Java源代码动态生成类文件的功能,例如:利用ASM字节码生成工具或者采用动态编译方式。在本实施例中为了对动态生成过程进行灵活控制,采用了利用groovy脚本进行编译的实施方式:通过执行预先编写的groovy脚本,将已获取的Java源代码编译为相应的class类文件。
采用获取源代码、并动态生成(例如通过编译)运行所需的目标代码的方式,可以灵活适应运行业务程序的系统平台版本的差异,而无需额外管理针对不同系统平台的不同代码版本。
步骤S102-2,与正在运行的业务程序建立通信通道。
本步骤与所述正在运行的业务程序建立通信通道,即提供与所述业务程序之间的通信机制,为后续步骤S102-3执行替换操作做准备。
以运行于Java虚拟机(JVM)上的业务程序为例,可以利用Java虚拟机提供的附着(attach)功能,使用com.sun.tools.attach包里面的attach方法,建立与虚拟机的通道,这样就与正在运行的业务程序建立了通信通道。
步骤S102-3,替换正在运行的业务程序的相应代码。
本步骤基于已建立的通信通道,采用业务程序或者承载业务程序的平台所支持的方式,用已生成的目标代码替换正在运行的业务程序的相应代码。
仍以运行于Java虚拟机上的业务程序为例,可以根据Instrument机制构建独立于业务程序的代理程序(Agent),并调用loadAgent方法,在系统运行过程中根据需要加载步骤S102-1生成的目标代码,即Java类文件所包含的类。
当业务程序即将加载与编译后的类文件的名称相同的类时,则会通过Instrument机制直接加载编译后的类文件所包含的类,而不再加载业务程序原有的与编译后的类文件名称相同的类,也即实现了用编译生成的类文件中的代码替换业务程序中的相应代码的功能,从而更新了相应的业务数据采集功能。
例如:系统维护人员针对业务程序中的Class A中的某个方法更新了业务数据采集功能,步骤S102-1将获取的更新了业务数据采集功能的Class A的源代码,编译得到新的A.class文件,那么当业务程序需要加载名称为A的类时,则会直接加载编译后生成的新的A.class类文件所包含的类,而不再加载业务程序原有的类A。
在具体实施时,为了增加上述替换过程的灵活性与可控性,如果在步骤102之前已经从更新指令中获取了待更新目标业务程序相应代码的标识,那么本步骤可以根据所述标识执行针对性的替换。仍以运行于Java虚拟机上的业务程序为例,所述标识可以为:所述业务程序中的待更新类的名称,当业务程序即将加载所述待更新类时,直接加载编译后的类文件所包含的类,而不再加载业务系统原有的、所述更新指令中所指定的待更新类。采用上述方式可以控制对JVM加载的任意类进行动态替换,从而增加实施本方法的灵活性。
通过上述步骤S102-1至S102-3,用所述的更新了业务数据采集功能的代码替换了正在运行的业务程序的相应代码,达到更新正在运行的业务程序的相应代码、以实现所述业务数据采集功能的目的。
需要说明的是,对于步骤S101获取到的代码不是源代码、而是运行所需的目标代码(例如编译后生成的类文件)的情况,可以通过与业务程序建立的通信通道,直接用该代码替换正在运行的业务程序的相应代码。这样无需生成目标代码,也即上述步骤中的S102-1无需执行,从而可以简化实施步骤,提高执行效率。
综上所述,本申请提供的技术方案通过动态、实时地更新正在运行的业务程序的业务数据采集代码,从而在不中断业务系统服务的情况下,随时按照业务的需要,自由地对业务的相关数据进行采集监控。不仅能够增加查找业务系统故障点的手段、提高解决业务系统存在问题的效率,而且可以达到进一步提升用户体验的效果。
在具体实施时,本申请提供的技术方案可以应用于需要动态更新业务数据采集功能的各业务领域中,下面以应用于物流服务履行系统为例作进一步说明。
在现实的物流服务履行过程中,如果按照现有通常的做法,对于线上系统众多的操作要做全链路的监控,首先需要对业务进行全面的梳理,然后对各个提供物流服务的节点通过编写硬代码的高耦合方式进行埋点,以输出可供监控的日志,如果出现业务分析不是很完善的情况,通常需要中断系统的运行,升级系统重新更新埋点,这种方式是非常低效的。在这种情况下,在提供物流服务的业务节点上采用本申请提供的用于采集业务数据的方法,则可以有效解决物流履行过程中存在的上述问题。
本申请所述的用于采集业务数据的方法,可以实施在提供物流服务的节点上,包括创建订单节点、发货节点、揽收节点、或者签收节点等。所述节点是指运行所述物流服务程序的设备(如计算机)。
以物流服务履行系统中的业务节点:发货节点为例,该发货节点运行基于Java虚拟机的发货业务程序,本申请提供的用于更新业务数据采集功能的方法,以独立的JVM进程的形式在该业务节点上实施,请参考图3。
运行于发货节点的发货业务程序中的class A中包括如下的发货方法:
发货(快递公司,发货地址){
发货逻辑
}
根据业务监控需求,需要统计一下不同的快递公司的运单量。以下为实施了本申请所述的用于采集业务数据的方法的发货节点所进行的操作:
从配置服务器获取到包含更新了发货方法的Java源代码,所述源代码中的类包含更新了的发货方法,所述更新了的发货方法为:
发货(快递公司,发货地址){
记录下使用了哪个快递公司
发货逻辑
}
从配置服务器获取到更新指令,所述更新指令指定了正在运行的发货业务程序中的待更新的class为class A。
使用Groovy脚本对所述包含更新了发货方法的Java源代码进行编译。
利用Java虚拟机工具接口JVMTI提供的attach功能,使用com.sun.tools.attach包里面的attach方法,建立与虚拟机的通道,这样就与正在运行的发货业务程序建立了通信通道。
使用Instrument机制,构建独立于发货业务程序的代理程序(Agent),即将所述编译了的代码属性设置为Agent-class,生成包含了所述编译了的代码的jar文件。
使用attach功能包的loadAgent方法,加载所述的jar文件,在发货业务程序运行过程中将所述的编译后的代码所包含的class(也即正在运行的发货业务程序的class A的代理class)加载。所述被加载的class中包含了更新了的发货方法。
至此,发货节点上运行的业务程序的class A中的发货方法增加了新的物流业务数据采集功能(即“记录下使用了哪个快递公司”功能)。
以上以Java语言实现的物流服务业务程序为例,说明了本申请的用于采集业务数据的方法在物流服务履行系统中的应用,对于其他语言所编写的业务系统,可以遵照相应的编程规则、按照本申请的方法更新业务数据采集功能。
由此可见,要实现物流服务履行全链路的监控,只需要在提供物流服务的各业务节点上实施本申请所述的用于采集业务数据的方法,就可以在不中断业务运行的情况下动态地进行监控点的变更、以及采集数据的变更,也可以动态地改变数据采集结果生成算法。并且能够采用统一的管理后台(如本实施例中的配置服务器)以便于维护。
在上述的实施例中,提供了一种用于采集业务数据的方法,与之相对应的,本申请第二实施例还提供一种用于采集业务数据的装置。请参看图4,其为本申请第二实施例,一种用于采集业务数据的装置的结构框图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
该装置包括代码获取单元U201和代码更新单元U202,所述
代码获取单元U201,用于获取更新了业务数据采集功能的代码。该单元具体用于按照设定的时间间隔从配置服务器下载所述代码;或者,接收配置服务器推送的所述代码。
代码更新单元U202,用于根据所述更新了业务数据采集功能的代码,更新正在运行的原业务程序的相应代码,以实现所述业务数据采集功能。
该单元可以包括通道建立子单元和更新执行子单元,其中通道建立子单元用于与正在运行的业务程序建立通信通道;更新执行子单元,用于通过所述通信通道执行所述更新操作。
对于运行的业务程序是采用Java编写的,所述通道建立子单元,具体用于利用JVM提供的attach功能,建立所述通信通道;所述更新执行子单元,具体用于利用JVMTI提供的instrument机制,执行所述更新操作。
对于所述更新了业务数据采集功能的代码为Java类文件的,所述更新执行子单元,具体用于用所述Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
对于所述更新了业务数据采集功能的代码为Java源代码的,所述更新单元还包括编译子单元,用于将所述Java源代码编译生成Java类文件;所述更新执行子单元,具体用于用所述编译生成的Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
本实施例的用于采集业务数据的装置,除了代码获取单元和代码更新单元以外,还包括一个指令获取单元,用于获取代码更新指令;所述代码更新单元,具体用于按照所述指令的指示,根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
本实施例的用于采集业务数据的装置可以部署于提供物流服务的节点上,所述提供物流服务的节点包括:创建订单节点、发货节点、揽收节点、或者签收节点。所述节点是指运行所述物流服务程序的设备(如计算机)。
本申请第三实施例提供一种用于采集业务数据的系统,其结构框图如图3所示,请参考图5,本实施例的一种用于采集业务数据的系统包括配置服务器N301,客户端一N302,客户端二N303,配置服务器N301和客户端一N302,客户端二N303之间通过网络N304相连接。
所述配置服务器N301用于存储更新了业务数据采集功能的代码;
所述客户端一N302和客户端二N303用于通过网络N304从配置服务器N301获取更新了业务数据采集功能的代码,并用所述代码更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
此外,所述客户端一N302和客户端二N303通过网络N304从配置服务器N301获取更新了业务数据采集功能的代码的方式包括:按照设定的时间间隔从配置服务器N301下载所述代码、或接收所述配置服务器N301通过网络N304推送的所述更新了业务数据采集功能的代码。
可选地,所述配置服务器N301可以向客户端一N302和客户端二N303下达指令,指示客户端一N302和客户端二N303根据所述更新了业务数据采集功能的代码更新正在运行的业务程序的相应代码。
上述一种用于采集业务数据的系统包括一个配置服务器和两个客户端,实际应用时,可以根据实际情况的需要,灵活设置系统内的配置服务器和客户端的数量。便于在多台设备(如计算机)或多个程序进程构成的业务系统内实现业务数据采集的集中管理,起到提高维护工作效率的效果。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (25)
1.一种用于采集业务数据的方法,其特征在于,包括以下步骤:
获取更新了业务数据采集功能的代码;
根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
2.根据权利要求1所述的用于采集业务数据的方法,其特征在于,所述获取更新了业务数据采集功能的代码,包括:
按照设定的时间间隔从配置服务器下载所述代码;或者,
接收配置服务器推送的所述代码。
3.根据权利要求1所述的用于采集业务数据的方法,其特征在于,所述业务数据采集功能包括,采集所述业务程序中的预设方法的以下原始业务数据之一或者任意组合:入口参数值、返回值、抛出的异常。
4.根据权利要求3所述的用于采集业务数据的方法,其特征在于,所述业务数据采集功能还包括:根据采集到的原始业务数据采用预设算法生成数据采集结果。
5.根据权利要求1所述的用于采集业务数据的方法,其特征在于,所述根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能包括:
与所述正在运行的业务程序建立通信通道;
通过所述通信通道执行所述更新操作。
6.根据权利要求5所述的用于采集业务数据的方法,其特征在于,所述正在运行的业务程序是采用Java编写的;
所述与所述正在运行的业务程序建立通信通道包括:利用JVM提供的attach功能,建立所述通信通道;
所述通过所述通信通道执行所述更新操作,包括:利用JVMTI提供的instrument机制,执行所述更新操作。
7.根据权利要求5所述的用于采集业务数据的方法,其特征在于,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java类文件;
所述通过所述通信通道执行所述更新操作,包括:用所述Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
8.根据权利要求5所述的用于采集业务数据的方法,其特征在于,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java源代码;
所述根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码以实现所述业务数据采集功能还包括:根据所述Java源代码生成Java类文件;
所述通过所述通信通道执行所述更新操作,包括:用所述生成的Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
9.根据权利要求8所述的用于采集业务数据的方法,其特征在于,所述根据所述Java源代码生成Java类文件包括:利用groovy脚本将所述Java源代码编译成Java类文件。
10.根据权利要求1所述的用于采集业务数据的方法,其特征在于,还包括以下步骤:
获取更新指令;
所述根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能包括:
按照更新指令的指示,根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
11.根据权利要求10所述的用于采集业务数据的方法,其特征在于,所述更新指令包括:待更新的正在运行的业务程序的相应代码的标识。
12.根据权利要求10所述的用于采集业务数据的方法,其特征在于,所述更新指令包括:预设的更新时间。
13.根据权利要求1-12任一项所述的用于采集业务数据的方法,其特征在于,所述方法在提供物流服务的节点上实施,所述提供物流服务的节点包括:创建订单节点、发货节点、揽收节点、或者签收节点。
14.一种用于采集业务数据的装置,包括:
代码获取单元,用于获取更新了业务数据采集功能的代码;
代码更新单元,用于根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
15.根据权利要求14所述的用于采集业务数据的装置,特征在于,所述代码获取单元,具体用于:
按照设定的时间间隔从配置服务器下载所述代码;或者,
接收配置服务器推送的所述代码。
16.根据权利要求14所述的用于采集业务数据的装置,特征在于,所述代码更新单元,包括:
通道建立子单元,用于与正在运行的业务程序建立通信通道;
更新执行子单元,用于通过所述通信通道执行所述更新操作。
17.根据权利要求16所述的用于采集业务数据的装置,特征在于,所述正在运行的业务程序是采用Java编写的;
所述通道建立子单元,具体用于利用JVM提供的attach功能,建立所述通信通道;
所述更新执行子单元,具体用于利用JVMTI提供的instrument机制,执行所述更新操作。
18.根据权利要求16所述的用于采集业务数据的装置,特征在于,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java类文件;
所述更新执行子单元,具体用于用所述Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
19.根据权利要求16所述的用于采集业务数据的装置,特征在于,所述正在运行的业务程序是采用Java编写的,所述更新了业务数据采集功能的代码包括:更新了业务数据采集功能的Java源代码;所述更新单元还包括:
类文件生成子单元,用于将所述Java源代码生成Java类文件;
所述更新执行子单元,具体用于用所述生成的Java类文件所包含的类替换所述正在运行的业务程序的相应Java类。
20.根据权利要求14所述的用于采集业务数据的装置,其特征在于,还包括:
指令获取单元,用于获取更新指令;
所述代码更新单元,具体用于按照所述指令的指示,根据所述更新了业务数据采集功能的代码,更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
21.根据权利要求14-20任一项所述的用于采集业务数据的装置,特征在于,该装置部署于用于提供物流服务的节点上,所述用于提供物流服务的节点包括:创建订单节点、发货节点、揽收节点、或者签收节点。
22.一种用于采集业务数据的系统,包括配置服务器和客户端,配置服务器和客户端之间通过网络相连;其特征在于,
所述配置服务器用于存储更新了业务数据采集功能的代码;
所述客户端用于从配置服务器获取更新了业务数据采集功能的代码,并根据所述代码更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
23.根据权利要求22所述的用于采集业务数据的系统,其特征在于,所述客户端具体用于按照设定的时间间隔,通过网络从配置服务器下载所述代码,并用所述代码更新正在运行的业务程序的相应代码,以实现所述业务数据采集功能。
24.根据权利要求22所述的用于采集业务数据的系统,其特征在于,所述配置服务器还用于通过网络推送更新了业务数据采集功能的代码到所述客户端。
25.根据权利要求22所述的用于采集业务数据的系统,其特征在于,
所述配置服务器还用于向客户端下达指令,指示客户端根据所述更新了业务数据采集功能的代码更新正在运行的业务程序的相应代码;
所述客户端还用于接收配置服务器下达的指令,并按照指令实现所述用更新了业务数据采集功能的代码更新正在运行的业务程序的相应代码的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727851.0A CN106648564A (zh) | 2015-10-30 | 2015-10-30 | 一种用于采集业务数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727851.0A CN106648564A (zh) | 2015-10-30 | 2015-10-30 | 一种用于采集业务数据的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106648564A true CN106648564A (zh) | 2017-05-10 |
Family
ID=58810986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510727851.0A Pending CN106648564A (zh) | 2015-10-30 | 2015-10-30 | 一种用于采集业务数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106648564A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977243A (zh) * | 2017-11-27 | 2018-05-01 | 海尔优家智能科技(北京)有限公司 | 一种第三方接口调用方法及装置 |
CN109144834A (zh) * | 2017-06-27 | 2019-01-04 | 深圳市Tcl高新技术开发有限公司 | 用户行为数据的采集方法及装置、安卓系统及终端设备 |
CN109388536A (zh) * | 2017-08-07 | 2019-02-26 | 北京京东尚科信息技术有限公司 | 一种数据收集的方法和装置 |
CN109542739A (zh) * | 2017-09-21 | 2019-03-29 | Tcl集团股份有限公司 | 一种用户行为数据采集的优化方法、装置及设备 |
CN109672580A (zh) * | 2018-09-21 | 2019-04-23 | 平安科技(深圳)有限公司 | 全链路监控方法、装置、终端设备及存储介质 |
CN111538483A (zh) * | 2020-03-25 | 2020-08-14 | 平安科技(深圳)有限公司 | 一种数据处理方法、设备、服务器及可读存储介质 |
CN111782534A (zh) * | 2020-07-03 | 2020-10-16 | 普信恒业科技发展(北京)有限公司 | 一种业务流程的监控方法、装置及系统 |
CN112199110A (zh) * | 2020-10-16 | 2021-01-08 | 上海睿成软件有限公司 | 一种免重启运维升级方法、系统、装置和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771762A (zh) * | 2009-01-06 | 2010-07-07 | 北京邮电大学 | 业务系统中业务动态加载系统及方法 |
CN101969617A (zh) * | 2010-10-13 | 2011-02-09 | 中兴通讯股份有限公司 | 一种java应用的方法及系统 |
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN103399908A (zh) * | 2013-07-30 | 2013-11-20 | 北京北纬通信科技股份有限公司 | 业务数据抓取方法和系统 |
-
2015
- 2015-10-30 CN CN201510727851.0A patent/CN106648564A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771762A (zh) * | 2009-01-06 | 2010-07-07 | 北京邮电大学 | 业务系统中业务动态加载系统及方法 |
CN101969617A (zh) * | 2010-10-13 | 2011-02-09 | 中兴通讯股份有限公司 | 一种java应用的方法及系统 |
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN103399908A (zh) * | 2013-07-30 | 2013-11-20 | 北京北纬通信科技股份有限公司 | 业务数据抓取方法和系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144834A (zh) * | 2017-06-27 | 2019-01-04 | 深圳市Tcl高新技术开发有限公司 | 用户行为数据的采集方法及装置、安卓系统及终端设备 |
CN109144834B (zh) * | 2017-06-27 | 2021-11-23 | 深圳市Tcl高新技术开发有限公司 | 用户行为数据的采集方法及装置、安卓系统及终端设备 |
CN109388536A (zh) * | 2017-08-07 | 2019-02-26 | 北京京东尚科信息技术有限公司 | 一种数据收集的方法和装置 |
CN109388536B (zh) * | 2017-08-07 | 2022-06-07 | 北京京东尚科信息技术有限公司 | 一种数据收集的方法和装置 |
CN109542739A (zh) * | 2017-09-21 | 2019-03-29 | Tcl集团股份有限公司 | 一种用户行为数据采集的优化方法、装置及设备 |
CN107977243A (zh) * | 2017-11-27 | 2018-05-01 | 海尔优家智能科技(北京)有限公司 | 一种第三方接口调用方法及装置 |
CN109672580A (zh) * | 2018-09-21 | 2019-04-23 | 平安科技(深圳)有限公司 | 全链路监控方法、装置、终端设备及存储介质 |
CN109672580B (zh) * | 2018-09-21 | 2022-01-18 | 平安科技(深圳)有限公司 | 全链路监控方法、装置、终端设备及存储介质 |
CN111538483A (zh) * | 2020-03-25 | 2020-08-14 | 平安科技(深圳)有限公司 | 一种数据处理方法、设备、服务器及可读存储介质 |
CN111538483B (zh) * | 2020-03-25 | 2024-05-28 | 平安科技(深圳)有限公司 | 一种数据处理方法、设备、服务器及可读存储介质 |
CN111782534A (zh) * | 2020-07-03 | 2020-10-16 | 普信恒业科技发展(北京)有限公司 | 一种业务流程的监控方法、装置及系统 |
CN112199110A (zh) * | 2020-10-16 | 2021-01-08 | 上海睿成软件有限公司 | 一种免重启运维升级方法、系统、装置和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106648564A (zh) | 一种用于采集业务数据的方法和装置 | |
CN103617037B (zh) | 用于web开发系统的开发方法和web开发系统 | |
CN103069385B (zh) | 用于动态加载基于图的计算的系统和方法 | |
US8930899B2 (en) | Artifact divider for large scale application builds | |
CN103473108A (zh) | 一种Java代码生成方法 | |
CN106611345A (zh) | 一种采集用户行为数据的方法及装置 | |
WO2016005898A1 (en) | Method for processing data quality exceptions in data processing system | |
CN106528071B (zh) | 目标代码的选取方法及装置 | |
CN103744647A (zh) | 一种基于工作流GPD的Java工作流开发系统及其方法 | |
CN102393860A (zh) | 数据库数据迁移系统 | |
CN106815027A (zh) | 一种用于电网多维业务复合计算的高弹性计算平台 | |
CN103984554B (zh) | 软件设计文档的生成方法及装置 | |
CN109726038A (zh) | 用于管理虚拟机的方法和设备 | |
CN111158743A (zh) | 大数据运维管理平台 | |
CN113031944A (zh) | 基于模板的业务开通装置及方法 | |
Van Der Burg et al. | Software deployment in a dynamic cloud: From device to service orientation in a hospital environment | |
CN106708906A (zh) | 一种数据库数据迁移系统 | |
US10657476B2 (en) | Just in time compilation (JIT) for business process execution | |
EP2738674A1 (en) | Deployment of complex objects of memory database systems | |
CN115292169A (zh) | 一种ui自动化测试方法及系统 | |
Tragatschnig et al. | Runtime process adaptation for bpel process execution engines | |
JP7331715B2 (ja) | 工業制御システムについてのエンジニアリングデータを作成する方法およびシステム | |
CN107784488A (zh) | 一种松散耦合的业务流程管理系统 | |
CN105393216B (zh) | 运行时内存调节 | |
TWI530873B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180419 Address after: Four story 847 mailbox of the capital mansion of Cayman Islands, Cayman Islands, Cayman Applicant after: CAINIAO SMART LOGISTICS HOLDING Ltd. Address before: Cayman Islands Grand Cayman capital building a four storey No. 847 mailbox Applicant before: ALIBABA GROUP HOLDING Ltd. |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170510 |
|
RJ01 | Rejection of invention patent application after publication |