為什麼要用dubbo?
當網站規模達到了一定的量級的時候,普通的MVC架構已經不能滿足我們的需求,于是分布式的服務架構和流動式的架構就凸顯出來了。

單一應用架構
當網站流量很小時,隻需一個應用,将所有功能都部署在一起,以減少部署節點和成本。此時,用于簡化增删改查工作量的資料通路架構(ORM) 是關鍵。
垂直應用架構
當通路量逐漸增大,單一應用增加機器帶來的加速度越來越小,将應用拆成互不相幹的幾個應用,以提升效率。此時,用于加速前端頁面開發的Web架構(MVC) 是關鍵。
分布式服務架構
當垂直應用越來越多,應用之間互動不可避免,将核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
此時,用于提高業務複用及整合的分布式服務架構(RPC) 是關鍵。
流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個排程中心基于通路壓力實時管理叢集容量,提高叢集使用率。
此時,用于提高機器使用率的資源排程和治理中心(SOA) 是關鍵。
廢話不多說,先搭建一個看看是怎麼一回事?–
目前對我來說就是,我A工程想調用B工程中的方法怎麼辦?我import不進來啊,這時候我就需要遠端調用的方法了,怎麼遠端調用呢?dobbu給我提供了一個好的開源架構,那我就用它來操作吧!
dubbo和zookeeper啥關系?
簡單來說打個比方:dubbo就是動物園的動物,zookeeper是動物園。如果遊客想看動物的話那麼就去動物園看。比如你要看老虎,那麼動物園有你才能看到。換句話說我們把很多不同的dubbo(動物)放到zookeeper(動物園中)提供給我們遊客進行觀賞。這個過程中三個關鍵:場所、供給者、消費者。
再說一個分布式的項目,server(消費)層與 service(供給)層被拆分了開來, 部署在不同的tomcat中, 我在server層需要調用 service層的接口,但是兩個運作在不同tomcat下的服務無法直接互調接口,那麼就可以通過zookeeper和dubbo實作。就好比把動物放到動物園,我們要看了直接去動物園就行。而不能直接去動物生活的地方去看,會有性命安全之憂(比如你去看老虎)。
我們通過dubbo 建立service這個服務,并且到zookeeper上面注冊,填寫對應的zookeeper服務所在 的IP及端口号。
下面我們的server層需要來調用 service接口了,由于在不同的工程中,它是無法直接找到service接口的,我們使用dubbo再來引用注冊進入的dubbo服務。
我們先填寫zookeeper服務所在 的IP及端口号,再填寫我們需要調用的接口名字。
這樣,就能實作調用。。。
搭建簡單的dubbo
1.下載下傳zookeeperhttp://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz
2.配置:
zookeeper的配置檔案在conf目錄,有zoo_sample.cfg 和 log4j.properties,将zoo_sample.cfg 重命名成zoo.cfg,因為 zookeeper 在啟動時會找這個檔案作為預設配置檔案。
3.修改zoo.cfg.
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:\\server\\zookeeper-3.5.3-beta\\data
dataLogDir=D:\\server\\zookeeper-3.5.3-beta\\log
#dataDir=/tmp/zookeeper
從上面代碼可以看到添加了兩行。在本機裡。zookeeper放在D盤裡,然後就添加了dataDir及dataLogDir兩個變量。與此同時在zookeeper檔案根目錄下建立data及log兩個檔案夾,如果不建立,後面運作腳本是地會報錯。
完成後,進入bin目錄,運作zkServer.cmd腳本,讓後就可以在單機上将zookeeper跑起來了。
剩下來的事情就是去配置DUBBO的XML檔案了,通過IP位址的設定,提供本地的服務。
管理中心(動物園)和供給者(各種動物),消費者(萬千遊客)
dubbo的使用,其實隻需要有管理中心(動物園)和供給者(各種動物),消費者(萬千遊客)這三個就可以使用了,但是并不能看到有哪些消費者和提供者,為了更好的調試,發現問題,解決問題,是以引入dubbo-admin。通過dubbo-admin可以對消費者和提供者進行管理。
dubbo-admin的下載下傳,可自行到官網下載下傳:https://github.com/alibaba/dubbo
下載下傳下來是這樣的一個目錄結構:
這裡我們隻關心dubbo-admin這個檔案夾,将dubbo-addmin打成war包,war包網上也有,但是下載下傳了很多下來都會有問題,原因是每個人的電腦組態環境不一樣,是以我們自己打包一個war就好。
打包war包,進入dubbo-admin這個檔案目錄 運作指令:
mvn package
如果看到下圖結果,說明打包成功了:
打包成功之後,就會發現dubbo-admin下多了個target檔案夾,打開target檔案夾,發現裡面有個war包:
把dubbo-admin-2.5.7.war檔案複制到tomcat的webapps目錄下,
在tomcat的bin目錄下運作:tomcat8.0w.exe
它會自動在webapps下生成一個檔案夾,然後關閉tomcat8.0w.exe,修改端口号改成9090
然後啟動在bin目錄下啟動tomcat8.0.exe即可:
啟動後,輸入
http://localhost:9090/dubbo-admin-2.5.7/
然後會提示你輸入使用者名和密碼—-都是root
這個和你的配置檔案裡面的内容是相關的:
D:\server\Tomcat 8.5\webapps\dubbo-admin-2.5.7\WEB-INF
我的目錄如圖上所示,裡面有一個dubbo.properties的檔案:
dubbo.registry.address=zookeeper://127.0.0.1:2181dubbo.admin.root.password=root dubbo.admin.guest.password=guest
成功輸入以後: