初步了解学习将传统单机应用改造成Dubbo服务的过程
Dubbo作為RPC框架,實(shí)現(xiàn)的效果就是調(diào)用遠(yuǎn)程的方法就像在本地調(diào)用一樣。如何做到呢?就是本地有對(duì)遠(yuǎn)程方法的描述,包括方法名、參數(shù)、返回值,在Dubbo中是遠(yuǎn)程和本地使用同樣的接口;然后呢,要有對(duì)網(wǎng)絡(luò)通信的封裝,要對(duì)調(diào)用方來(lái)說(shuō)通信細(xì)節(jié)是完全不可見的,網(wǎng)絡(luò)通信要做的就是將調(diào)用方法的屬性通過(guò)一定的協(xié)議(簡(jiǎn)單來(lái)說(shuō)就是消息格式)傳遞到服務(wù)端;服務(wù)端按照協(xié)議解析出調(diào)用的信息,執(zhí)行相應(yīng)的方法,在將方法的返回值通過(guò)協(xié)議傳遞給客戶端,客戶端再解析。在調(diào)用方式上又可以分為同步調(diào)用和異步調(diào)用。簡(jiǎn)單來(lái)說(shuō)基本就這個(gè)過(guò)程。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
如果要對(duì)傳統(tǒng)的單機(jī)MVC項(xiàng)目進(jìn)行分布式服務(wù)改造,那么一般將業(yè)務(wù)邏輯層及以下的做成服務(wù),biz層的接口全部要對(duì)外公布,Web控制層去調(diào)用服務(wù),服務(wù)完成拿到數(shù)據(jù)就與視圖層進(jìn)行交互。改造后控制層只有極少量的判斷去調(diào)用服務(wù),再跟界面進(jìn)行交互。
改造過(guò)程
服務(wù)接口<Provider和Consumer子項(xiàng)目均會(huì)依賴>
將與Web無(wú)關(guān)的Common放置在此目錄下
服務(wù)接口facade暴露服務(wù)接口
服務(wù)實(shí)現(xiàn)<Provider>
原有系統(tǒng)中業(yè)務(wù)邏輯放置在此目錄下
服務(wù)接口facade實(shí)現(xiàn)<直接調(diào)用biz的方法即可>
Spring、MyBatis、JDBC、log4j配置文件
若想將服務(wù)部署在Servlet容器中,則需在此子項(xiàng)目的web.xml中引入spring-context.xml
加入dubbo-provider的配置文件,并在spring-context.xml中引入之。
Web控制<Consumer>
將與Web有關(guān)的Common放置在此目錄下
Action類
Web Pages
Spring、Struts、log4j配置文件
加入dubbo-consumer的配置文件,并在spring-context.xml中引入之。
工程結(jié)構(gòu)優(yōu)化:考慮到真實(shí)系統(tǒng)中可能會(huì)有大量的服務(wù)提供者和消費(fèi)者,而其中總有很多共用的代碼(Common),可將其抽取出作為一個(gè)單獨(dú)子項(xiàng)目,其他項(xiàng)目需使用時(shí)依賴即可!
如:
edu-common-parent (Maven父配置)
edu-common (公共工程)
edu-common-config (公共配置工程)
edu-common-core (公共core工程)
edu-common-web (公共web工程)
edu-facade-user (用戶服務(wù)接口)
edu-service-user (用戶服務(wù)實(shí)現(xiàn))
edu-web-boss (服務(wù)消費(fèi)者)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
轉(zhuǎn)載于:https://www.cnblogs.com/gotodsp/p/6392619.html
總結(jié)
以上是生活随笔為你收集整理的初步了解学习将传统单机应用改造成Dubbo服务的过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bootstrap-datepicker
- 下一篇: Javascript中的关键字和保留字