基於ZooKeeper的Dubbo註冊中心【轉】

Zookeeper註冊中心安裝

建議使用dubbo-2.3.3以上版本的zookeeper註冊中心客戶端。Zookeeper是Apache Hadoop的子項目,強度相對較好,建議生產環境使用該註冊中心。Dubbo未對Zookeeper服務器端做任何侵入修改,只需安裝原生的Zookeeper服務器即可,所有註冊中心邏輯適配都在調用Zookeeper客戶端時完成。如果需要,可以考慮使用taobao的zookeeper監控:http://rdc.taobao.com/team/jm/archives/1450

安裝:

   tar zxvf zookeeper-3.3.3.tar.gz

   cd zookeeper-3.3.3

cp conf/zoo_sample.cfg conf/zoo.cfg

配置:

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地址需改成你真實部署機器的信息)

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/dubbo/zookeeper-3.3.3/data

clientPort=2181

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"/>

管理控制檯安裝

管理控制檯爲內部裁剪版本,開源部分主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能。

安裝:

wget 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

wget 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.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選舉,分佈式鎖等。

核心技術:Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx 
1.     項目核心代碼結構截圖

分佈式框架介紹 - kafkaee - kafkaee的博客

   項目模塊依賴

分佈式框架介紹 - kafkaee - kafkaee的博客


特別提醒:開發人員在開發的時候可以將自己的業務REST服務化或者Dubbo服務化

2.    項目依賴介紹

   2.1 後臺管理系統、Rest服務系統、Scheculer定時調度系統依賴如下圖:

 

分佈式框架介紹 - kafkaee - kafkaee的博客

       2.2 Dubbo獨立服務項目依賴如下圖:

 分佈式框架介紹 - kafkaee - kafkaee的博客

3.  項目功能部分截圖:

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

zookeeper、dubbo服務啓動 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

dubbo管控臺 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 REST服務平臺

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客

 

分佈式框架介紹 - kafkaee - kafkaee的博客


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章