在使用dubbo開發分佈式項目時,一般都遵循如下架構
最近在寫的分佈電商項目中
我使用了zookeeper作註冊中心,provider作數據訪問服務層
consumer就是一般開發的web項目,我按照功能分了幾個子項目,只不過它進行數據訪問
時,是通過註冊中心也就是zookeeper獲取到provider提供的服務,monitor是數據統計的一個服務,我項目中沒用使用到。
以上是dubbo的大致架構,也是我項目的劃分依據。
其中consumer依賴了註冊接口就可以當普通項目直接部署
註冊中心zookeeper佔用單獨的進程、端口號
而provider也是項目中獨立的,重要的一塊,下面講講如將provider何打包成一個獨立的,可運行的jar包部署到linux上
打包provider模塊
這是我的項目結構:其中dubbo-service-impl就是我們要打包的provider
,我們用assmebly將它打包
1.由於Impl需要依賴service項目中的相關jar,所以打包前先將依賴的dubbo-service項目安裝
右鍵項目>run as >mavan install
2.在impl項目的pom文件加入assembly插件
<build>
<plugins>
<!-- 指定項目的打包插件信息 -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- 指定打包描述文件的位置:相對項目根目錄的路徑 -->
<!-- assembly打包的描述文件 -->
<descriptor>assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3.在項目下創建文件夾assmebly,並在assmebly下創建文件assmebly.xml
4.assmebly.xml內容:
<?xml version='1.0' encoding='UTF-8'?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<!-- 該字符會添加到最終tar.gz包的名稱後面,作爲後綴 -->
<id>assembly</id>
<!-- 指定打包的格式爲tar.gz,該類型壓縮包在linux中比較常見 -->
<formats>
<format>tar.gz</format>
</formats>
<!-- 在tar.gz壓縮包中是否包含根文件夾,該根文件夾名稱和tar.gz去掉id後綴一致 -->
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<!-- 將項目根路徑下assembly/bin路徑中的內容打包到壓縮包中的根目錄下的bin目錄中 -->
<fileSet>
<!-- 相對項目根路徑的相對路徑 -->
<directory>assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<!-- 設置最終tar.gz中該文件夾下的權限,跟linux權限寫法一致 -->
<fileMode>0755</fileMode>
</fileSet>
<!-- 將項目根路徑下assembly/conf路徑中的內容打包到壓縮包中的根目錄下的conf目錄中 -->
<fileSet>
<directory>assembly/conf</directory>
<outputDirectory>conf</outputDirectory>
<!-- 設置其linux權限 -->
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
<!-- 將所有依賴的jar包打包到壓縮包中的根目錄下的lib目錄中 -->
<!-- 此lib目錄中包含自己開發的項目jar包以及demo_service.jar,還有第三方的jar包 -->
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
5.在assembly下創建bin和conf文件夾,裏面還需要幾個文件,把這幾個文件複製進去,這裏是是打包好的assembly
鏈接:https://pan.baidu.com/s/18kbdHp0KUl9emGXXIknRGg
提取碼:fxk2
6.run as maven install 在target下生成壓縮文件
解壓tar.gz結尾的文件
發現裏面有個bin目錄,windows下啓動start.bat,linux中啓動start.sh,即可啓動這個provider