web程序与R程序集成处理数据的方法和系统技术方案

技术编号:18350031 阅读:26 留言:0更新日期:2018-07-01 22:58
本申请公开了一种网络(web)程序和R程序集成处理数据的方法和系统,包括:在web程序与浏览器之间使用websocket建立长连接,该长连接用于传输该浏览器所请求的R程序的相关数据;在web程序通过websocket接收到来自浏览器的首个R计算请求后,选择一R程序,保存该web程序的标识、该websocket的标识以及该R程序的标识的对应关系,将所述R计算请求发送给该R程序计算;在web程序再次通过websocket接收到来自浏览器的R计算请求后,根据该web程序的标识和该websocket的标识确定对应的R程序的标识,将该R计算请求发送给该R程序进行计算。本发明专利技术可以降低web程序集成R程序时的故障率。

【技术实现步骤摘要】
web程序与R程序集成处理数据的方法和系统
本申请涉及领域,尤其涉及一种网络(web)程序与R程序集成处理数据的方法和系统。
技术介绍
R语言(简称R)是一种计算机语言,是由新西兰奥克兰大学RobertGentleman、RossIhaka以及其他志愿者开发的一套在数据分析领域广泛使用的软件系统。R语言通常作为桌面程序被数据分析师使用,常用于完成数据处理、数据分析、数据可视化等等工作。R语言本身是一套完备的软件系统,既包括R语言解释器、也包括一套完整的图形用户界面(GUI,GraphicalUserInterface)。如果需要扩展R语言的功能时,通常使用R语言本身或者其他语言如C\C++,来开发扩展功能被R语言所调用,其中R语言作为调用者。但是,由R语言编制的R程序是一个安装电脑上的桌面程序,传统的方法只能在本地电脑上安装R程序进行数据分析,不能远程操作R程序进行数据分析。但是随着大数据时代的来临,传统上由Java、.Net等语言开发的网络(Web)程序常常被要求实现一些数据分析、数据可视化功能。所述Web应用程序是一种可以通过Web访问的应用程序。如何将Java、.Net等传统语言开发的web程序与R程序集成起来,对R程序进行远程操作来进行数据分析,充分利用R程序的数据分析、数据可视化功能,是业界都在尝试的技术方向。目前将传统web程序与R程序集成的方法主要有以下三种现有技术:一、Shiny技术。Shiny是Rstudio公司推出的一个使用R语言开发Web应用的软件包,开发人员不用了解任何如Html、JavaScript、Css等Web开发知识,就能利用Shiny快速构建一个交互式的Web程序。在该现有技术中,程序都通过R语言开发,开发好的程序通过Shiny包支撑运行,但其缺点是只能在本地浏览器访问。从实现原理上讲,Shiny把交互部分的R函数内部转换成Html、JavaScript以及Css样式,在减轻Web开发工作量的同时,也限制了扩展开发功能,即不能由开发人员自定义页面开发,只能利用Shiny所提供的页面基础框架来开发。由于这些限制的存在,这种方法难以在正式的软件产品中应用,只是针对某个具体的功能,由数据分析师开发一个交互式的程序满足数据分析、可视化等需求。二、Rserve加Rsession技术。Rserve是一个基于Tcp/Ip协议,允许R语言与其他语言(如Java、C/C++等)进行通信的客户端/服务器(C/S)结构程序。Rserve提供远程连接、认证、文件传输等功能,可以使用Java、Php等语言开发Web程序,通过Rserve调用R完成数据分析、绘图等处理任务,Java可通过Rsession包与Rserver进行交互。三、Rcaller技术。Rcaller提供了Java进程内调用R语言的三个调用包,通过其中之一都可以完成Java调用R语言。Web程序可以采用java编码,而java再利用Rcaller调用R程序。现有技术的缺点主要有:如上所述,Shiny不适合开发软件产品,只适合开发一个临时性的交互系统;Rserve和Rcaller技术可以用来配合Java等语言调用R语言完成复杂的业务需求。但是还存在以下的技术问题:1)超文本传输协议(Http,HyperTextTransferProtocol)请求超时问题。使用R程序进行数据分析需要一定时间,从几秒、几分到数小时不等。如果运行web程序的浏览器端发起Http请求,经由Java等语言调用R程序,一旦R程序执行时间较长,那么在浏览器端将会出现Http请求超时异常的问题。2)无状态Web程序与有状态R程序的集成问题。对于大型的Web程序而言通常设计为多实例的无状态应用,而一般情况下R程序的计算时间比较长,为了保证系统的水平扩展,也应该部署R程序的多个R实例,所述的实例就是具体的执行程序,将不同请求转发到不同的R实例上计算,减少R实例的计算压力。但R程序的计算往往是有状态的,比如生成100个正态分布的随机数保存到列表中,根据计算要求返回其中第i(1≤i≤100)个随机数。假定有两个Http请求完成上述任务,第一个HTTP请求在R程序中生成了100个随机数,第二个HTTP请求取得第一个随机数,如果这个http请求被路由到其他R实例中,则取不到随机数,产生计算错误。总之,现有技术中web程序集成R程序的方式具有超时故障和计算故障等问题,故障率较高。
技术实现思路
有鉴于此,本专利技术的主要目的是提供一种web程序和R程序集成处理数据的方法,以降低web程序集成R程序时的故障率。本专利技术的技术方案是这样实现的:一种网络web程序和R程序集成处理数据的方法,包括:在web程序与浏览器之间使用websocket建立长连接,该长连接用于传输该浏览器所请求的R程序的相关数据;在web程序通过websocket接收到来自浏览器的首个R计算请求后,选择一R程序,保存该web程序的标识、该websocket的标识以及该R程序的标识的对应关系,将所述R计算请求发送给该R程序计算;在web程序再次通过websocket接收到来自浏览器的R计算请求后,根据该web程序的标识和该websocket的标识确定对应的R程序的标识,将该R计算请求发送给该R程序进行计算;在web程序收到R程序返回的相关数据后,根据该R程序的标识和该web程序的标识确定对应的websocket的标识,通过该websocket对应的长连接将所述相关数据返回给对应的浏览器。在本专利技术所述方法的一种优选实施例中,所述web程序的数量为二个以上,所述R程序的数量为二个以上。在本专利技术所述方法的一种优选实施例中,该方法进一步包括:在浏览器和web程序之间设置负载均衡器,浏览器的数据处理请求由该负载均衡器转发给web程序,其中:如果来自浏览器的数据处理请求为R计算请求,则选择一web程序,将该web程序与该浏览器绑定,该浏览器的R计算请求都转发给该绑定的web程序处理;如果来自浏览器的数据处理请求为非R计算请求,则将该数据处理请求随机转发给任一个web程序处理。在本专利技术所述方法的一种优选实施例中,该方法进一步包括:如果所述R计算请求包括绘图请求,则所述R程序在绘制好图形后,将图形文件存入到文件系统中,并将图形文件的存储地址通过web程序返回给浏览器,浏览器根据该存储地址获取所述图形文件。一种网络web程序和R程序集成处理数据的系统,包括:浏览器、web程序、和R程序;其中:所述web程序与浏览器之间使用websocket建立长连接,该长连接用于传输该浏览器所请求的R程序的相关数据;所述web程序用于通过websocket接收到来自浏览器的首个R计算请求后,选择一R程序,保存该web程序的标识、该websocket的标识以及该R程序的标识的对应关系,将所述R计算请求发送给该R程序计算;所述web程序还用于在web程序再次通过websocket接收到来自浏览器的R计算请求后,根据该web程序的标识和该websocket的标识确定对应的R程序的标识,将该R计算请求发送给该R程序进行计算;所述web程序还用于在web程序收到R程序返回的相关数据后,根据该R程序的标识和该web程序的标识确定对应的websocke本文档来自技高网
...
web程序与R程序集成处理数据的方法和系统

【技术保护点】
1.一种网络web程序和R程序集成处理数据的方法,其特征在于,包括:在web程序与浏览器之间使用websocket建立长连接,该长连接用于传输该浏览器所请求的R程序的相关数据;在web程序通过websocket接收到来自浏览器的首个R计算请求后,选择一R程序,保存该web程序的标识、该websocket的标识以及该R程序的标识的对应关系,将所述R计算请求发送给该R程序计算;在web程序再次通过websocket接收到来自浏览器的R计算请求后,根据该web程序的标识和该websocket的标识确定对应的R程序的标识,将该R计算请求发送给该R程序进行计算;在web程序收到R程序返回的相关数据后,根据该R程序的标识和该web程序的标识确定对应的websocket的标识,通过该websocket对应的长连接将所述相关数据返回给对应的浏览器。

【技术特征摘要】
1.一种网络web程序和R程序集成处理数据的方法,其特征在于,包括:在web程序与浏览器之间使用websocket建立长连接,该长连接用于传输该浏览器所请求的R程序的相关数据;在web程序通过websocket接收到来自浏览器的首个R计算请求后,选择一R程序,保存该web程序的标识、该websocket的标识以及该R程序的标识的对应关系,将所述R计算请求发送给该R程序计算;在web程序再次通过websocket接收到来自浏览器的R计算请求后,根据该web程序的标识和该websocket的标识确定对应的R程序的标识,将该R计算请求发送给该R程序进行计算;在web程序收到R程序返回的相关数据后,根据该R程序的标识和该web程序的标识确定对应的websocket的标识,通过该websocket对应的长连接将所述相关数据返回给对应的浏览器。2.根据权利要求1所述的方法,其特征在于,所述web程序的数量为二个以上,所述R程序的数量为二个以上。3.根据权利要求2所述的方法,其特征在于,该方法进一步包括:在浏览器和web程序之间设置负载均衡器,浏览器的数据处理请求由该负载均衡器转发给web程序,其中:如果来自浏览器的数据处理请求为R计算请求,则选择一web程序,将该web程序与该浏览器绑定,该浏览器的R计算请求都转发给该绑定的web程序处理;如果来自浏览器的数据处理请求为非R计算请求,则将该数据处理请求随机转发给任一个web程序处理。4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:如果所述R计算请求包括绘图请求,则所述R程序在绘制好图形后,将图形文件存入到文件系统中,并将图形文件的存储地址通过web程序返回给浏览器,浏览器根据该存储地址获取所述图形文件。5.一种网络web程序和R程序集成处理数据的系...

【专利技术属性】
技术研发人员:魏佳
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1