Dubbo是阿里巴巴開發的一個基於SOA(面向服務的體系結構)結構基礎的,實現RPC遠程調用的概念。java
Dubbo框架是基於容器運行的,容器是spring。redis
Dubbo服務架構,下圖:spring
一. 六個主體信息:sql
1.registry (註冊中心:用於發佈和訂閱服務的平臺 )數據庫
發佈:開發服務端代碼完畢後,將服務信息發佈出來,實現一個服務的公開。apache
發佈的信息包括但不限於:服務端所在位置(URL),要調用的接口命名,接口中有什麼方法,方法須要什麼參數,方法有什麼返回,調用過程超時時長是多少,調用過程自動重複多少次,參數數據和返回數據長度有多少等緩存
訂閱:客戶端程序,從註冊中心下載服務內容,就是發佈的服務信息,這個過程是訂閱。訂閱服務的時候,會將發佈的全部信息一次性下載到客戶端。客戶端也能夠自定義,修改部分服務信息。如:超時的時長,調用的重複次數等服務器
2.consumer 服務的消費者,就是服務的客戶端架構
消費者必須使用Dubbo技術開發部分代碼,基本上都是配置文件訂閱框架
3.provider 服務端
服務的提供者,就是服務端
服務端必須使用Dubbo技術開發部分代碼,以配置文件爲主。
4.protocol 協議 -通信標準
協議,在Dubbo技術中,客戶端和服務器的通信方式,都是創建在協議通信基礎之上。
Dubbo技術支持若干協議,如:dubbo協議(阿里自主開發的協議)、http協議、tcp協議等。
5.container 容器
Dubbo技術的服務端(provider),在啓動執行的時候,必須依賴容器才能正常啓動;
默認依賴spring容器,且Dubbo技術不能脫離spring框架;
在2.5.3版本的dubbo中,默認依賴的是spring2.5版本技術,可選用spring4.5如下版本;
在2.5.7版本的dubbo中,默認依賴的是spring4.3.10版本技術,可選擇任意spring版本。
6.monitor 監控中心
dubbo提供的一個war工程
主要功能是監控服務端(provider)和消費的(consumer)的使用數據,如服務端是什麼,有多少接口,多少方法,調用次數,壓力信息等,客戶端有多少客戶端有什麼,調用多哪些服務端,調用了多少次等,也能夠實現集羣權重的分配
2、dubbo的開發應用
1.註冊中心種類
(1)zookeeper官方推薦使用的註冊中心
zookeeper是Apache開發的一個java工程,是Hadoop工程的子工程,主體功能是用於實現其餘應用管理的一個管理平臺。
核心功能:管理多應用,統一管理配置信息,名稱管理服務,分佈式鎖等
管理多應用:Apache中有若干應用,如:Hadoop,bea,pig等,這些應用可能同時使用,須要一個統一的管理平臺,實現管理。
統一管理:在商業開發中,極可能同一個應用使用多份,如:多個Hadoop,那麼多個hadoop配置應用統一。
名稱服務管理:商業開發中,應用數量若干,如:Hadoop10個,pig20個,bea30個,在記憶各個應用位置的時候,很是麻煩,應用位置:主機名(IP)+端口號。zookeeper能夠爲每一個應用命名,相似域名,方便管理和查找
分佈鎖:若是多個同應用同時使用的時候,不一樣客戶端訪問過程是否有數據錯誤的可能。如:若干Hadoop,客戶端1訪問Hadoop1新增數據;客戶端2訪問Hadoop2查詢數據,查詢的結果應該包括新增的數據,先運行哪一個客戶端請求?保證數據結果正確性。
(2)multicast
廣播實現服務發佈和訂閱的註冊方式,不須要啓動任何的註冊中心平臺
只適用於小型的項目,在大型工程中會有通信阻塞問題(廣播風暴)
(3)redis
kv服務器,高速緩存服務器,是一個內存結構的相似數據庫的緩存服務器,也能夠成爲nosql數據庫;
實際就是經過鍵值對的形式,在redis中保存服務的發佈數據,客戶端經過科研查詢value,訂閱服務。
效率高,且可搭建集羣,使用部分大型商業開發,但穩定性不保證(穩定性由redis保證,dubbo不對其保證;zookeeper註冊中心穩定性高於redis,由於zookeeper自己就是作集羣多應用控制的,而redis作數據緩存,至關於數據庫的存在;這裏推薦使用zookeeper)
2.註冊中心的安裝
(1)先安裝jdk
a.解壓縮
tar -zvxf xxx.tar.gz (z是zip格式,v顯示解壓過程,x解壓縮 ,f是file,c是壓縮)
b.建議複製到/usr/local/目錄中(local目錄是公開目錄,全部用戶均可訪問)
cp -r xxx /usr/loacl/xxx
c.配置環境變量
(2)安裝zookeeper
a.下載位置:zookeeper.apache.org
b.解壓縮:tar -zxf zookeeper.tar.gz
c.複製到/usr/local目錄中 cp -r zookeepe /usr/local/zookeeper
d.簡介zookeepe資源:
bin:可執行文件(啓動、中止、狀態檢查、重啓等功能都經過目錄中的可執行文件操做);
conf:配置目錄保存全部的配置文件;
lib:就是zookeeper內容,zookeeper是java開發的,實際上就是一組jar包,lib中的jar就是zookeeper提供的源信息;
src:zookeeper提供的源代碼java開發的應用,開源免費;
data:臨時數據文件目錄,需自定義,可定義在任意位置,zookeeper使用的臨時數據文件目錄,是經過conf目錄中的配置文件配置的,默認是/tmp/zookeeper目錄下的臨時目錄
目錄中保證zookeeper運行過程的全部數據信息,包括臨時數據和持久化數據
1)啓動zookeeper (執行bin目錄中的zkServer.sh.start)
啓動後會有日誌文件建立,其中保存啓動日誌zookeeper.out;
若是啓動失敗,則在日誌文件中有對應的異常堆棧信息。
2)中止zookeeper(zkServer.sh.stop)
3)狀態查看(zkServer.sh.status)
a.成功啓動狀態信息:
b.啓動失敗錯誤信息:
4)重啓zookeeper(zkServer.sh.restart)
(3)客戶端訪問
使用zookeeper提供的默認客戶的訪問bin/zkCli.sh
默認鏈接本地服務,端口爲2181
指定鏈接:bin/zkCli.sh -server ip:port
客戶端命令:提供了一系列提示信息
ls查看服務中心是否更新服務