本发明专利技术适用于办公软件领域,提供了一种PaaS与Erlang?App应用引擎架构执行流程,该流程包括:客户端采用Javascript中Ajax方式发起长拉请求到服务端,参数经过服务端语义解析模块连接到Erlang并发模型;Erlang并发模型引入Erlang?OTP框架,获取被分配资源ID,将获取的资源ID注册到系统公共组件模块中去;等待系统消息传递模型发送返回结果,当接收到的返回结果为正常响应消息时,会通过语义解析模块将结果返回到前端客户端。本发明专利技术具有整合HTTP与SOCKET方式的优点。
【技术实现步骤摘要】
一种PaaS与ErlangApp应用引擎架构执行流程
本专利技术属于办公软件领域,尤其涉及一种PaaS与ErlangApp应用引擎架构执行流程。
技术介绍
目前市场上针对PaaS下APP应用架构主要采用HTTP和Socket2种方式进行通讯,分别处理长短连接,但是没有一套方案是整合了2者的优点并融入到APP实际应用中去,具体缺陷如下:HTTP方式:(1)基于B/S开发的程序,大部分采用浏览器和服务端的结构,浏览器方面如果不采用插件方式,不能实现实时消息通讯和交互,简单来说无法实现服务器推送数据到浏览器。(2)采用HTML方式开发的程序实现消息实时通讯,只能采用Ajax轮询访问服务端的方式,这样方式在即时性上是根据请求服务器的时间粒度来保障,对服务器IO和压力造成极大负担,资源消耗严重。(3)由于应用的复杂性和现有市面上大部分浏览器的解析标准,大量短请求会造成浏览器JavaScript解析器崩溃,占用大量客户端资源。(4)由于大量前端短连接导致事件处理管理困难。(5)应用服务器只能采用HTTPweb服务器或者WebService,无法实现高并发IO处理,无法高效对线程进行管理,对于快速开发实现难度大。(6)技术限制导致开发应用局限度高,无法实现类似MMORPG(多人在线游戏)这样的复杂场景。SOCKET方式:(1)客户端必须安装插件,例如:Flash/Flex、JavaSwing、Unity3D等,对于用户首次UE(用户体验)来讲体验差。(2)跨平台能力差,在一些PAD端、移动端、虚拟终端中的浏览器无法识别支持SOCKET连接的插件。(3)单台服务器负载IO压力大,例如:标准DELLR410(双核4G内存)支持的最大连接量在4000上下幅度,其中不包括任何业务数据在里面。(4)实现复杂分布式线程管理难度高,开发周期长,人员技能专业性需求高,在整合行业内尚无较好整合APP的框架。(5)采用C++、Java开发的服务器主要面向业务,无法面向并发编程。采用Erlang、GoLang开发的服务器主要面向并发处理,支持逻辑运算能力较差,目前没有一套方案可以高效的整合2者。在实现现有技术的技术方案中,发现现有技术存在如下技术问题:目前行业内没有一套高效的方案来整合HTTP与SOCKET方式下APP存在的上述问题,对于行业内大部分公司实现实时交互APP而言,要不舍弃部分业务和用户体验,要不牺牲服务器、带宽等资源,除了这2种方式,目前尚无存在其他更好的架构模型。
技术实现思路
本专利技术实施例的目的在于提供一种PaaS与ErlangApp应用引擎架构执行流程,旨在解决现有技术中无法整合HTTP与SOCKET方式下APP存在的问题。一方面,提供一种PaaS与ErlangApp应用引擎架构执行流程,所述流程包括:客户端采用Javascript中Ajax方式发起长拉请求到服务端,参数经过服务端语义解析模块连接到Erlang并发模型;Erlang并发模型引入ErlangOTP框架,获取被分配资源ID,将获取的资源ID注册到系统公共组件模块中去;等待系统消息传递模型发送返回结果,当接收到的返回结果为正常响应消息时,会通过语义解析模块将结果返回到前端客户端;当接收到的返回结果为异常响应消息后,会重新引入ErlangOTP框架,获取被分配资源ID,重新将分配资源ID中注册到系统公共组件模块中去,然后重新执行返回结果操作;如果没有消息被接收,当前线程会被Erlang并发模型托管接收进入线程休眠状态,直到有消息更新。可选的,所述流程在客户端采用Javascript中Ajax方式发起长拉请求到服务端之前还包括:当客户端被启动时候,Javascript脚本会启动前端监控重启模块,并初始化Ajax请求器,Ajax请求器会发出客户端请求给服务端,并接收服务器返回的消息,通过前端消息字典解析消息内容,并循环执行;所述监控重启模块,用于保证Ajax请求器有且仅有一个请求被发出。可选的,所述Ajax请求器会发出客户端请求给服务端具体包括:Ajax请求器发送Json格式数据给服务端语义解析模块以使语义解析模块会根据参数字典解析Json格式,并将Json数据转换成Bit宏数据。可选的,所述ErlangOTP框架包括:压力监控引擎和调用线程复用引擎;其中,所述压力监控引擎,用于主动触发检测;所述线程复用引擎,用于优先根据不同服务器的空闲资源搜索线程池以定位要申请的线程资源ID,匹配到合适线程资源后,根据客户端请求类型判断是否搜索缓存服务器加载已存在的业务逻辑处理结果,如果选择不加载,会从PaaS平台提供的业务逻辑复用队列里选择要执行的逻辑程序类型。可选的,所述PaaS与ErlangApp应用引擎构架还包括:消息机制架构体系:所述消息机制架构体系,用于将所有的消息都会汇总到线程状态模块,然后通过线程状态模块通知LongPolling控制器进行托管操作。可选的,所述PaaS与ErlangApp应用引擎构架还包括:被架设在线程池后面的缓存服务器,用于对于程序逻辑脚本结果的缓存。可选的,LongPolling控制器,用于存储接收到Erlang并发模型通过ErlangOTP框架传回来的线程元数据和线程标识符。在本专利技术实施例中,本专利技术提供的技术方案是专门针对PaaS下要求即时性、强交互、HTML轻量无插件化、开发难度小、周期短、低成本、高并发、系统健壮成熟的APP架构体系解决方案。整体实现了现在互联网和传统软件所不能解决的PaaS平台无插件,高即时性问题。它更适用于现代PaaS应用的需要。所以其具有整合HTTP与SOCKET方式的优点。附图简要说明图1是本专利技术提供的PaaS与ErlangApp应用引擎架构执行流程图;图2是本专利技术提供的客户端LongPolling发送机制逻辑交互图;图3是本专利技术提供的线程控制与逻辑处理交互图;图4是本专利技术提供的服务端消息机制图;图5是本专利技术提供的PaaS与ErlangApp应用引擎架构具体执行流程图。实施本专利技术的方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术具体实施方式提供一种PaaS与ErlangApp应用引擎架构执行流程,该流程如图1所示,包括:101、客户端采用Javascript中Ajax方式发起长拉请求到服务端,参数经过服务端语义解析模块连接到Erlang并发模型;102、Erlang并发模型引入ErlangOTP框架,获取被分配资源ID,将获取的资源ID注册到系统公共组件模块中去;103、等待系统消息传递模型发送返回结果,当接收到的返回结果为正常响应消息时,会通过语义解析模块将结果返回到前端客户端;当接收到的返回结果为异常响应消息后,会重新引入ErlangOTP框架,获取被分配资源ID,重新将分配资源ID中注册到系统公共组件模块中去,然后重新执行返回结果操作(即重新走一遍之前流程);如果没有消息被接收,当前线程会被Erlang并发模型托管接收进入线程休眠状态,直到有消息更新。本专利技术提供的方法提供了一套对于LongPolling的高性能,低成本解决方案,采用了针对线程托管控制方式的,目前行业内本文档来自技高网...
【技术保护点】
一种PaaS与Erlang?App应用引擎架构执行流程,其特征在于,所述流程包括:客户端采用Javascript中Ajax方式发起长拉请求到服务端,参数经过服务端语义解析模块连接到Erlang并发模型;Erlang并发模型引入Erlang?OTP框架,获取被分配资源ID,将获取的资源ID注册到系统公共组件模块中去;等待系统消息传递模型发送返回结果,当接收到的返回结果为正常响应消息时,会通过语义解析模块将结果返回到前端客户端;当接收到的返回结果为异常响应消息后,会重新引入Erlang?OTP框架,获取被分配资源ID,重新将分配资源ID中注册到系统公共组件模块中去,然后重新执行返回结果操作;如果没有消息被接收,当前线程会被Erlang并发模型托管接收进入线程休眠状态,直到有消息更新。
【技术特征摘要】
1.一种PaaS与ErlangApp应用引擎架构执行流程,其特征在于,所述流程包括:客户端采用Javascript中Ajax方式发起长拉请求到服务端,参数经过服务端语义解析模块连接到Erlang并发模型;Erlang并发模型引入ErlangOTP框架,获取被分配资源ID,将获取的资源ID注册到系统公共组件模块中去;等待系统消息传递模型发送返回结果,当接收到的返回结果为正常响应消息时,会通过语义解析模块将结果返回到前端客户端;当接收到的返回结果为异常响应消息后,会重新引入ErlangOTP框架,获取被分配资源ID,重新将被分配资源ID注册到系统公共组件模块中去,然后重新执行返回结果操作;如果没有消息被接收,当前线程会被Erlang并发模型托管接收进入线程休眠状态,直到有消息更新;所述ErlangOTP框架包括:压力监控引擎和线程复用引擎;其中,所述压力监控引擎,用于主动触发检测;所述线程复用引擎,用于优先根据不同服务器的空闲资源搜索线程池以定位要申请的线程资源ID,匹配到合适线程资源后,根据客户端请求类型判断是否搜索缓存服务器加载已存在的业务逻辑处理结果,如果选择不加载,会从PaaS平台提供的业务逻辑复用队列里选择要执行的逻辑程序类型。2.根据权利要求1所述的流程,其特征在于,所述流程在客户端采用J...
【专利技术属性】
技术研发人员:马太航,
申请(专利权)人:用友软件股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。