dubbo注冊中心 dubbo注冊發(fā)現(xiàn)流程
夕逆IT
- 數(shù)據(jù)庫
- 2023-08-13
- 377

大家好,關(guān)于dubbo注冊中心很多朋友都還不太明白,今天小編就來為大家分享關(guān)于dubbo注冊發(fā)現(xiàn)流程的知識,希望對各位有所幫助!dubbo優(yōu)缺點(diǎn)dubbo有著以下幾大優(yōu)...
大家好,關(guān)于dubbo注冊中心很多朋友都還不太明白,今天小編就來為大家分享關(guān)于dubbo注冊發(fā)現(xiàn)流程的知識,希望對各位有所幫助!
dubbo優(yōu)缺點(diǎn)
dubbo有著以下幾大優(yōu)點(diǎn):
1、服務(wù)注冊中心自動注冊和配置管理
它不需要寫死服務(wù)提供者地址,注冊中心基于接口名自動查詢提供者ip;
使用類似zookeeper等分布式協(xié)調(diào)服務(wù)作為服務(wù)注冊中心,能夠?qū)⒋蠖鄶?shù)的項目配置移入zookeeper集群;
2、透明化的遠(yuǎn)程方法調(diào)用
這就好像調(diào)用本地方法一樣,調(diào)用遠(yuǎn)程方法;只需要很簡單的配置,沒有任何API侵入;
3、服務(wù)接口監(jiān)控和治理
Dubbo-admin和Dubbo-monitor提供了完善的服務(wù)接口管理和監(jiān)控功能;針對不同應(yīng)用的不同接口,能夠進(jìn)行多版本、多協(xié)議、多注冊中心管理;
4、軟負(fù)載均衡及容錯機(jī)制
能夠在內(nèi)網(wǎng)替代nginxlvs等硬件負(fù)載均衡器;
dubbo的缺點(diǎn):
dubbo僅僅只支持一種語言,那就是java語言。
dubbo服務(wù)器之間通過什么來調(diào)用
原理:首先有個服務(wù)器,提供注冊服務(wù),稱之為注冊中心。
服務(wù)提供方連接注冊中心,將對應(yīng)的服務(wù)配置到注冊中心中。服務(wù)消費(fèi)方連接到注冊中心,通過注冊中心,調(diào)用服務(wù)提供方提供的方法或服務(wù)。dubbo序列化優(yōu)缺點(diǎn)
Dubbo序列化有其優(yōu)點(diǎn)和缺點(diǎn)。1.優(yōu)點(diǎn):Dubbo支持多種序列化方式,如Hessian、JSON等。使用序列化可以將Java對象轉(zhuǎn)換成字節(jié)流或者其他格式,實(shí)現(xiàn)對象的傳輸和存儲。序列化能夠方便地在分布式系統(tǒng)中進(jìn)行數(shù)據(jù)傳遞,使得系統(tǒng)之間的通信更加高效和靈活。2.缺點(diǎn):在使用序列化的過程中,可能存在以下一些缺點(diǎn)。首先,序列化和反序列化的過程會引入一定的性能損耗。其次,不同的序列化框架可能有不同的兼容性和版本問題,需要進(jìn)行適配和處理。另外,某些序列化方式可能對數(shù)據(jù)的體積有一定的膨脹,增加了網(wǎng)絡(luò)傳輸?shù)拈_銷??傮w來說,Dubbo序列化提供了靈活和高效的數(shù)據(jù)傳輸方式,但在具體應(yīng)用時需要綜合考慮其性能和兼容性等因素。
Java開發(fā)大型互聯(lián)網(wǎng)時如何使用Dubbo注冊中心實(shí)現(xiàn)集群
Dubbo建議使用Zookeeper作為服務(wù)的注冊中心。
Zookeeper集群中只要有過半的節(jié)點(diǎn)是正常的情況下,那么整個集群對外就是可用的。正是基于這個特性,要將ZK集群的節(jié)點(diǎn)數(shù)量要為奇數(shù)(2n+1:如3、5、7個節(jié)點(diǎn))較為合適。
ZooKeeper與Dubbo服務(wù)集群架構(gòu)圖
?
服務(wù)器1:192.168.1.81端口:2181、2881、3881
服務(wù)器2:192.168.1.82端口:2182、2882、3882
服務(wù)器3:192.168.1.83端口:2183、2883、3883
1、修改操作系統(tǒng)的/etc/hosts文件,添加IP與主機(jī)名映射:
#zookeeperclusterservers
192.168.1.81edu-zk-01
192.168.1.82edu-zk-02
192.168.1.83edu-zk-03
2、下載或上傳zookeeper-3.4.6.tar.gz到/home/wusc/zookeeper目錄:
$cd/home/wusc/zookeeper
$wgethttp://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
3、解壓zookeeper安裝包,并按節(jié)點(diǎn)號對zookeeper目錄重命名:
$tar-zxvfzookeeper-3.4.6.tar.gz
服務(wù)器1:
$mvzookeeper-3.4.6node-01
服務(wù)器2:
$mvzookeeper-3.4.6node-02
服務(wù)器3:
$mvzookeeper-3.4.6node-03
4、在各zookeeper節(jié)點(diǎn)目錄下創(chuàng)建以下目錄:
$cd/home/wusc/zookeeper/node-0X(X代表節(jié)點(diǎn)號1、2、3,以下同解)
$mkdirdata
$mkdirlogs
5、將zookeeper/node-0X/conf目錄下的zoo_sample.cfg文件拷貝一份,命名為zoo.cfg:
$cpzoo_sample.cfgzoo.cfg
6、修改zoo.cfg配置文件:
zookeeper/node-01的配置(/home/wusc/zookeeper/node-01/conf/zoo.cfg)如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wusc/zookeeper/node-01/data
dataLogDir=/home/wusc/zookeeper/node-01/logs
clientPort=2181
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-02的配置(/home/wusc/zookeeper/node-02/conf/zoo.cfg)如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wusc/zookeeper/node-02/data
dataLogDir=/home/wusc/zookeeper/node-02/logs
clientPort=2182
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-03的配置(/home/wusc/zookeeper/node-03/conf/zoo.cfg)如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/wusc/zookeeper/node-03/data
dataLogDir=/home/wusc/zookeeper/node-03/logs
clientPort=2183
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
參數(shù)說明:
tickTime=2000
tickTime這個時間是作為Zookeeper服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔,也就是每個tickTime時間就會發(fā)送一個心跳。
initLimit=10
initLimit這個配置項是用來配置Zookeeper接受客戶端(這里所說的客戶端不是用戶連接Zookeeper服務(wù)器的客戶端,而是Zookeeper服務(wù)器集群中連接到Leader的Follower服務(wù)器)初始化連接時最長能忍受多少個心跳時間間隔數(shù)。當(dāng)已經(jīng)超過10個心跳的時間(也就是tickTime)長度后Zookeeper服務(wù)器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗??偟臅r間長度就是10*2000=20秒。
syncLimit=5
syncLimit這個配置項標(biāo)識Leader與Follower之間發(fā)送消息,請求和應(yīng)答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是5*2000=10秒。
dataDir=/home/wusc/zookeeper/node-01/data
dataDir顧名思義就是Zookeeper保存數(shù)據(jù)的目錄,默認(rèn)情況下Zookeeper將寫數(shù)據(jù)的日志文件也保存在這個目錄里。
clientPort=2181
clientPort這個端口就是客戶端(應(yīng)用程序)連接Zookeeper服務(wù)器的端口,Zookeeper會監(jiān)聽這個端口接受客戶端的訪問請求。
server.A=B:C:D
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
A是一個數(shù)字,表示這個是第幾號服務(wù)器;
B是這個服務(wù)器的IP地址(或者是與IP地址做了映射的主機(jī)名);
C第一個端口用來集群成員的信息交換,表示這個服務(wù)器與集群中的Leader服務(wù)器交換信息的端口;
D是在leader掛掉時專門用來進(jìn)行選舉leader所用的端口。
注意:如果是偽集群的配置方式,不同的Zookeeper實(shí)例通信端口號不能一樣,所以要給它們分配不同的端口號。
7、在dataDir=/home/wusc/zookeeper/node-0X/data下創(chuàng)建myid文件
編輯myid文件,并在對應(yīng)的IP的機(jī)器上輸入對應(yīng)的編號。如在node-01上,myid文件內(nèi)容就是1,node-02上就是2,node-03上就是3:
$vi/home/wusc/zookeeper/node-01/data/myid##值為1
$vi/home/wusc/zookeeper/node-02/data/myid##值為2
$vi/home/wusc/zookeeper/node-03/data/myid##值為3
8、在防火墻中打開要用到的端口218X、288X、388X
切換到root用戶權(quán)限,執(zhí)行以下命令:
#chkconfigiptableson
#serviceiptablesstart
編輯/etc/sysconfig/iptables
#vi/etc/sysconfig/iptables
如服務(wù)器01增加以下3行:
##zookeeper
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport2181-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport2881-jACCEPT
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport3881-jACCEPT
重啟防火墻:
#serviceiptablesrestart
查看防火墻端口狀態(tài):
#serviceiptablesstatus
9、啟動并測試zookeeper(要用wusc用戶啟動,不要用root):
(1)使用wusc用戶到/home/wusc/zookeeper/node-0X/bin目錄中執(zhí)行:
$/home/wusc/zookeeper/node-01/bin/zkServer.shstart
$/home/wusc/zookeeper/node-02/bin/zkServer.shstart
$/home/wusc/zookeeper/node-03/bin/zkServer.shstart
(2)輸入jps命令查看進(jìn)程:
$jps
1456QuorumPeerMain
其中,QuorumPeerMain是zookeeper進(jìn)程,說明啟動正常
(3)查看狀態(tài):
$/home/wusc/zookeeper/node-01/bin/zkServer.shstatus
(4)查看zookeeper服務(wù)輸出信息:
由于服務(wù)信息輸出文件在/home/wusc/zookeeper/node-0X/bin/zookeeper.out
$tail-500fzookeeper.out
10、停止zookeeper進(jìn)程:
$zkServer.shstop
11、配置zookeeper開機(jī)使用wusc用戶啟動:
編輯node-01、node-02、node-03中的/etc/rc.local文件,分別加入:
su-wusc-c'/home/wusc/zookeeper/node-01/bin/zkServer.shstart'
su-wusc-c'/home/wusc/zookeeper/node-02/bin/zkServer.shstart'
su-wusc-c'/home/wusc/zookeeper/node-03/bin/zkServer.shstart'
二、安裝Dubbo管控臺(基礎(chǔ)篇有講,此處重點(diǎn)講管控臺如何鏈接集群):
Dubbo管控臺可以對注冊到zookeeper注冊中心的服務(wù)或服務(wù)消費(fèi)者進(jìn)行管理,但管控臺是否正常對Dubbo服務(wù)沒有影響,管控臺也不需要高可用,因此可以單節(jié)點(diǎn)部署。
IP:192.168.1.81
部署容器:Tomcat7
端口:8080
1、下載(或上傳)最新版的Tomcat7(apache-tomcat-7.0.57.tar.gz)到/home/wusc/
2、解壓:
$tar-zxvfapache-tomcat-7.0.57.tar.gz
$mvapache-tomcat-7.0.57dubbo-admin-tomcat
3、移除/home/wusc/dubbo-admin-tomcat/webapps目錄下的所有文件:
$rm-rf*
4、上傳Dubbo管理控制臺程序dubbo-admin-2.5.3.war
到/home/wusc/dubbo-admin-tomcat/webapps
5、解壓并把目錄命名為ROOT:
$unzipdubbo-admin-2.5.3.war-dROOT
把dubbo-admin-2.5.3.war移到/home/wusc/tools目錄備份
$mvdubbo-admin-2.5.3.war/home/wusc/tools
6、配置dubbo.properties:
$viROOT/WEB-INF/dubbo.properties
dubbo.registry.address=zookeeper://192.168.1.81:2181?backup=192.168.1.82:2182,192.168.1.83:2183
dubbo.admin.root.password=wusc.123
dubbo.admin.guest.password=wusc.123
(以上密碼在正式上生產(chǎn)前要修改)
7、防火墻開啟8080端口,用root用戶修改/etc/sysconfig/iptables,
#vi/etc/sysconfig/iptables
增加:
##dubbo-admin-tomcat:8080
-AINPUT-mstate--stateNEW-mtcp-ptcp--dport8080-jACCEPT
重啟防火墻:
#serviceiptablesrestart
8、啟動Tomat7
$/home/wusc/dubbo-admin-tomcat/bin/startup.sh
9、瀏覽http://192.168.1.81:8080/
10、配置部署了Dubbo管控臺的Tomcat開機(jī)啟動:
在虛擬主機(jī)中編輯/etc/rc.local文件,加入:
su-wusc-c'/home/wusc/dubbo-admin-tomcat/bin/startup.sh'
dubbo集群模式
Dubbo的集群就是指接口提供者的集合,而不是節(jié)點(diǎn)或者機(jī)器的集合。做為一個開放的rpc框架,顯然要能夠很容易的集成現(xiàn)有的注冊中心。
這里Dubbo的邏輯是,如果url是具體服務(wù)節(jié)點(diǎn)的url,比如dubbo://127.0.0.1:12345,那就正常走建立連接,發(fā)起調(diào)用。
如果url是注冊中心url,Dubbo通過替換成集群的Invoker來發(fā)起調(diào)用。
dubbo組件有哪些
Dubbo主要有5個核心組件:服務(wù)提供者,消費(fèi)者,注冊中心,容器,監(jiān)控中心
容器:負(fù)責(zé)啟動、加載、運(yùn)行服務(wù)提供者
提供者:啟動時,向注冊中心提供服務(wù)
消費(fèi)者:從注冊中心訂閱服務(wù)
注冊中心:返回服務(wù)提供者列表給消費(fèi)者。
注冊中心只負(fù)責(zé)地址的注冊和查找,不參數(shù)數(shù)據(jù)傳輸和請求的轉(zhuǎn)發(fā),壓力較小,注冊中心會部署集群,當(dāng)任意一臺宕機(jī)后,將自動切換另一臺,不會影響提供者和消費(fèi)者的交互,
關(guān)于dubbo注冊中心和dubbo注冊發(fā)現(xiàn)流程的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
本文鏈接:http://xinin56.com/su/591.html