亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        低代碼數(shù)據(jù)接口開(kāi)發(fā)架構(gòu)的研究與實(shí)現(xiàn)

        2022-06-21 01:14:24徐建,劉磊
        計(jì)算機(jī)時(shí)代 2022年6期
        關(guān)鍵詞:架構(gòu)

        徐建,劉磊

        摘? 要: 為了降低開(kāi)發(fā)難度、提高代碼復(fù)用率、適應(yīng)需求變化、縮短開(kāi)發(fā)周期,提出通過(guò)研發(fā)一種配置式的少代碼程序框架,減少開(kāi)發(fā)工程師的重復(fù)工作。利用Netty框架,研發(fā)一種規(guī)則引擎,在Java運(yùn)行環(huán)境下實(shí)現(xiàn)低代碼服務(wù)端數(shù)據(jù)接口的開(kāi)發(fā)架構(gòu)。經(jīng)實(shí)踐論證,低代碼數(shù)據(jù)接口開(kāi)發(fā)架構(gòu)可在短時(shí)間內(nèi)完成數(shù)據(jù)接口的開(kāi)發(fā),大幅度降低工作量,提高工作效率,從而降低應(yīng)用開(kāi)發(fā)成本。

        關(guān)鍵詞: 低代碼; Netty; 架構(gòu); 規(guī)則引擎; 配置式

        中圖分類(lèi)號(hào):TP399? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):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 引言

        隨著互聯(lián)網(wǎng)的發(fā)展,信息數(shù)據(jù)價(jià)值達(dá)到前所未有的高度,人們對(duì)信息的獲取方式從符號(hào)、文字、圖片到視頻日益豐富,人們關(guān)注的數(shù)據(jù)分類(lèi)也相互交叉、匯聚。這就催生出千變?nèi)f化的需求,使服務(wù)端工程師的開(kāi)發(fā)任務(wù)變得紛繁復(fù)雜。服務(wù)端工程師需要不斷在數(shù)據(jù)庫(kù)、緩存、文件中處理數(shù)據(jù),具有較高的技術(shù)門(mén)檻和較大的工作量。

        服務(wù)端工程師在長(zhǎng)期的開(kāi)發(fā)過(guò)程中已從多個(gè)方向簡(jiǎn)化開(kāi)發(fā)難度,研發(fā)并開(kāi)源了多種公用框架,在一定程度上降低了技術(shù)門(mén)檻,減輕了開(kāi)發(fā)工作量。但是已有的開(kāi)發(fā)框架種類(lèi)繁多,存在著學(xué)習(xí)成本高、技術(shù)方案不標(biāo)準(zhǔn)、使用難度高、開(kāi)發(fā)環(huán)境限制多等缺點(diǎn)。

        本文研究一種通過(guò)文件配置的方式來(lái)實(shí)現(xiàn)服務(wù)端數(shù)據(jù)接口開(kāi)發(fā)的低代碼框架,使非程序技術(shù)人員通過(guò)簡(jiǎn)單的培訓(xùn)就能完成后端數(shù)據(jù)接口開(kāi)發(fā)。從而減少服務(wù)端工程師的機(jī)械工作,使其集中智慧處理復(fù)雜邏輯,提高工作效率,實(shí)現(xiàn)降本增效。

        1 系統(tǒng)總體架構(gòu)

        為應(yīng)對(duì)互聯(lián)網(wǎng)的海量數(shù)據(jù),兼容常用服務(wù)器系統(tǒng)(如Linux、Windows等),本文使用Java語(yǔ)言進(jìn)行研究實(shí)現(xiàn)。系統(tǒng)通過(guò)Netty框架監(jiān)聽(tīng)端口,收到數(shù)據(jù)后根據(jù)HTTP(s)協(xié)議進(jìn)行解析,結(jié)構(gòu)化地獲得請(qǐng)求方法、協(xié)議版本、Host、請(qǐng)求路徑、Header、請(qǐng)求參數(shù)等。解析完成后,系統(tǒng)根據(jù)請(qǐng)求路徑和請(qǐng)求方法匹配到不同的協(xié)議文件,通過(guò)自定義規(guī)則引擎分析和處理數(shù)據(jù),然后通過(guò)Netty,按照HTTP(s)協(xié)議把結(jié)果返回給客戶端。

        本研究數(shù)據(jù)交互流程如圖1所示。

        系統(tǒng)采用MVC的模式開(kāi)發(fā),但用戶配置接口時(shí)是使用的命令模式。本系統(tǒng)從邏輯上可分為傳輸層、數(shù)據(jù)層和持久層。其中傳輸層使用Netty框架監(jiān)聽(tīng)服務(wù)器端口,等待客戶端請(qǐng)求并建立連接;數(shù)據(jù)層解析HTTP協(xié)議、匹配配置文件、解析并執(zhí)行配置文件;持久層根據(jù)解析結(jié)果,執(zhí)行數(shù)據(jù)庫(kù)操作。

        本文總體架構(gòu)如圖2所示。

        本文對(duì)重點(diǎn)對(duì)規(guī)則引擎進(jìn)行描述,并解釋其協(xié)議解析、匹配和執(zhí)行,通過(guò)請(qǐng)求示例描述本研究的核心思想:通過(guò)文件配置和解釋執(zhí)行的方式實(shí)現(xiàn)服務(wù)端數(shù)據(jù)接口的快速開(kāi)發(fā)。

        2 平臺(tái)關(guān)鍵技術(shù)

        2.1 Netty

        Netty是一個(gè)利用Java的高級(jí)網(wǎng)絡(luò)的能力,隱藏其背后的復(fù)雜性而提供一個(gè)易于使用的API的客戶端/服務(wù)器框架[1]。Netty是本文研究系統(tǒng)的數(shù)據(jù)交互核心,其簡(jiǎn)單、成熟、穩(wěn)定的網(wǎng)絡(luò)處理特性有助于系統(tǒng)監(jiān)聽(tīng)端口并解析HTTP(s)請(qǐng)求。

        2.2 規(guī)則引擎

        規(guī)則引擎是通過(guò)源代碼、配置文件、公式等方式描述的一組能實(shí)現(xiàn)多種可預(yù)估或不可預(yù)估邏輯運(yùn)算[2]的程序。如開(kāi)發(fā)語(yǔ)言、數(shù)據(jù)庫(kù)查詢語(yǔ)言等本身是程序解釋器定義了一組邏輯規(guī)則,工程師通過(guò)編寫(xiě)符合滿足規(guī)則要求的邏輯代碼,并按照指定的方式執(zhí)行,達(dá)到控制計(jì)算機(jī)或操作數(shù)據(jù)的目的,那么,這里的程序解釋器就是一個(gè)規(guī)則引擎。

        2.3 JDBC

        JDBC是Java用來(lái)建立數(shù)據(jù)庫(kù)連接并實(shí)現(xiàn)數(shù)據(jù)庫(kù)基本操作的API接口,是常用的面向關(guān)系型數(shù)據(jù)庫(kù)的操作工具。在數(shù)據(jù)的關(guān)系邏輯(where語(yǔ)句)上,重點(diǎn)使用了JDBC的PreparedStatement實(shí)現(xiàn)。本文利用MySQL數(shù)據(jù)庫(kù)進(jìn)行研究實(shí)現(xiàn)的示例,通過(guò)JDBC也能快速適配到其他關(guān)系型數(shù)據(jù)庫(kù)上。

        2.4 EasyDB

        EasyDB是基于JDBC的開(kāi)源的數(shù)據(jù)庫(kù)操作框架,具備無(wú)運(yùn)行環(huán)境要求、使用簡(jiǎn)單、程序穩(wěn)定的優(yōu)點(diǎn)。EasyDB通過(guò)反射的方式把對(duì)象解析成SQL元素,通過(guò)全局靜態(tài)方法生成并執(zhí)行SQL語(yǔ)句,支持關(guān)系型數(shù)據(jù)庫(kù)的基本操作和事務(wù)操作。

        3 系統(tǒng)實(shí)現(xiàn)

        經(jīng)過(guò)對(duì)系統(tǒng)總體需求和目標(biāo)的梳理得知,系統(tǒng)應(yīng)監(jiān)聽(tīng)指定端口并等待與客戶端建立連接,實(shí)現(xiàn)規(guī)則引擎解析協(xié)議、匹配解析并執(zhí)行配置文件,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作并返回?cái)?shù)據(jù)。

        本文重點(diǎn)對(duì)規(guī)則引擎的協(xié)議解析、配置文件匹配和解釋執(zhí)行做出描述,Netty建立服務(wù)程序和數(shù)據(jù)庫(kù)操作不是本文研究的主要內(nèi)容。

        3.1 業(yè)務(wù)設(shè)計(jì)

        在系統(tǒng)啟動(dòng)時(shí),打開(kāi)Netty監(jiān)聽(tīng)服務(wù),程序讀取指定文件夾下的配置文件,根據(jù)文件路徑生成訪問(wèn)路徑,存儲(chǔ)到路徑緩存Map對(duì)象中。系統(tǒng)采用觀察者模式,監(jiān)控該文件夾下的文件變化,在文件變化時(shí)重新讀取,實(shí)現(xiàn)接口的熱更新效果。

        在Netty接收到來(lái)自客戶端的HTTP(s)請(qǐng)求時(shí),Netty調(diào)用Handler的channelRead0方法實(shí)現(xiàn)響應(yīng),程序可以從該方法中讀取到請(qǐng)求路徑。程序根據(jù)請(qǐng)求路徑到路徑緩存Map對(duì)象中查找,查找成功則匹配到指定的配置文件。

        匹配到配置文件后,根據(jù)已解析的邏輯處理并執(zhí)行程序,實(shí)現(xiàn)指定規(guī)則的數(shù)據(jù)庫(kù)操作。

        其主要業(yè)務(wù)流程如圖3所示。

        3.2 配置規(guī)則

        簡(jiǎn)單明了的配置規(guī)則是用戶能快速適應(yīng)、降低學(xué)習(xí)成本、提高工作效率的基礎(chǔ)。本研究自行設(shè)計(jì)了配置規(guī)則,通過(guò)最少一行配置即可實(shí)現(xiàn)規(guī)則。

        本系統(tǒng)使用key-value的形式進(jìn)行命令式的配置,主要支持配置請(qǐng)求方法(method)、請(qǐng)求參數(shù)(param)、SQL語(yǔ)句、是否使用R包裹(統(tǒng)一返回格式)等,部分配置及其解釋、示例如表1所示。

        一個(gè)簡(jiǎn)單的例子如圖4所示。

        3.3 解析邏輯

        系統(tǒng)參照了類(lèi)似PHP、JS等解釋性語(yǔ)言的運(yùn)行邏輯,在收到請(qǐng)求后根據(jù)源文件執(zhí)行邏輯,在運(yùn)行的時(shí)候?qū)⒊绦蚍g成機(jī)器語(yǔ)言[3]。解析邏輯是規(guī)則引擎的核心,是規(guī)則引擎的定義流程[4]。

        系統(tǒng)在接收到指定路徑的請(qǐng)求后,根據(jù)路徑匹配到文件,對(duì)文件解釋執(zhí)行。程序?qū)χ付ㄎ募A下的配置文件掃描讀取,讀取到指定文件后逐行讀取文件,將內(nèi)容根據(jù)預(yù)定的配置表進(jìn)行相應(yīng)邏輯的處理。

        例如,在讀取到配置文件某行以“#”開(kāi)頭時(shí),則認(rèn)為是注釋行,直接跳過(guò);當(dāng)讀取到某行以“method:”開(kāi)頭時(shí),則認(rèn)為是請(qǐng)求方法指定;當(dāng)讀取到某行以“sql:”開(kāi)頭時(shí),則認(rèn)為是數(shù)據(jù)庫(kù)操作邏輯,檢查是否有需要根據(jù)請(qǐng)求參數(shù)進(jìn)行替換的內(nèi)容。

        3.4 執(zhí)行邏輯

        通常,系統(tǒng)需要對(duì)參數(shù)進(jìn)行計(jì)劃內(nèi)的檢查,判斷請(qǐng)求客戶端是否登錄等。判斷邏輯執(zhí)行成功后,程序執(zhí)行已處理的SQL語(yǔ)句,接受處理結(jié)果并將結(jié)果根據(jù)配置的規(guī)則進(jìn)行處理(如緩存、運(yùn)算、修改等)。

        3.5 返回結(jié)果

        本系統(tǒng)使用Netty監(jiān)聽(tīng)端口接收數(shù)據(jù)請(qǐng)求,也使用Netty返回?cái)?shù)據(jù)。每一個(gè)客戶端請(qǐng)求會(huì)在服務(wù)端產(chǎn)生一個(gè)線程,所有程序邏輯在此線程中完成。程序邏輯執(zhí)行完成后,同步寫(xiě)入輸出流,實(shí)現(xiàn)結(jié)果返回功能。

        3.6 系統(tǒng)測(cè)試

        系統(tǒng)設(shè)計(jì)并實(shí)現(xiàn)后使用PostMan進(jìn)行了API請(qǐng)求測(cè)試。研發(fā)人員對(duì)系統(tǒng)進(jìn)行了單元測(cè)試、確認(rèn)測(cè)試和性能測(cè)試,并把系統(tǒng)集成到基于Nacos的微服務(wù)環(huán)境下進(jìn)行了集成測(cè)試。經(jīng)測(cè)試,該系統(tǒng)運(yùn)行穩(wěn)定,能在50ms內(nèi)響應(yīng)請(qǐng)求并返回結(jié)果,目前已在企業(yè)軟件中試運(yùn)行。

        該系統(tǒng)的價(jià)值期望體現(xiàn)在成本、質(zhì)量等方面,同時(shí)也期望體現(xiàn)在可移植性、性能和安全等方面[5],需經(jīng)過(guò)長(zhǎng)期運(yùn)行、完善才能驗(yàn)證系統(tǒng)的價(jià)值。

        4 結(jié)束語(yǔ)

        本系統(tǒng)經(jīng)過(guò)預(yù)定需求范圍內(nèi)的業(yè)務(wù)設(shè)計(jì),采用互聯(lián)網(wǎng)上成熟的開(kāi)源框架,基于原生Java實(shí)現(xiàn)基于配置文件的服務(wù)端數(shù)據(jù)接口開(kāi)發(fā)系統(tǒng)。系統(tǒng)能實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)接口和邏輯,滿足一般數(shù)據(jù)接口的要求,能在較短時(shí)間內(nèi)完成數(shù)據(jù)查詢接口開(kāi)發(fā)以滿足業(yè)務(wù)的快速變化,能大幅減少服務(wù)端工程師的機(jī)械工作,讓服務(wù)端工程師能夠聚焦在復(fù)雜邏輯上,從信息系統(tǒng)項(xiàng)目管理和人力資源上降本增效。

        系統(tǒng)支持配置內(nèi)容簡(jiǎn)單、規(guī)則明了,具備SQL語(yǔ)句編寫(xiě)能力的人即可編寫(xiě)服務(wù)端數(shù)據(jù)接口,使項(xiàng)目團(tuán)隊(duì)中測(cè)試工程師、前端工程師也可根據(jù)實(shí)際的業(yè)務(wù)場(chǎng)景參與數(shù)據(jù)接口的開(kāi)發(fā),提高工作效率。系統(tǒng)除用于服務(wù)端開(kāi)發(fā)外,也可用于數(shù)據(jù)分析師提取和處理數(shù)據(jù)等。

        雖然系統(tǒng)能在一定程度上降低了數(shù)據(jù)接口的開(kāi)發(fā)難度,但是系統(tǒng)的邏輯運(yùn)算支持有限,跨聯(lián)表查詢及復(fù)雜數(shù)據(jù)邏輯處理能力不足,需要進(jìn)一步優(yōu)化。

        參考文獻(xiàn)(References):

        [1] Norman Maurer.? Essential Netty in Action

        [2]李春芳,譚慶平.面向業(yè)務(wù)的Drools規(guī)則引擎改進(jìn)[J].計(jì)算機(jī)應(yīng)用于軟件,2015(5)20-23

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

        [4]王李軍,陶明亮,張曙,等.面向業(yè)務(wù)規(guī)則引擎研究[J].計(jì)算機(jī)工程,2007,33(24):52-56

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

        猜你喜歡
        架構(gòu)
        基于FPGA的RNN硬件加速架構(gòu)
        功能架構(gòu)在電子電氣架構(gòu)開(kāi)發(fā)中的應(yīng)用和實(shí)踐
        基于云服務(wù)的圖書(shū)館IT架構(gòu)
        WebGIS架構(gòu)下的地理信息系統(tǒng)構(gòu)建研究
        LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實(shí)現(xiàn)
        架構(gòu)——李延洲寫(xiě)生作品展
        基于SDN與NFV的網(wǎng)絡(luò)切片架構(gòu)
        一種基于FPGA+ARM架構(gòu)的μPMU實(shí)現(xiàn)
        具身學(xué)習(xí)環(huán)境SMALLab的架構(gòu)分析及啟示
        基于在線雙冗余CANopen架構(gòu)的管軌列控系統(tǒng)
        国产午夜精品av一区二区麻豆 | 午夜毛片不卡免费观看视频| 免费无码又爽又刺激网站| 99久久久无码国产精品动漫| 日韩av不卡一二三区| 成人性生交大片免费看l| 精品无人区无码乱码毛片国产| 伊人久久大香线蕉综合影院首页| 国产乱妇乱子视频在播放 | 综合激情五月三开心五月| 亚洲乱码无人区卡1卡2卡3| 免费a级毛片无码| 欧美在线成人午夜网站| 久久婷婷国产综合精品| 亚洲av天堂一区二区| 午夜人妻久久久久久久久| 欧美人与动牲交a精品| 美女裸体无遮挡免费视频的网站| 亚洲最新中文字幕一区| 成熟的女人毛茸茸色视频| 欧洲成人一区二区三区| 玩弄放荡人妻少妇系列| 99久久国产亚洲综合精品| 日本一区二区午夜视频| 一区二区三区国产精品乱码| 国产高潮视频在线观看| 国产激情з∠视频一区二区| 美女叉开双腿让男人插| 久久综合另类激情人妖| 日韩精品专区av无码| 18禁美女裸身无遮挡免费网站 | 亚洲第一av导航av尤物| 精品中文字幕制服中文| 大又黄又粗又爽少妇毛片| 亚洲色图三级在线观看| 久久婷婷人人澡人人喊人人爽| 中文乱码人妻系列一区二区| 精品久久日产国产一区| 国产成人亚洲一区二区| 成人午夜视频精品一区| 图图国产亚洲综合网站|