Zookeeper注冊中心安裝
建議使用 dubbo-2.3.3 以上版本的 zookeeper 注冊中心用戶端。
Zookeeper 是 Apache Hadoop 的子項目,強度相對較好,建議生産環境使用該注冊中心。
Dubbo 未對 Zookeeper 伺服器端做任何侵入修改,隻需安裝原生的 Zookeeper 伺服器即可,
所有注冊中心邏輯适配都在調用 Zookeeper 用戶端時完成。
如果需要,可以考慮使用 taobao 的 zookeeper 監控:
http://rdc.taobao.com/team/jm/archives/1450
安裝:
http://www.apache.org/dist//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
配置: vi conf/zoo.cfg
不需要叢集,zoo.cfg的内容如下:(其中data目錄需改成你真實輸出目錄)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/dubbo/zookeeper-3.3.3/data
clientPort=2181
需要叢集,zoo.cfg的内容如下:(其中data目錄和server位址需改成你真實部署機器的資訊)
server.1=10.20.153.10:2555:3555
server.2=10.20.153.11:2555:3555
在data目錄下放置 myid 檔案:(上面zoo.cfg中的dataDir)
mkdir data || vi myid
myid指明自己的id,對應上面zoo.cfg中server.後的數字,
第一台的内容為1,第二台的内容為2,内容如下:1
啟動: ./bin/zkServer.sh start
停止: ./bin/zkServer.sh stop
指令行: (See: http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html)
telnet 127.0.0.1 2181
dump
或者
echo dump | nc 127.0.0.1 2181
用法:
dubbo.registry.address=zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181
或者
<dubbo:registryprotocol="zookeeper"address="10.20.153.10:2181,10.20.153.11:2181"/>
管理控制台安裝
管理控制台為内部裁剪版本,開源部分主要包含:路由規則,動态配置,服務降級,通路控制,權重調整,負載均衡,等管理功能。
tomcat安裝:
http://apache.etoak.com/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz
tar zxvf apache-tomcat-6.0.35.tar.gz
cd apache-tomcat-6.0.35
rm -rf webapps/ROOT
dubbo監控安裝:
http://code.alibabatech.com/mvn/releases/com/alibaba/dubbo-admin/2.4.1/dubbo-admin-2.4.1.war
unzip dubbo-admin-2.4.1.war -d webapps/ROOT
dubbo監控配置: (或将dubbo.properties放在目前使用者目錄下)
vi webapps/ROOT/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
啟動: ./bin/startup.sh
停止: ./bin/shutdown.sh
通路: (使用者:root,密碼:root 或 使用者:guest,密碼:guest)
http://127.0.0.1:8080/
注冊中心抽象
Dubbo将注冊中心進行抽象,使得它可以外接不同的存儲媒介給注冊中心提供服務,
有ZooKeeper,Memcached,Redis等。
Dubbo抽象後,使用者可以進行擴充,我們通過分析 ZooKeeper 這個實作來了解注冊中心的低層。
進過抽象之後,使用者 隻需要實作對應的 Registry 和 RegistryFactory 就可以了,
ZooKeeper就是實作了 ZookeeperRegistry ,和 ZookeeperRegistryFactory。
ZookeeperRegistryFactory 的實作很簡單,就是傳回一個 ZookeeperRegistry 執行個體,是以主要的東西是在 ZookeeperRegistry 中實作的,在 ZookeeperRegistry 使用者需要實作注冊 URL,登出 URL,URL 訂閱,URL 登出訂閱,URL 查詢,在這裡面設計到 Zookeeper 服務端的調用,都被封裝到ZookeeperClient 中,ZookeeperClient 服務進行 Server 連接配接,斷鍊;資源的CRUD。
ZooKeeper的價值
由于引入了 ZooKeeper 作為存儲媒介,也就把 ZooKeeper 的特性引進來。
負載均衡:單注冊中心的承載能力是有限的,在流量達到一定程度的時候就需要分流,負載均衡就是為了分流而存在的,一個 ZooKeeper 群配合相應的 Web 應用就可以很容易達到負載均衡;
資源同步:單單有負載均衡還不夠,節點之間的資料和資源需要同步,ZooKeeper 叢集就天然具備有這樣的功能;
命名服務:将樹狀結構用于維護全局的服務位址清單,服務提供者在啟動的時候,向ZK上的指定節點/dubbo/${serviceName}/providers目錄下寫入自己的URL位址,這個操作就完成了服務的釋出。
其他特性還有Mast選舉,分布式鎖等