低代码数据接口开发架构的研究与实现

2022-06-21 01:14徐建,刘磊
计算机时代 2022年6期
关键词:架构

徐建,刘磊

摘  要: 为了降低开发难度、提高代码复用率、适应需求变化、缩短开发周期,提出通过研发一种配置式的少代码程序框架,减少开发工程师的重复工作。利用Netty框架,研发一种规则引擎,在Java运行环境下实现低代码服务端数据接口的开发架构。经实践论证,低代码数据接口开发架构可在短时间内完成数据接口的开发,大幅度降低工作量,提高工作效率,从而降低应用开发成本。

关键词: 低代码; Netty; 架构; 规则引擎; 配置式

中图分类号:TP399          文献标识码:A     文章编号:1006-8228(2022)06-06-04

Research and implementation of low code data interface development architecture

Xu Jian, Liu Lei

(China Gezhouba Group Explosive Co., Ltd., Yubei, Chongqing 401120, China)

Abstract: In order to reduce the development difficulty, improve the code reuse rate and adapt to the demand change, it is proposed to develop a configuration type less code program framework to reduce the repetitive work of development engineers. Using Netty framework, a rule engine is developed to realize the development architecture of low code server-side data interface in Java environment. It has been proved by practice that the low code data interface development architecture can complete the development of data interface in a short time, greatly reduce the workload, improve the work efficiency, and thus reduce the application development cost.

Key words: low code; Netty; framework; rule engine; configuration type

0 引言

隨着互联网的发展,信息数据价值达到前所未有的高度,人们对信息的获取方式从符号、文字、图片到视频日益丰富,人们关注的数据分类也相互交叉、汇聚。这就催生出千变万化的需求,使服务端工程师的开发任务变得纷繁复杂。服务端工程师需要不断在数据库、缓存、文件中处理数据,具有较高的技术门槛和较大的工作量。

服务端工程师在长期的开发过程中已从多个方向简化开发难度,研发并开源了多种公用框架,在一定程度上降低了技术门槛,减轻了开发工作量。但是已有的开发框架种类繁多,存在着学习成本高、技术方案不标准、使用难度高、开发环境限制多等缺点。

本文研究一种通过文件配置的方式来实现服务端数据接口开发的低代码框架,使非程序技术人员通过简单的培训就能完成后端数据接口开发。从而减少服务端工程师的机械工作,使其集中智慧处理复杂逻辑,提高工作效率,实现降本增效。

1 系统总体架构

为应对互联网的海量数据,兼容常用服务器系统(如Linux、Windows等),本文使用Java语言进行研究实现。系统通过Netty框架监听端口,收到数据后根据HTTP(s)协议进行解析,结构化地获得请求方法、协议版本、Host、请求路径、Header、请求参数等。解析完成后,系统根据请求路径和请求方法匹配到不同的协议文件,通过自定义规则引擎分析和处理数据,然后通过Netty,按照HTTP(s)协议把结果返回给客户端。

本研究数据交互流程如图1所示。

系统采用MVC的模式开发,但用户配置接口时是使用的命令模式。本系统从逻辑上可分为传输层、数据层和持久层。其中传输层使用Netty框架监听服务器端口,等待客户端请求并建立连接;数据层解析HTTP协议、匹配配置文件、解析并执行配置文件;持久层根据解析结果,执行数据库操作。

本文总体架构如图2所示。

本文对重点对规则引擎进行描述,并解释其协议解析、匹配和执行,通过请求示例描述本研究的核心思想:通过文件配置和解释执行的方式实现服务端数据接口的快速开发。

2 平台关键技术

2.1 Netty

Netty是一个利用Java的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的API的客户端/服务器框架[1]。Netty是本文研究系统的数据交互核心,其简单、成熟、稳定的网络处理特性有助于系统监听端口并解析HTTP(s)请求。

2.2 规则引擎

规则引擎是通过源代码、配置文件、公式等方式描述的一组能实现多种可预估或不可预估逻辑运算[2]的程序。如开发语言、数据库查询语言等本身是程序解释器定义了一组逻辑规则,工程师通过编写符合满足规则要求的逻辑代码,并按照指定的方式执行,达到控制计算机或操作数据的目的,那么,这里的程序解释器就是一个规则引擎。

2.3 JDBC

JDBC是Java用来建立数据库连接并实现数据库基本操作的API接口,是常用的面向关系型数据库的操作工具。在数据的关系逻辑(where语句)上,重点使用了JDBC的PreparedStatement实现。本文利用MySQL数据库进行研究实现的示例,通过JDBC也能快速适配到其他关系型数据库上。

2.4 EasyDB

EasyDB是基于JDBC的开源的数据库操作框架,具备无运行环境要求、使用简单、程序稳定的优点。EasyDB通过反射的方式把对象解析成SQL元素,通过全局静态方法生成并执行SQL语句,支持关系型数据库的基本操作和事务操作。

3 系统实现

经过对系统总体需求和目标的梳理得知,系统应监听指定端口并等待与客户端建立连接,实现规则引擎解析协议、匹配解析并执行配置文件,实现对数据库的操作并返回数据。

本文重点对规则引擎的协议解析、配置文件匹配和解释执行做出描述,Netty建立服务程序和数据库操作不是本文研究的主要内容。

3.1 业务设计

在系统启动时,打开Netty监听服务,程序读取指定文件夹下的配置文件,根据文件路径生成访问路径,存储到路径缓存Map对象中。系统采用观察者模式,监控该文件夹下的文件变化,在文件变化时重新读取,实现接口的热更新效果。

在Netty接收到来自客户端的HTTP(s)请求时,Netty调用Handler的channelRead0方法实现响应,程序可以从该方法中读取到请求路径。程序根据请求路径到路径缓存Map对象中查找,查找成功则匹配到指定的配置文件。

匹配到配置文件后,根据已解析的逻辑处理并执行程序,实现指定规则的数据库操作。

其主要业务流程如图3所示。

3.2 配置规则

简单明了的配置规则是用户能快速适应、降低学习成本、提高工作效率的基础。本研究自行设计了配置规则,通过最少一行配置即可实现规则。

本系统使用key-value的形式进行命令式的配置,主要支持配置请求方法(method)、请求参数(param)、SQL语句、是否使用R包裹(统一返回格式)等,部分配置及其解释、示例如表1所示。

一个简单的例子如图4所示。

3.3 解析逻辑

系统参照了类似PHP、JS等解释性语言的运行逻辑,在收到请求后根据源文件执行逻辑,在运行的时候将程序翻译成机器语言[3]。解析逻辑是规则引擎的核心,是规则引擎的定义流程[4]。

系统在接收到指定路径的请求后,根据路径匹配到文件,对文件解释执行。程序对指定文件夹下的配置文件扫描读取,读取到指定文件后逐行读取文件,将内容根据预定的配置表进行相应逻辑的处理。

例如,在读取到配置文件某行以“#”开头时,则认为是注释行,直接跳过;当读取到某行以“method:”开头时,则认为是请求方法指定;当读取到某行以“sql:”开头时,则认为是数据库操作逻辑,检查是否有需要根据请求参数进行替换的内容。

3.4 执行逻辑

通常,系统需要对参数进行计划内的检查,判断请求客户端是否登录等。判断逻辑执行成功后,程序执行已处理的SQL语句,接受处理结果并将结果根据配置的规则进行处理(如缓存、运算、修改等)。

3.5 返回结果

本系统使用Netty监听端口接收数据请求,也使用Netty返回数据。每一个客户端请求会在服务端产生一个线程,所有程序逻辑在此线程中完成。程序逻辑执行完成后,同步写入输出流,实现结果返回功能。

3.6 系统测试

系统设计并实现后使用PostMan进行了API请求测试。研发人员对系统进行了单元测试、确认测试和性能测试,并把系统集成到基于Nacos的微服务环境下进行了集成测试。经测试,该系统运行稳定,能在50ms内响应请求并返回结果,目前已在企业软件中试运行。

该系统的价值期望体现在成本、质量等方面,同时也期望体现在可移植性、性能和安全等方面[5],需经过长期运行、完善才能验证系统的价值。

4 结束语

本系统经过预定需求范围内的业务设计,采用互联网上成熟的开源框架,基于原生Java实现基于配置文件的服务端数据接口开发系统。系统能实现基础数据接口和逻辑,满足一般数据接口的要求,能在较短时间内完成数据查询接口开发以满足业务的快速变化,能大幅减少服务端工程师的机械工作,让服务端工程师能够聚焦在复杂逻辑上,从信息系统项目管理和人力资源上降本增效。

系统支持配置内容简单、规则明了,具备SQL语句编写能力的人即可编写服务端数据接口,使项目团队中测试工程师、前端工程师也可根据实际的业务场景参与数据接口的开发,提高工作效率。系统除用于服务端开发外,也可用于数据分析师提取和处理数据等。

虽然系统能在一定程度上降低了数据接口的开发难度,但是系统的逻辑运算支持有限,跨联表查询及复杂数据逻辑处理能力不足,需要进一步优化。

參考文献(References):

[1] Norman Maurer.  Essential Netty in Action

[2]李春芳,谭庆平.面向业务的Drools规则引擎改进[J].计算机应用于软件,2015(5)20-23

[3] Bruce Eckel.Thinking in Java [J]. Pearson Higher Isia Education,2006-2-20

[4]王李军,陶明亮,张曙,等.面向业务规则引擎研究[J].计算机工程,2007,33(24):52-56

[5] AltmanER,KaeliD,ShefierY.Welcome To the Opportunities of Binary Translation[J].Computer,2000,33(3):40-45

猜你喜欢
架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
基于云服务的图书馆IT架构
WebGIS架构下的地理信息系统构建研究
LSN DCI EVPN VxLAN组网架构研究及实现
架构——李延洲写生作品展
基于SDN与NFV的网络切片架构
一种基于FPGA+ARM架构的μPMU实现
具身学习环境SMALLab的架构分析及启示
基于在线双冗余CANopen架构的管轨列控系统