zookeeper宕機(jī)與dubbo直連的情況在面試中可能會(huì)被經(jīng)常問到,所以要引起重視。
在實(shí)際生產(chǎn)中,假如zookeeper注冊(cè)中心宕掉,一段時(shí)間內(nèi)服務(wù)消費(fèi)方還是能夠調(diào)用提供方的服務(wù)的,實(shí)際上它使用的本地緩存進(jìn)行通訊,這只是dubbo健壯性的一種提現(xiàn)。
dubbo的健壯性表現(xiàn):
- 監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù)
- 數(shù)據(jù)庫宕掉后,注冊(cè)中心仍能通過緩存提供服務(wù)列表查詢,但不能注冊(cè)新服務(wù)
- 注冊(cè)中心對(duì)等集群,任意一臺(tái)宕掉后,將自動(dòng)切換到另一臺(tái)
- 注冊(cè)中心全部宕掉后,服務(wù)提供者和服務(wù)消費(fèi)者仍能通過本地緩存通訊
- 服務(wù)提供者無狀態(tài),任意一臺(tái)宕掉后,不影響使用
- 服務(wù)提供者全部宕掉后,服務(wù)消費(fèi)者應(yīng)用將無法使用,并無限次重連等待服務(wù)提供者恢復(fù)
我們前面提到過:注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于目錄服務(wù),服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求,壓力較小。所以,我們可以完全可以繞過注冊(cè)中心——采用 dubbo 直連 ,即在服務(wù)消費(fèi)方配置服務(wù)提供方的位置信息。
xml配置方式:
<dubbo:reference id="userService" interface="com.zang.gmall.service.UserService" url="dubbo://localhost:20880" />
注解方式:
@Reference(url = "127.0.0.1:20880")
HelloService helloService;