本发明属于数据处理,具体涉及一种基于nashorn的数据高效解析处理方法和装置。
背景技术:
1、中国各大区的云电脑用户在进行云电脑的相关附加功能申请、私有云部署需求收集、云电脑产品需求建议等业务申请时,会在翼飞低代码平台产生线上业务数据。而处理业务的工作人员,则需要进入内部工单系统,才能进行功能开通和具体的业务处理。因此,翼飞需要实时、高效地通过接口方式把业务数据发送到工单系统中。
2、而常规的数据平台使用rhino引擎来处理业务数据中的js代码。如附图1所示,rhino直接使用java写的字节码解释器来解释执行javascript,达到数据处理的效果。然而,rhino做的优化不够多,而且javascript的语义也远比java动态。所以在rhino上运行javascript的性能仍然无法跟java的性能比。总体来说,rhino存在运行效率低、速度慢、延时高、灵活性低、扩展性差等问题。无法满足大规模业务数据产生的应用场景。
技术实现思路
1、本发明实施例的目的是提供一种基于nashorn的数据高效解析处理的方法和装置,能够解决目前数据平台使用rhino引擎来处理业务数据中运行效率低、速度慢、延时高、灵活性低、扩展性差,无法满足大规模业务数据产生的应用场景等问题。
2、为了解决上述技术问题,本发明是这样实现的:
3、第一方面,本发明实施例提供了一种基于nashorn的数据高效解析处理方法,包括:
4、获取第一输入,在activiti引擎中创建一个流程实例;
5、在所述流程实例中创建异步线程,并在所述异步线程中启动nashorn引擎;
6、在所述nashorn引擎中创建nashorn沙箱工厂;
7、获取js代码,并在所述nashorn沙箱工厂中处理所述代码数据;
8、输出所述代码数据,返回给activiti引擎,并通过httpclient进行通信。
9、可选地,所述获取第一输入包括:在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。
10、可选地,所述nashorn引擎可在java代码和javascript之间进行全双工通信。
11、可选地,所述获取js代码,并在所述nashorn沙箱工厂中处理所述代码数据,具体包括:
12、获取nashorn沙箱资源;
13、通过引擎调用系统和io操作,获取所述activiti引擎中的api接口以及所述js代码;
14、将所述js代码通过编译器转换为java字节码;
15、将所述java字节码通过jvm加载和执行后输出所述代码数据。
16、可选地,所述将所述js代码通过编译器转换为java字节码,具体包括:
17、使用所述编译器,并调用相关js库和js的标准语法;
18、将所述javascript代码输入到所述编译器中,并编译成所述java字节码。
19、可选地,所述编译成所述java字节码,具体包括:通过compilationphase语句对所述javascript代码进行编译,并获得所述java字节码。
20、可选地,所述将所述java字节码通过jvm加载和执行,具体包括:通过jvm底层invokedynamic命令执行java字节码。
21、可选地,所述输出所述代码数据,返回给activiti引擎,并通过httpclient进行通信,具体包括:
22、将所述代码数据返回给所述activiti引擎的主线程并保存;
23、通过所述httpclient进行网络通信请求;
24、将所述代码数据通过目标api接口发送至目标系统。
25、第二方面,本发明实施例提供了一种基于nashorn的数据高效解析处理装置,包括:
26、第一获取单元,用于获取第一输入,在activiti引擎中创建一个流程实例;
27、创建单元,用于在所述流程实例中创建异步线程,并在所述异步线程中启动nashorn引擎;
28、第二获取单元,用于在所述nashorn引擎中创建nashorn沙箱工厂;
29、第三获取单元,用于获取js代码,并在所述nashorn沙箱工厂中处理所述代码数据;
30、输出单元,用于输出所述代码数据,返回给activiti引擎,并通过httpclient进行通信。
31、可选地,所述第一获取单元还用于在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。
32、在本发明实施例中,使用nashorn引擎去替代rhino,通过引擎调用系统和io操作,使用相关js库和js的标准语法,将javascript编译成java字节码,并交由jvm底层的invokedynamic执行指定的js代码。从而满足大规模业务数据产生时,数据处理与发送的高效性、实时性、稳定性、准确性要求较高的应用场景。提升数据平台的整体运行速度和扩展性。
1.一种基于nashorn的数据高效解析处理方法,其特征在于,包括:
2.根据权利要求1所述的数据高效解析处理方法,其特征在于,所述获取第一输入包括:在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。
3.根据权利要求2所述的数据高效解析处理方法,其特征在于,所述nashorn引擎可在java代码和javascript之间进行全双工通信。
4.根据权利要求1所述的数据高效解析处理方法,其特征在于,所述获取js代码,并在所述nashorn沙箱工厂中处理所述代码数据,具体包括:
5.根据权利要求4所述的数据高效解析处理方法,其特征在于,所述将所述js代码通过编译器转换为java字节码,具体包括:
6.根据权利要求5所述的数据高效解析处理方法,其特征在于,所述编译成所述java字节码,具体包括:通过compilationphase语句对所述javascript代码进行编译,并获得所述java字节码。
7.根据权利要求4所述的数据高效解析处理方法,其特征在于,所述将所述java字节码通过jvm加载和执行,具体包括:通过jvm底层invokedynamic命令执行java字节码。
8.根据权利要求1所述的数据高效解析处理方法,其特征在于,所述输出所述代码数据,返回给activiti引擎,并通过httpclient进行通信,具体包括:
9.一种基于nashorn的数据高效解析处理装置,其特征在于,包括:
10.根据权利要求9所述的数据高效解析处理方法,其特征在于,所述第一获取单元还用于在云桌面用户进行云电脑附加功能申请的情况下,获取通过翼飞低平台发起的工单数据。