1.Dubbo介紹 Dubbo是 阿裡巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫集成。 2.Dubbo原理 是不是看著比較懵逼,博主用通俗的語言講解一下吧,這張圖裡兩個英文單詞大家應該比較熟悉,一個Provider(提 ...
1.Dubbo介紹
Dubbo是 阿裡巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫集成。
2.Dubbo原理
是不是看著比較懵逼,博主用通俗的語言講解一下吧,這張圖裡兩個英文單詞大家應該比較熟悉,一個Provider(提供者),一個Consumer(消費者),顧名思義,提供者用來提供服務,消費者用來消費服務的,舉個例子,房東和房客就是消費和被消費的關係,房東提供租房這項服務,房客把房子租下來,消費了租房這項服務.但是我們知道,當租房子時候苦於不知道價格,不好找房源等問題,這時候就出現了中介這個東西,也就是圖中的Registry(註冊),當我們想找房子的時候,就可以直接找中介,提供者(房東)會提前在中介上登記房源信息,我們只需要告訴中介我們需要什麼樣的租房服務,中介就會告訴我們我們需要的房子在哪哪哪,這就是dobbu的原理,最後Monitor(監控)則是負責查看提供者和消費者鏈接是否正常,(就如中介會讓你簽租房合同,這裡不是很恰當).這就是dubbo的原理,這時候有的同鞋就會問了,我直接將消費者和服務者鏈接起來不就可以了,為啥非要通過Registry這個東東?這裡我多說兩句.
dubbo既然出現了就一定是有他的需求的,也一定是解決了某些問題,那是哪種問題被解決了呢?當我們的系統服務客戶群只有幾十個,百個的時候完全沒必要用分散式集群搭建,只有當我們的客戶群數量極大,大到我們不得不採用分佈方法拆分系統,以防止系統耦合複雜,這樣當系統越來越複雜的時候,系統與系統之間的調用關係也越來越複雜,你可以想象淘寶將服務分散式架構圖會多複雜,我猜想淘寶的架構師自己都很難理清楚系統與系統之間的調用關係,這個時候我們加上一個中間機構,就有點像第三方,我們不管什麼服務都發佈在第三方,調用的時候只用在第三方調用就好了,這樣不就簡單很多嗎?這就是dubbo的作用.
dubbo大概講清楚了,下來說說dubbo使用方法吧
3.dubbo的使用
我們知道,dubbo有一個Registry(註冊機構),dubbo官方推薦使用ZooKeeper,至於ZooKeeper的詳細介紹博主就不細說了,大家可以把它理解為第三方(需要部署在linux上的第三方機構),而消費者和提供者則是兩個發佈的服務,說白了就是用發佈的項目,其中有項目提供服務,有項目調用服務.
關於提供者和消費者後面慢慢說,現在我們先說ZooKeeper的安裝.
安裝環境:
Linux:centos6.4
Jdk:1.7以上版本
Zookeeper是java開發的可以運行在windows、linux環境。需要先安裝jdk。
安裝步驟:
第一步:安裝jdk
詳細的需要去查看博主jdk安裝博文
第二步:把zookeeper的壓縮包上傳到linux系統。
博主曾經學過上傳工具的介紹使用,需要的童鞋自行查找下博主的博客
第三步:解壓縮壓縮包
tar -zxvf zookeeper-3.4.10.tar.gz
解壓成功後如上圖zookeeper-3.4.10藍色文件夾
第四步:進入zookeeper-3.4.6目錄,創建data文件夾。
就是新建data文件夾
博主這裡已經新建過了
第五步:把zoo_sample.cfg改名為zoo.cfg
ps:zoo_sample.cfg文件在conf文件夾中,其中dubbo的配置文件
[root@localhost conf]# mv zoo_sample.cfg zoo.cfg
這命令的意思為修改文件名稱改為zoo.cfg,大家也可以cp命令copy文件
第六步:修改data屬性:dataDir=/root/zookeeper-3.4.6/data
ps:這裡強調一下,這裡的地址要修改到你新建data文件的全限定名稱
第七步:啟動zookeeper
[root@localhost bin]# ./zkServer.sh start
關閉:[root@localhost bin]# ./zkServer.sh stop
查看狀態:[root@localhost bin]# ./zkServer.sh status
4.dubbo在java中的使用
需要以來的jar包
ps:代碼中博主沒有貼出版本號,寫在這裡大家自行參考版本
<dubbo.version>2.5.3</dubbo.version>
<zookeeper.version>3.4.7</zookeeper.version>
<zkclient.version>0.1</zkclient.version>
<!-- dubbo相關 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency>
需要將dubbo配置在Spring文件中
<!-- 使用dubbo發佈服務 --> <!-- 提供方應用信息,用於計算依賴關係 --> <dubbo:application name="aliyun-manager" /> <dubbo:registry protocol="zookeeper" address="192.168.32.129:2181" /> <!-- 用dubbo協議在20880埠暴露服務 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 聲明需要暴露的服務介面 --> <dubbo:service interface="cn.aliyun.service.ItemService" ref="itemServiceImpl" />
部分說明
如果沒什麼問題的話,這樣服務就發佈成功了.我們看一眼日誌
接受服務端dubbo配置文件
<dubbo:application name="aliyun-manager-web"/> <dubbo:registry protocol="zookeeper" address="192.168.32.129:2181"/> <dubbo:reference interface="cn.aliyun.service.ItemService" id="itemService" timeout="600000"/>
日誌
連接成功
ps:博主預設大家有一定的基礎,沒有特別詳細的寫過程,如果有什麼問題,在下方留言就好了
說一種情況,如果服務開啟後連接不上zookeeper,有可能是埠未開放,開放埠或關閉防火牆就好了
歡迎轉載:
中文名:惠凡
博客名:淹死的魚o0
轉載時請說明出處:http://www.cnblogs.com/huifan/