新聞中心
Dubbo簡(jiǎn)介
Dubbo是一個(gè)高性能的Java RPC框架,由阿里巴巴開發(fā)并于2012年正式開源,它提供了三個(gè)關(guān)鍵功能:面向接口的遠(yuǎn)程方法調(diào)用(RMI)、容錯(cuò)和負(fù)載均衡以及自動(dòng)服務(wù)注冊(cè)和發(fā)現(xiàn),Dubbo的目標(biāo)是讓開發(fā)者能夠快速地構(gòu)建分布式應(yīng)用和服務(wù),從而提高開發(fā)效率和系統(tǒng)性能。

Dubbo踩過的坑
1、服務(wù)注冊(cè)與發(fā)現(xiàn)配置不正確
在Dubbo中,服務(wù)提供者需要將自己的服務(wù)注冊(cè)到注冊(cè)中心,而服務(wù)消費(fèi)者則需要從注冊(cè)中心訂閱服務(wù),如果服務(wù)注冊(cè)與發(fā)現(xiàn)的配置不正確,可能導(dǎo)致服務(wù)無(wú)法正常提供或消費(fèi),配置了錯(cuò)誤的注冊(cè)中心地址、端口或者協(xié)議等。
解決方法:檢查并修正服務(wù)注冊(cè)與發(fā)現(xiàn)的配置,確保配置正確。
2、服務(wù)提供者和消費(fèi)者的包掃描路徑不一致
Dubbo在啟動(dòng)時(shí)會(huì)進(jìn)行包掃描,以找到提供的服務(wù)實(shí)現(xiàn)類和引用的服務(wù)接口,如果服務(wù)提供者和消費(fèi)者的包掃描路徑不一致,可能導(dǎo)致服務(wù)提供者找不到消費(fèi)者引用的服務(wù)接口,或者消費(fèi)者找不到服務(wù)提供者提供的服務(wù)實(shí)現(xiàn)類。
解決方法:確保服務(wù)提供者和消費(fèi)者的包掃描路徑一致,可以通過修改dubbo:application和dubbo:provider標(biāo)簽下的scan屬性來(lái)實(shí)現(xiàn)。
3、使用默認(rèn)端口導(dǎo)致通信失敗
Dubbo默認(rèn)使用的端口是20880,如果服務(wù)提供者和消費(fèi)者使用了相同的端口,可能會(huì)導(dǎo)致通信失敗,這是因?yàn)椴僮飨到y(tǒng)通常只允許一個(gè)進(jìn)程綁定一個(gè)端口。
解決方法:修改服務(wù)的端口號(hào),確保服務(wù)提供者和消費(fèi)者使用的端口不同,可以在dubbo:service標(biāo)簽下設(shè)置port屬性來(lái)修改端口號(hào)。
4、依賴沖突導(dǎo)致的序列化問題
Dubbo支持多種序列化方式,如Hessian、Kryo等,如果服務(wù)提供者和消費(fèi)者使用了不同的序列化方式,可能會(huì)導(dǎo)致序列化失敗,這是因?yàn)镈ubbo默認(rèn)使用的序列化方式可能與服務(wù)提供者或消費(fèi)者的依賴庫(kù)不兼容。
解決方法:確保服務(wù)提供者和消費(fèi)者使用相同的序列化方式,可以通過修改dubbo:protocol標(biāo)簽下的name屬性來(lái)實(shí)現(xiàn),都使用Hessian序列化方式,可以將name屬性設(shè)置為"hessian"。
相關(guān)問題與解答
1、Dubbo和Spring Cloud有什么區(qū)別?
答:Dubbo是一個(gè)獨(dú)立的分布式服務(wù)框架,主要關(guān)注RPC通信;而Spring Cloud是一套微服務(wù)解決方案,包含了多個(gè)子項(xiàng)目,如Eureka、Feign、Hystrix等,用于構(gòu)建分布式系統(tǒng),Dubbo可以作為Spring Cloud的一個(gè)組件使用,但它們并不是直接替代關(guān)系。
2、Dubbo如何實(shí)現(xiàn)負(fù)載均衡?
答:Dubbo支持多種負(fù)載均衡策略,如隨機(jī)、輪詢、最少活躍調(diào)用等,默認(rèn)情況下,Dubbo使用的是隨機(jī)負(fù)載均衡策略,可以通過在dubbo:reference標(biāo)簽下設(shè)置loadbalance屬性來(lái)選擇不同的負(fù)載均衡策略,使用輪詢負(fù)載均衡策略,可以將loadbalance屬性設(shè)置為"roundrobin"。
3、Dubbo如何實(shí)現(xiàn)服務(wù)降級(jí)?
答:Dubbo支持兩種降級(jí)策略:Failover(故障轉(zhuǎn)移)和Failfast(快速失敗),F(xiàn)ailover降級(jí)策略會(huì)在主節(jié)點(diǎn)出現(xiàn)故障時(shí)自動(dòng)切換到備用節(jié)點(diǎn);Failfast降級(jí)策略在檢測(cè)到某個(gè)服務(wù)不可用時(shí)立即停止調(diào)用該服務(wù),可以通過在dubbo:reference標(biāo)簽下設(shè)置retries屬性來(lái)控制重試次數(shù),將重試次數(shù)設(shè)置為3次,可以將retries屬性設(shè)置為"3",還可以通過設(shè)置failover屬性來(lái)選擇降級(jí)策略,啟用Failover降級(jí)策略,可以將failover屬性設(shè)置為"true"。
本文題目:那些年踩過的Dubbo坑有哪些
文章網(wǎng)址:http://www.dlmjj.cn/article/dheesii.html


咨詢
建站咨詢
