基于ZooKeeper的Dubbo注册中心【转】
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
Zookeeper注冊(cè)中心安裝
建議使用dubbo-2.3.3以上版本的zookeeper注冊(cè)中心客戶端。Zookeeper是Apache Hadoop的子項(xiàng)目,強(qiáng)度相對(duì)較好,建議生產(chǎn)環(huán)境使用該注冊(cè)中心。Dubbo未對(duì)Zookeeper服務(wù)器端做任何侵入修改,只需安裝原生的Zookeeper服務(wù)器即可,所有注冊(cè)中心邏輯適配都在調(diào)用Zookeeper客戶端時(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 |
或者
| <dubbo:registryprotocol="zookeeper"address="10.20.153.10:2181,10.20.153.11:2181"/> |
管理控制臺(tái)安裝
管理控制臺(tái)為內(nèi)部裁剪版本,開源部分主要包含:路由規(guī)則,動(dòng)態(tài)配置,服務(wù)降級(jí),訪問控制,權(quán)重調(diào)整,負(fù)載均衡,等管理功能。
安裝:
| 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
配置:?(或?qū)ubbo.properties放在當(dāng)前用戶目錄下)
| 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
訪問:?(用戶:root,密碼:root 或 用戶:guest,密碼:guest)
| http://127.0.0.1:8080/ |
?
注冊(cè)中心抽象
Dubbo的將注冊(cè)中心進(jìn)行抽象,是得它可以外接不同的存儲(chǔ)媒介給注冊(cè)中心提供服務(wù),有ZooKeeper,Memcached,Redis等。Dubbo抽象后,用戶可以進(jìn)行擴(kuò)展,我們通過分析ZooKeeper這個(gè)實(shí)現(xiàn)來了解注冊(cè)中心的低層。進(jìn)過抽象之后,用戶 只需要實(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用戶需要實(shí)現(xiàn)注冊(cè)URL,注銷URL,URL訂閱,URL注銷訂閱和URL查詢,在這里面設(shè)計(jì)到Zookeeper服務(wù)端的調(diào)用,都被封裝到ZookeeperClient中,ZookeeperClient服務(wù)進(jìn)行Server連接,斷鏈;資源的CRUD。
ZooKeeper的價(jià)值
由于引入了ZooKeeper作為存儲(chǔ)媒介,也就把ZooKeeper的特性引進(jìn)來。首先是負(fù)載均衡,單注冊(cè)中心的承載能力是有限的,在流量達(dá)到一定程度的時(shí)候就需要分流,負(fù)載均衡就是為了分流而存在的,一個(gè)ZooKeeper群配合相應(yīng)的Web應(yīng)用就可以很容易達(dá)到負(fù)載均衡;資源同步,單單有負(fù)載均衡還不夠,節(jié)點(diǎn)之間的數(shù)據(jù)和資源需要同步,ZooKeeper集群就天然具備有這樣的功能;命名服務(wù),將樹狀結(jié)構(gòu)用于維護(hù)全局的服務(wù)地址列表,服務(wù)提供者在啟動(dòng)的時(shí)候,向ZK上的指定節(jié)點(diǎn)/dubbo/${serviceName}/providers目錄下寫入自己的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)目模塊依賴
?
特別提醒:開發(fā)人員在開發(fā)的時(shí)候可以將自己的業(yè)務(wù)REST服務(wù)化或者Dubbo服務(wù)化
2.????項(xiàng)目依賴介紹
???2.1?后臺(tái)管理系統(tǒng)、Rest服務(wù)系統(tǒng)、Scheculer定時(shí)調(diào)度系統(tǒng)依賴如下圖:
?
?????? 2.2?Dubbo獨(dú)立服務(wù)項(xiàng)目依賴如下圖:
?
3.??項(xiàng)目功能部分截圖:
?
?
?
?
?
?
?
zookeeper、dubbo服務(wù)啟動(dòng)?
?
?
dubbo管控臺(tái)?
?
?
?
?
?
?
?REST服務(wù)平臺(tái)
?
?
?
轉(zhuǎn)載于:https://my.oschina.net/bngkjdnhfkjg/blog/775348
總結(jié)
以上是生活随笔為你收集整理的基于ZooKeeper的Dubbo注册中心【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NOIP考前模拟赛】纯数学方法推导——
- 下一篇: 为提高研发和测试质量而规范Scrum项目