一种采用Node.js构建智慧灌区e平台路由层方法
文献发布时间:2023-06-19 12:05:39
技术领域
本发明属于通信技术领域,尤其涉及一种采用Node.js构建智慧灌区e平台路由层方法。
背景技术
现有的灌区平台采用的是传统的三层全栈式架构模式,即表现层、业务层、数据层,这样的模式好处是开发方便,对技术人员要求不高,但也存在着诸多的问题,如:前后端程序耦合度强,系统变更升级困难,无法实现模块的动态装配,负载均衡能力弱,无法处理大并发量访问,尤其是在互联网、云技术高速发展的今天,这样的架构模式无法适应大集中式云端部署的需求。
发明内容
为了解决上述技术问题,本发明提供了一种采用Node.js构建智慧灌区e平台路由层方法。
本发明具体技术方案如下:
一种采用Node.js构建智慧灌区e平台路由层方法,该方法包括如下步骤:
S1:接收应用层发起的事件请求,通过V8引擎将请求编译成供CPU执行的机器码;
S2:由Node.js的Bingding模块将编译好的机器码交给事件驱动模块处理,将处理结果发送至V8引擎;
S3:V8引擎将接收的处理结果进行反编译,再将反编译结果发送至应用层;
其中,步骤S2包括如下步骤:
S21:Bingding模块将接收到的机器码放入事件队列中;
S22:执行模块将事件队列中的机器码交由工作线程异步调用服务层,将处理结果返回至Bingding模块;
S23:执行模块将事件队列发送的处理结果返回给V8引擎。
本发明还提供了一种智慧灌区e平台,所述智慧灌区e平台包括应用层、路由层、服务层和数据层,所述应用层用于向所述路由层发送用户请求和接收所述路由层的处理结果,所述路由层用于接收所述应用层发送的用户请求、向所述应用层发送处理结果和异步调用服务层,所述服务层用于反馈所述路由层的调用和访问所述数据层,所述数据层用于存储所有数据,并接收和响应服务层的请求。
其中,所述路由层的构建方法包括如下步骤:
S1:路由层接收应用层发起的请求,通过V8引擎将所述请求编译成供CPU执行的机器码;
S2:由Node.js的Bingding模块将编译好的机器码交给事件驱动模块处理,将处理结果发送至V8引擎;
S3:V8引擎将接收的处理结果进行反编译,再将反编译结果发送至应用层;
进一步地,所述步骤S2包括如下步骤:
S21:Bingding模块将接收到的机器码放入事件队列中;
S22:执行模块将事件队列中的事件交由工作线程异步调用服务层,将处理结果返回至Bingding模块;
S23:执行模块将事件队列发送的处理结果返回给V8引擎。
本发明提供的采用Node.js构建智慧灌区e平台路由层方法,由于路由层的出现,使应用层的html代码与服务层的java代码不能直接通信,降低了前后端程序的耦合度,应用层程序或服务层程序发生变化或扩展时,不会对彼此产生影响,实现了前后端低耦合的目标;也使得服务层API不再只针对一个指定的前端应用提供数据服务,而是可以按照数据处理进行分类,从而实现了后端服务高内聚的目标。
附图说明
图1.实施例1的采用Node.js构建智慧灌区e平台路由层方法的流程图;
图2.实施例1的采用Node.js构建智慧灌区e平台路由层方法的流程图;
图3.实施例2的采用Node.js构建智慧灌区e平台路由层方法的方法流程图;
图4.实施例3的采用Node.js构建智慧灌区e平台路由层方法的方法流程图;
图5.实施例4的采用Node.js构建智慧灌区e平台路由层方法的方法流程图;
图6.实施例5的采用Node.js构建智慧灌区e平台路由层方法的方法流程图;
图7.实施例6的智慧灌区e平台的示意图;
图8.实施例6的智慧灌区e平台的展示图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述,下列实施例仅用于解释本发明的发明内容,不用于限定本发明的保护范围。
实施例1
如图1和图2所示,提供了一种采用Node.js构建智慧灌区e平台路由层方法,该方法包括如下步骤:
S1:接收应用层发起的事件请求,通过V8引擎将事件请求编译成供CPU执行的机器码;
S2:由Node.js的Bingding模块将编译好的机器码交给事件驱动模块处理,将处理结果发送至V8引擎;
S3:V8引擎将接收的处理结果进行反编译,再将反编译结果发送至应用层,即完成构建路由层;
其中,步骤S2包括如下步骤:
S21:Bingding模块将接收到的机器码放入事件队列中;
S22:执行模块将事件队列中的机器码交由工作线程异步调用服务层,将处理结果返回至Bingding模块;
S23:执行模块将事件队列发送的处理结果返回给V8引擎;
需要说明的是,V8引擎的版本是4.4.63.25,node.js的版本为0822版,事件请求是用户在客户端进行的操作,具体包括但不限于报警请求、水位查询请求、流量查询请求或管道查询请求;V8引擎是Google Chrome使用的脚本引擎,可用于执行JavaScript代码、管理内存,并且还负责垃圾回收和与宿主语言的交互等;机器码是一种指令集的体系,这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据;一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址;bingding模块用于绑定,相当于数据的桥梁;事件队列(event queue)是指每个事件对应一个队列项,每个队列项包括一项事件句柄指针,指向该事件的事件句柄队列;一项事件种类,它是基本事件之一,每当进行一次通信时,由方法驱动事件按照所需执行的事件种类,将事件对应的程序句柄及其优先级加入到事件程序句柄队列;工作线程通常用来执行一些后台任务,如数据计算等。
本发明通过以上方法,使应用层的html代码与服务层的java代码不能直接通信,降低了前后端程序的耦合度,应用层程序或服务层程序发生变化或扩展时,不会对彼此产生影响,实现了前后端低耦合的目标;也使得服务层API不再只针对一个指定的前端应用提供数据服务,而是可以按照数据处理进行分类,从而实现了后端服务高内聚的目标。
实施例2
实施例3提供了一种采用Node.js构建智慧灌区e平台路由层方法,如图3所示,与实施例1的不同之处在于,步骤S1包括如下步骤:
S11:判断应用层是否发送事件请求,如果发送,则进行步骤S12,如果未发送,则进行步骤S13;
S12:取出应用层发送的请求及其相关的回调函数,判断是否存在关联的回调函数,如果存在,则执行回调,然后进行步骤S11,如果没有,则直接进行步骤S11;
S13:间隔时间T后再次进行步骤S11。
其中,T可以根据需要自行设置;本发明通过以上方法,无需时刻监控应用层是否发送时间请求,保证对时间请求循环监控的同时避免浪费。
实施例3
实施例3提供了一种采用Node.js构建智慧灌区e平台路由层方法,如图4所示,与实施例2的不同之处在于,步骤S21之前还包括步骤S20:对接收到的机器码建立对应的请求对象,并将请求对象进行封装,设置参数和回调函数。
本发明通过以上方法,用于保证上层的Node与下层的自定义线程池及IOCP之间各自独立。
实施例4
实施例4提供了一种采用Node.js构建智慧灌区e平台路由层方法,如图5所示,与实施例3的不同之处在于,步骤S22包括以下步骤:
S221:执行模块将请求对象交由工作线程;
S222:判断当前的工作线程是否可用,如果可用,则进行步骤S223,如果不可用,则更换工作线程直到更换的工作线程为可用工作线程;
S223:异步调用服务层执行请求对象中的I/O操作;
S224:将执行完成的结果返回到请求对象中;
S225:将请求对象发送至事件队列中,执行模块将事件队列中的处理结果返回给V8引擎。
本发明通过具体限定步骤S22,给出了详细的异步调用的过程,达到了异步调用的目的。
实施例5
实施例5提供了一种智慧灌区e平台,如图6所示,该智慧灌区e平台包括应用层、路由层、服务层和数据层,应用层用于向路由层发送用户请求和接收路由层的处理结果,路由层用于接收应用层发送的用户请求、向应用层发送处理结果和异步调用服务层,服务层用于反馈路由层的调用和访问数据层,数据层用于存储所有数据,并接收和响应服务层的请求;
其中,路由层的构建方法包括如下步骤:
S1:路由层接收应用层发起的请求,通过V8引擎将请求编译成供CPU执行的机器码;
S2:由Node.js的Bingding模块将编译好的机器码交给事件驱动模块处理,将处理结果发送至V8引擎;
S3:V8引擎将接收的处理结果进行反编译,再将反编译结果发送至应用层;
进一步地,步骤S2包括如下步骤:
S21:Bingding模块将接收到的机器码放入事件队列中;
S22:执行模块将事件队列中的事件交由工作线程异步调用服务层,将处理结果返回至Bingding模块;
S23:执行模块将事件队列发送的处理结果返回给V8引擎;
应用层包括应用容器和页面库,在应用容器中包含:样式库、控件库、资源库、方法库和一个为用户请求页面准备的应用空间;应用层根据路由层发送的处理结果从页面库中调取指定的页面加载到应用容器的应用空间中;样式库、控件库、资源库和方法库用于在应用空间中运行的页面提供支撑,将用户请求的界面展现在浏览器中,供用户使用;
服务层包括RESTFUL层和DAO层,RESTFUL层通过Jersey框架实现接收和相应路由层请求,再利用Spring框架来实现RESTFUL层与DAO层的程序互通,最后DAO层利用JDBC接口实现对多种关系型数据库的访问,数据层通过Oracle、Sql Server两种关系型数据库构建。
本发明通过以上方法,使判定方法更科学合理,进一步的提高判定的准确性,提高用户体验。
实施例6
实施例6提供了一种智慧灌区e平台,与实施例5的不同之处在于,如图7所示,数据层包括:
空间数据库构建模块1,用于获取灌区的空间数据以及高程地势数据,并构建空间数据库;
业务数据库构建模块2,用于获取灌区的业务数据,并构建业务数据库;
专题图绘制模块3,用于通过地图控件方法库分别加载各灌区的地图,调用空间数据库构建模块和业务数据库构建模块中的数据录入地图中绘制相应灌区的水利专题图,且每个灌区绘制一张水利专题图综合展示相应灌区的情况;
空间数据库构建模块1和业务数据库构建模块2在采集完数据后,对数据进行清洗去掉数据噪音后分别构建空间数据库和业务数据库。
其中,地图控件方法库内存储多种功能控件,地图控件方法库可以对各灌区的水利专题图自动加载多个应用模块;该数据层基于地理信息管理技术,整合平台中所有业务管理数据,用于向用户提供空间数据与灌区业务,绘制灌区的水利专题图,获取高程地势数据,且灌区可视化集中展示功能可以根据不同灌区的不同需求进行按灌区要求进行定制,以满足不同灌区在管理中希望突出的信息和数据重点,以及相应的满足灌区需要的展现形式,以三屯河灌区为例,可以对三屯河灌区的水资源、水费计收、山区雨量等信息进行综合展示,也可以选择白天模式和夜晚模式对灌区情况进行展示;该实施例中,当平台的地域跨度大,业务功能多,展现区域集中,而且运维难度较大,可通过设置路由层,达到非阻塞调用,实现了降低服务器内存占用和CPU运行压力,处理高并发访问的目标。
- 一种采用Node.js构建智慧灌区e平台路由层方法
- 基于四层架构的智慧灌区e平台及数据处理方法