基于ZooKeeper的Dubbo注冊(cè)中心【轉(zhuǎn)】

Zookeeper注冊(cè)中心安裝

建議使用dubbo-2.3.3以上版本的zookeeper注冊(cè)中心客戶(hù)端。Zookeeper是Apache Hadoop的子項(xiàng)目,強(qiáng)度相對(duì)較好,建議生產(chǎn)環(huán)境使用該注冊(cè)中心。Dubbo未對(duì)Zookeeper服務(wù)器端做任何侵入修改,只需安裝原生的Zookeeper服務(wù)器即可,所有注冊(cè)中心邏輯適配都在調(diào)用Zookeeper客戶(hù)端時(shí)完成

安裝:

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的內(nèi)容如下:(其中data目錄需改成你真實(shí)輸出目錄)

tickTime=2000

initLimit=10

syncLimit=5

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

clientPort=2181

如果需要集群,zoo.cfg的內(nèi)容如下:(其中data目錄和server地址需改成你真實(shí)部署機(jī)器的信息)

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,對(duì)應(yīng)上面zoo.cfg中server.后的數(shù)字,第一臺(tái)的內(nèi)容為1,第二臺(tái)的內(nèi)容為2,內(nèi)容如下:

1

啟動(dòng):

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

或者

管理控制臺(tái)安裝

管理控制臺(tái)為內(nèi)部裁剪版本,開(kāi)源部分主要包含:路由規(guī)則,動(dòng)態(tài)配置,服務(wù)降級(jí),訪問(wèn)控制,權(quán)重調(diào)整,負(fù)載均衡,等管理功能。

安裝:

wgethttp://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

wgethttp://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

配置:(或?qū)ubbo.properties放在當(dāng)前用戶(hù)目錄下)

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

啟動(dòng):

./bin/startup.sh

停止:

./bin/shutdown.sh

訪問(wèn):(用戶(hù):root,密碼:root 或 用戶(hù):guest,密碼:guest)

http://127.0.0.1:8080/

注冊(cè)中心抽象

Dubbo的將注冊(cè)中心進(jìn)行抽象,是得它可以外接不同的存儲(chǔ)媒介給注冊(cè)中心提供服務(wù),有ZooKeeper,Memcached,Redis等。Dubbo抽象后,用戶(hù)可以進(jìn)行擴(kuò)展,我們通過(guò)分析ZooKeeper這個(gè)實(shí)現(xiàn)來(lái)了解注冊(cè)中心的低層。進(jìn)過(guò)抽象之后,用戶(hù) 只需要實(shí)現(xiàn)對(duì)應(yīng)的Registry和RegistryFactory就可以了,ZooKeeper就是實(shí)現(xiàn)了ZookeeperRegistry,和ZookeeperRegistryFactory。

ZookeeperRegistryFactory的實(shí)現(xiàn)很簡(jiǎn)單,就是返回一個(gè)ZookeeperRegistry實(shí)例,所以主要的東西是在ZookeeperRegistry中實(shí)現(xiàn)的,在ZookeeperRegistry用戶(hù)需要實(shí)現(xiàn)注冊(cè)URL,注銷(xiāo)URL,URL訂閱,URL注銷(xiāo)訂閱和URL查詢(xún),在這里面設(shè)計(jì)到Zookeeper服務(wù)端的調(diào)用,都被封裝到ZookeeperClient中,ZookeeperClient服務(wù)進(jìn)行Server連接,斷鏈;資源的CRUD。

ZooKeeper的價(jià)值

由于引入了ZooKeeper作為存儲(chǔ)媒介,也就把ZooKeeper的特性引進(jìn)來(lái)。首先是負(fù)載均衡,單注冊(cè)中心的承載能力是有限的,在流量達(dá)到一定程度的時(shí)候就需要分流,負(fù)載均衡就是為了分流而存在的,一個(gè)ZooKeeper群配合相應(yīng)的Web應(yīng)用就可以很容易達(dá)到負(fù)載均衡;資源同步,單單有負(fù)載均衡還不夠,節(jié)點(diǎn)之間的數(shù)據(jù)和資源需要同步,ZooKeeper集群就天然具備有這樣的功能;命名服務(wù),將樹(shù)狀結(jié)構(gòu)用于維護(hù)全局的服務(wù)地址列表,服務(wù)提供者在啟動(dòng)的時(shí)候,向ZK上的指定節(jié)點(diǎn)/dubbo/${serviceName}/providers目錄下寫(xiě)入自己的URL地址,這個(gè)操作就完成了服務(wù)的發(fā)布。其他特性還有Mast選舉,分布式鎖等。

核心技術(shù):Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx

1.?????項(xiàng)目核心代碼結(jié)構(gòu)截圖

項(xiàng)目模塊依賴(lài)

特別提醒:開(kāi)發(fā)人員在開(kāi)發(fā)的時(shí)候可以將自己的業(yè)務(wù)REST服務(wù)化或者Dubbo服務(wù)化

2.????項(xiàng)目依賴(lài)介紹

2.1?后臺(tái)管理系統(tǒng)、Rest服務(wù)系統(tǒng)、Scheculer定時(shí)調(diào)度系統(tǒng)依賴(lài)如下圖:

2.2?Dubbo獨(dú)立服務(wù)項(xiàng)目依賴(lài)如下圖:

3.??項(xiàng)目功能部分截圖:

zookeeper、dubbo服務(wù)啟動(dòng)

dubbo管控臺(tái)

REST服務(wù)平臺(tái)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容