最近從一個(gè)項(xiàng)目組調(diào)到了另外一個(gè)項(xiàng)目組琴儿,開(kāi)發(fā)的項(xiàng)目也從以前單點(diǎn)(mvc+jsp+other)的情況轉(zhuǎn)變到了現(xiàn)在分布式(dubbo+other)的情況役衡,工作的職責(zé)改變茵休,要處理的事情也更多了。
先來(lái)說(shuō)說(shuō)目前工作的情況吧手蝎,現(xiàn)在一個(gè)基礎(chǔ)的項(xiàng)目可以分為api包(定義接口與BEAN)榕莺,provider包(對(duì)API里的接口進(jìn)行實(shí)現(xiàn)),web項(xiàng)目(調(diào)用api包棵介,與頁(yè)面交互)钉鸯。web項(xiàng)目只引入API包,provider包與web項(xiàng)目分別獨(dú)立部署邮辽,web項(xiàng)目通過(guò)dubbo調(diào)用provider包的服務(wù)唠雕。
如圖:
這其實(shí)也是一個(gè)分布式系統(tǒng)的基礎(chǔ)結(jié)構(gòu)贸营,對(duì)于以前的單點(diǎn)系統(tǒng)來(lái)說(shuō),他把業(yè)務(wù)邏輯更加細(xì)分岩睁,使得每個(gè)人都能負(fù)責(zé)自己那一部分钞脂。
以上是理想情況,接下來(lái)我說(shuō)說(shuō)這種架構(gòu)開(kāi)發(fā)我所遇到的問(wèn)題捕儒。
第一個(gè)冰啃,也是最嚴(yán)重的問(wèn)題×跤ǎ“API包內(nèi)接口的定義”阎毅,這個(gè)問(wèn)題實(shí)在是太突出了,舉個(gè)例子点弯,現(xiàn)在項(xiàng)目趕工扇调,需要并行開(kāi)發(fā),那么一個(gè)人如果需要另一個(gè)人把接口后才能開(kāi)發(fā)的話抢肛,就完全做不到并行狼钮,會(huì)耽誤工期。這其實(shí)就和前后端分離一樣雌团,只有定義好了接口燃领,才能做到真正的前后端分離,可是實(shí)際開(kāi)發(fā)過(guò)程中锦援,接口的定義是邊做邊制定的猛蔽,這就很麻煩。
第二個(gè)灵寺,“接口改動(dòng)”曼库,因?yàn)樯厦嬲f(shuō)的,接口的定義是邊做邊制定的略板,這就需要頻繁的更新JAR包毁枯,雖然說(shuō)現(xiàn)在是使用maven管理,但是目前市面上的編輯器叮称,對(duì)maven的改動(dòng)簡(jiǎn)直有毒种玛,經(jīng)常會(huì)出現(xiàn)找不到包,或者拉不下來(lái)瓤檐,然后缺包赂韵,編譯出錯(cuò)的情況。有時(shí)候一定小小的改動(dòng)又不會(huì)更改版本號(hào)挠蛉,這就導(dǎo)致了要?jiǎng)h除本地的包然后重新拉取祭示。然后就有可能出現(xiàn)上面說(shuō)的問(wèn)題。PS:實(shí)在找不到或者出錯(cuò)的情況下可以關(guān)閉項(xiàng)目谴古,到本地MAVEN倉(cāng)庫(kù)刪除JAR包质涛,到項(xiàng)目里面刪除IDEA的配置文件稠歉,然后在重新打開(kāi)項(xiàng)目。
第三個(gè)汇陆,“文檔文檔文檔”怒炸,重要的事情說(shuō)三遍,現(xiàn)在我的開(kāi)發(fā)流程是這樣的瞬测,找人要API包版本號(hào)横媚,要調(diào)用哪個(gè)方法纠炮,那個(gè)方法有那些參數(shù)月趟,參數(shù)有什么意義,返回值的意義是啥開(kāi)發(fā)一個(gè)接口就得問(wèn)一遍恢口,目前對(duì)接的其實(shí)也沒(méi)多少東西孝宗,但是我已近把公司的同事都差不多問(wèn)了個(gè)遍。所以耕肩,如果要使用這種開(kāi)發(fā)模式因妇,文檔是非常非常非常重要的。
第四個(gè)猿诸,“假數(shù)據(jù)婚被,模擬數(shù)據(jù)”,即使API定義好了梳虽,provider不能正常提供的情況下址芯,模擬數(shù)據(jù)怎么定義,是提供方定義還是調(diào)用方定義窜觉,是否需要驗(yàn)證方法谷炸,還是說(shuō)直接創(chuàng)建方法返回結(jié)果對(duì)象測(cè)試,如果需要并行開(kāi)發(fā)禀挫,調(diào)用API因該有返回結(jié)果旬陡,即使是假的,這些結(jié)果怎么創(chuàng)建语婴,怎么管理描孟。使用mock會(huì)不會(huì)太過(guò)冗余。這個(gè)答案我也不知道砰左,求解答匿醒。
第五個(gè),“服務(wù)地址管理”菜职,provider目前注冊(cè)到了不同的zookeeper地址,以我目前來(lái)說(shuō)青抛,一個(gè)服務(wù)就注冊(cè)一個(gè)地址,這些地址有可能相同也有可能不同酬核,都寫(xiě)在了dubbo的XML配置里面蜜另,這些地址應(yīng)該怎么管理适室,上線后應(yīng)該怎么調(diào)整,變更后項(xiàng)目怎么變更举瑰,這也是個(gè)難題捣辆。
最后,其實(shí)技術(shù)迭代產(chǎn)品更新是好事此迅,遇到問(wèn)題其實(shí)也挺正常的汽畴,如果到時(shí)候我學(xué)到了好的解決方法我就更新這篇博客。謝謝您的觀看耸序,共勉忍些。