日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
來(lái)一個(gè)簡(jiǎn)單的,微服務(wù)項(xiàng)目中如何管理依賴(lài)版本號(hào)?

1.微服務(wù)架構(gòu)

理論上的微服務(wù)架構(gòu)和實(shí)際應(yīng)用的微服務(wù),往往會(huì)有一些差異。

理論上,在微服務(wù)架構(gòu)中,各個(gè)獨(dú)立的微服務(wù)可以是各種語(yǔ)言,像我們使用的 Eureka 注冊(cè)中心,就是支持多種語(yǔ)言的,這樣可以充分發(fā)揮各種語(yǔ)言的優(yōu)勢(shì)。如果是這樣,就沒(méi)有必要從項(xiàng)目整體上進(jìn)行版本管理了,也管不了。

但是在實(shí)際操作中,考慮到團(tuán)隊(duì)的技術(shù)棧,現(xiàn)有的技術(shù)生態(tài)等因素,大部分情況下,我們可能并不會(huì)在項(xiàng)目中摻雜其他語(yǔ)言進(jìn)來(lái),比如就是用 Java 開(kāi)發(fā),相信大部分小伙伴都是這么做的。

既然統(tǒng)一都使用 Java 語(yǔ)言開(kāi)發(fā),那一個(gè)需求就隨之浮出水面,就是項(xiàng)目依賴(lài)統(tǒng)一管理。

這個(gè)問(wèn)題其實(shí)不是絕對(duì)的。

大型的微服務(wù)項(xiàng)目分屬不同的團(tuán)隊(duì)開(kāi)發(fā),每個(gè)團(tuán)隊(duì)維護(hù)好自己的項(xiàng)目,然后通過(guò) RPC 或者 HTTP 的方式互相之間進(jìn)行交互,這種情況下,版本號(hào)也可以交由各個(gè)團(tuán)隊(duì)自行維護(hù),這樣版本升級(jí)的時(shí)候,就不必一起升級(jí),可以各個(gè)團(tuán)隊(duì)獨(dú)自完成,逐個(gè)升級(jí)。

但是這種方式又可能會(huì)帶來(lái)另外一個(gè)問(wèn)題,就是依賴(lài)版本的碎片化,在經(jīng)過(guò) N 多次迭代之后,可能會(huì)存在兩個(gè)項(xiàng)目所依賴(lài)的微服務(wù)版本差異非常大。

因此,在實(shí)際操作中,有的團(tuán)隊(duì)會(huì)傾向于將項(xiàng)目版本統(tǒng)一管理。

統(tǒng)一管理也很簡(jiǎn)單,就是搞一個(gè) parent 就行了,但是有的小伙伴容易將這種 parent 和聚合工程搞混,因此松哥這里還是和大家稍微聊一下怎么統(tǒng)一管理項(xiàng)目版本號(hào)。

2.統(tǒng)一管理版本號(hào)

2.1 聚合工程

先來(lái)說(shuō)一說(shuō)聚合工程,這里我就不重新寫(xiě)代碼了,以微人事(https://github.com/lenve/vhr)為例來(lái)和大家分享。

微人事項(xiàng)目的服務(wù)端就是一個(gè)聚合工程。

我們可以來(lái)看下 vhrserver 的 pom.xml 文件:

  
 
 
 
  1.     vhr
  2.     org.javaboy
  3.     1.0-SNAPSHOT
  4. 4.0.0
  5. vhrserver
  6. pom
  7.     vhr-mapper
  8.     vhr-model
  9.     vhr-service
  10.     vhr-web

在這個(gè)聚合工程中,vhr-model 用來(lái)放實(shí)體類(lèi),vhr-mapper 用來(lái)放 Dao 層,vhr-server 用來(lái)放 Service 層,vhr-web 則是一個(gè) Spring Boot 工程。

在聚合工程中,vhr-web 作為聚合工程的一部分,是無(wú)法獨(dú)立打包的,因?yàn)樗蕾?lài) vhr-service,vhr-service 依賴(lài) vhr-mapper ,而 vhr-mapper 則依賴(lài) vhr-model。我們需要從 vhrserver 處打包,這樣它會(huì)自動(dòng)解決 module 之間的依賴(lài)問(wèn)題。

單獨(dú)給 vhr-web 打包會(huì)報(bào)如下錯(cuò)誤:

從 vhrserver 處統(tǒng)一打包,結(jié)果如下:

可以看到,我們需要直接打包聚合工程,內(nèi)部的依賴(lài)問(wèn)題會(huì)自動(dòng)解決。

有人可能會(huì)問(wèn),既然前面報(bào) Could not find artifact org.javaboy:vhr-service:pom:1.0-SNAPSHOT 錯(cuò)誤,那我先把 vhr-service install 到本地倉(cāng)庫(kù),再去打包 vhr-web 行不行?

這個(gè)是不行的,因?yàn)檫@是聚合工程,不能這樣做,只能從聚合工程處打包。

2.2 統(tǒng)一管理版本號(hào)

上面說(shuō)的聚合工程雖然也能實(shí)現(xiàn)版本號(hào)的統(tǒng)一管理,但是我們不能在微服務(wù)中采用這種方式。

你想一個(gè)微服務(wù)系統(tǒng),包含了很多子系統(tǒng),例如商品管理、交易管理、物流管理等等,要是想給商品管理打包,你還得從聚合工程處打包,打完之后,其他微服務(wù)模塊也生成了各自的包,這樣效率太低了。

但是我們還想實(shí)現(xiàn)版本號(hào)的統(tǒng)一管理,該怎么辦呢?創(chuàng)建父子工程即可。這種項(xiàng)目結(jié)構(gòu)和聚合工程很像,但是不一樣,很多小伙伴會(huì)搞混,所以這里我來(lái)給大家稍微演示一下。

首先我們定義一個(gè)普通的 Maven 工程作為父工程,我把 pom.xml 文件拎出來(lái)給大家參考下:

  
 
 
 
  1.     org.springframework.boot
  2.     spring-boot-starter-parent
  3.     2.3.0.RELEASE
  4.     
  5. pom
  6. org.javaboy.vmall
  7. vmall
  8. 1.0-SNAPSHOT
  9.     
  10.     
  11.         
  12.     

大家可以看到,這個(gè)父工程本身也有一個(gè) parent ,就是 Spring Boot 中的 parent。

這里的 packaging 依然是 pom,然后我們定義了 dependencyManagement,將一些不包含在 spring-boot-starter-parent 中的依賴(lài)版本進(jìn)行統(tǒng)一管理。但是大家注意,這里沒(méi)有 modules 節(jié)點(diǎn),這是一個(gè)很大的不同。

接下來(lái),我們創(chuàng)建其他微服務(wù)項(xiàng)目,在創(chuàng)建的過(guò)程中,可以采用平鋪的方式,例如下面這樣:

也可以做成有層次結(jié)構(gòu)的父子形式,像下面這樣:

兩種方式都可以。

然后在各個(gè)微服務(wù)項(xiàng)目中,重新修改 parent 即可:

如此之后,我們就可以對(duì)各個(gè)微服務(wù)中的依賴(lài)版本進(jìn)行統(tǒng)一管理了。

這種項(xiàng)目結(jié)構(gòu)和聚合工程并不一樣,這種項(xiàng)目打包,是可以獨(dú)立打包的。

首先我們先將父工程 install 到本地倉(cāng)庫(kù):

然后再去 install vmall-common 模塊,最后給 vmall-app-manager 進(jìn)行打包,注意,現(xiàn)在的 vmall-app-manager 可以獨(dú)立打包,不需要從總的 parent 處進(jìn)行統(tǒng)一打包。微服務(wù)項(xiàng)目中如果需要對(duì)項(xiàng)目版本進(jìn)行統(tǒng)一管理,可以采用這種方式。

小伙伴們可以仔細(xì)品一品這種方式和聚合工程的差異。

3.小結(jié)

好啦,今天的內(nèi)容比較簡(jiǎn)單,再結(jié)合前面已經(jīng)發(fā)過(guò)的兩篇文章,相信大家對(duì)于如何組織微服務(wù)項(xiàng)目的代碼已經(jīng)有一定的思路了。

本文授權(quán)轉(zhuǎn)載自公眾號(hào)「牧碼小子」。公眾號(hào)牧碼小子分享大量Java 微服務(wù)干貨,歡迎關(guān)注!


網(wǎng)頁(yè)題目:來(lái)一個(gè)簡(jiǎn)單的,微服務(wù)項(xiàng)目中如何管理依賴(lài)版本號(hào)?
瀏覽路徑:http://www.5511xx.com/article/cddojhj.html