国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MES中基于WebClient的聲明式服務(wù)調(diào)用框架

2019-04-26 05:03:34王楊帥
電子技術(shù)與軟件工程 2019年4期
關(guān)鍵詞:調(diào)用實例代理

文/王楊帥

1 引言

單體架構(gòu)的MES在通用性上的不足,很難適應(yīng)市場需求;各個模塊緊密耦合對系統(tǒng)的升級和維護帶來了巨大挑戰(zhàn)?;谖⒎軜?gòu)的MES根據(jù)企業(yè)的需求按照業(yè)務(wù)進行服務(wù)劃分,形成積木式拼接系統(tǒng),如何做到MES中各個微服務(wù)之間有效調(diào)用成為了關(guān)鍵。本文提出基于WebClient的聲明式服務(wù)調(diào)用框架,簡化了服務(wù)間的調(diào)用邏輯;調(diào)用方只需定義一個HTTP客戶端接口就可以實現(xiàn)代理類去實現(xiàn)遠程資源調(diào)用。

2 MES服務(wù)拆分

根據(jù)制造企業(yè)業(yè)務(wù)進行建模,一個MES按照業(yè)務(wù)可以分為訂單管理、工藝管理、生產(chǎn)排產(chǎn)、過程管控、質(zhì)量管理等制造服務(wù)。微服務(wù)架構(gòu)的MES靈活地根據(jù)業(yè)務(wù)選擇某些制造服務(wù)來快速定制一個系統(tǒng),在實際生產(chǎn)環(huán)境中根據(jù)客戶需求對服務(wù)進行增減操作來實現(xiàn)MES的個性化定制,微服務(wù)的MES可以縮短開發(fā)周期、降低企業(yè)維護成本。

3 調(diào)用遠程服務(wù)資源

微服務(wù)架構(gòu)的MES中的各個微服務(wù)之間可以通過接口調(diào)用的方式來對外提供服務(wù)的,所以必須服務(wù)間的正常通信。Rest方式的服務(wù)調(diào)用方式對消費者而言僅需通過一個HTTP客戶端就可以遠程訪問服務(wù)資源,對于提供者而言只需在控制層開啟Rest功能即可。例如:提供方暴露的接口為/car/{carId}時,消費端只需利用HTTP客戶端請求http://IP:port/car/007 就可以獲取到服務(wù)提供方提供的服務(wù)資源。

3.1 同步HTTP客戶端實現(xiàn)方式

基于Restful風(fēng)格的同步HTTP客戶端實現(xiàn)方式主要有HttpClient、RestTemplate。

HttpClient提供了基于HTTP協(xié)議的客戶端工具包,實現(xiàn)了HTTP全部類型的請求方法,同時也支持HTTPS協(xié)議。請求遠程服務(wù)資源時繁瑣的步驟,需要根據(jù)不同的HTTP請求類型創(chuàng)建請求實例,在通過HttpClient對象去執(zhí)行請求實例,對獲取到的數(shù)據(jù)還必須進行解析與封裝,在獲取到遠程服務(wù)服務(wù)資源后還必須關(guān)閉相關(guān)的鏈接。

RestTemplate是在客戶端訪問遠程服務(wù)的一個核心類,通過提供回調(diào)方法和允許配置信息轉(zhuǎn)換器來實現(xiàn)個性化定制功能,可以封裝請求對象,也可以對響應(yīng)對象進行解析。使用其調(diào)用遠程服務(wù)資源時,只需要在業(yè)務(wù)類中依賴注入RestTemplate實例并調(diào)用不同類型的請求方法即可。

3.2 異步HTTP客戶端實現(xiàn)方式

WebClient 是一個非阻塞、響應(yīng)式的HTTP客戶核心類,它以響應(yīng)式被壓流的方式執(zhí)行HTTP請求;非阻塞和響應(yīng)式特性使其可以用少量的線程數(shù)處理高并發(fā)的HTTP請求。

4 聲明式服務(wù)調(diào)用框架

利用同步HTTP客戶端請求服務(wù)資源時都必須手動封裝客戶端,很容易造成很多重復(fù)的編碼。本文主要簡述基于WebClient實現(xiàn)一個聲明式的REST客戶端來解決MES中各個微服務(wù)之間的異步通信問題,簡化MES遠程服務(wù)資源調(diào)用的同時讓整個MES實現(xiàn)異步調(diào)用遠程服務(wù)資源。

只需要定義服務(wù)接口進行資源調(diào)用,具體的實現(xiàn)方式由動態(tài)代理實現(xiàn)。該框架利用反射機制去獲取服務(wù)接口信息,再利用動態(tài)代理創(chuàng)建客戶端實例,最后將實例動態(tài)注冊到IOC容器中實現(xiàn)。在消費方只需要依賴注入服務(wù)接口實例,并調(diào)用具體方法就可以實現(xiàn)遠程服務(wù)調(diào)用。整體架構(gòu)圖如圖1所示。

4.1 客戶端接口

創(chuàng)建@ Rest 注解,該注解的主要功能是用來聲明服務(wù)接口用的,它是遠程服務(wù)客戶端接口的唯一標識。遠程服務(wù)的IP和端口都由它的value屬性指定。

利用自定義的Rest注解以及Spring提供的控制層注解來定義客戶端接口,該接口中的每一個方法都對應(yīng)一個遠程資源,每個方法的具體實現(xiàn)由動態(tài)代理實現(xiàn)??刂茖幼⒔獾膙alue屬性用于指定資源相對路徑,同時在方法簽名中可以定義請求信息。

4.2 獲取接口信息

利用反射機制獲取客戶端接口類類型,并利用反射機制獲取遠程資源的服務(wù)信息和方法信息。服務(wù)信息中包含IP地址和端口信息,方法信息中包含請求信息和響應(yīng)信息。利用Mono對請求信息進行封裝來實現(xiàn)框架支持響應(yīng)式的調(diào)用,響應(yīng)信息也將用Flux進行封裝。WebClient會利用反射獲取到的服務(wù)信息和方法信息動態(tài)創(chuàng)建客戶端實例進行遠程資源調(diào)用。

4.3 動態(tài)注冊Bean

圖1

利用動態(tài)代理獲取服務(wù)接口代理類信息之后,需要利用實例工廠處理器動態(tài)注冊實例來實現(xiàn)服務(wù)接口代理類的注冊功能。為了能夠在實例工廠中動態(tài)注冊Bean就必須創(chuàng)建一個實現(xiàn)了實例工廠接口的實現(xiàn)類,并在重寫方法實例工廠中動態(tài)注冊的Bean就可以保證動態(tài)注冊的bean能被實例工廠處理,并且可以保證其的實例化和初始化總是先于依賴它的bean。

4.4 依賴注入

IOC容器啟動時會自動掃描項目中標注有@Rest注解的接口并為其創(chuàng)建代理類,還會將生成的代理注冊到IOC容器當(dāng)中;因此,在需要進行遠程調(diào)用服務(wù)資源的地方只需要利用@AutoWired按照類型依賴注入客戶端接口類型的實例并調(diào)用實例的方法即可。

5 總結(jié)

基于WebClient的聲明式服務(wù)調(diào)用框架極大地簡化了MES中遠程服務(wù)資源的調(diào)用,使得車間計劃、車間操作、產(chǎn)品報工、產(chǎn)品質(zhì)檢、車間物流、設(shè)備維護、設(shè)備維修、看板信息、監(jiān)控等一系列制造執(zhí)行微服務(wù)可以協(xié)同工作。在基于HTTP協(xié)議的服務(wù)通信方面,支持響應(yīng)式、非阻塞的聲明式服務(wù)調(diào)用框架可以以少量而固定的線程數(shù)處理共并發(fā)的Http請求,使得整個MES可以在原有硬件資源的情況下承載更高的并發(fā)量,進一步提供了MES的性能。

猜你喜歡
調(diào)用實例代理
核電項目物項調(diào)用管理的應(yīng)用研究
代理圣誕老人
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
代理手金寶 生意特別好
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
復(fù)仇代理烏龜君
完形填空Ⅱ
完形填空Ⅰ
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
一個村有二十六位代理家長
中國火炬(2012年2期)2012-07-24 14:18:04
雷波县| 綦江县| 仙桃市| 博客| 白银市| 阜新| 冕宁县| 龙海市| 邢台县| 高州市| 香河县| 澜沧| 三门县| 巧家县| 额敏县| 泗阳县| 刚察县| 科技| 花莲市| 绥中县| 平度市| 漳平市| 临漳县| 定边县| 谢通门县| 申扎县| 南澳县| 浮山县| 阜康市| 吴川市| 龙游县| 扎兰屯市| 康马县| 武陟县| 宁武县| 丹巴县| 睢宁县| 神农架林区| 静海县| 柞水县| 荥经县|