master選舉
什么是master選舉绑咱?為什么需要master選舉?
為實(shí)現(xiàn)提供7*24的客戶服務(wù)枢泰,我們通常采用集群模式進(jìn)行服務(wù)發(fā)布描融,進(jìn)行接受請(qǐng)求 處理請(qǐng)求的即為master,為保證高可用性衡蚂,通常采用
master-slave模式窿克,當(dāng)master出現(xiàn)宕機(jī)等故障導(dǎo)致無法提供正常的客戶服務(wù)時(shí),選舉出一臺(tái)slave機(jī)作為master提供客戶服務(wù)毛甲,這個(gè)選舉的過程就是master選舉年叮。
架構(gòu)圖:
zookeeper集群:
zookeeper
/master -- master節(jié)點(diǎn)
/servers -- 服務(wù)器列表節(jié)點(diǎn)
/ work server1
/ work server2
/ work server3
工作服務(wù)器集群
work server1
work server2
work server3
主題流程:
1/ 每一臺(tái)工作服務(wù)器 在啟動(dòng)時(shí)都會(huì)向 work server 節(jié)點(diǎn)注冊(cè)一個(gè)臨時(shí)節(jié)點(diǎn) 寫入自己的基本信息 (服務(wù)注冊(cè)用以服務(wù)發(fā)現(xiàn)) 此處暫時(shí)不開展
2/ 每一臺(tái)工作服務(wù)器 在啟動(dòng)時(shí) 都會(huì)向master節(jié)點(diǎn) 注冊(cè)監(jiān)聽(監(jiān)聽master節(jié)點(diǎn)的刪除時(shí)間),如果發(fā)生刪除事件丽啡,則進(jìn)行 創(chuàng)建master 操作谋右。? -- 臨時(shí)節(jié)點(diǎn)
啟動(dòng)時(shí) 進(jìn)行 創(chuàng)建master操作? -- 臨時(shí)節(jié)點(diǎn)
3/ 如果 master創(chuàng)建 操作 執(zhí)行成功 則返回當(dāng)前的master節(jié)點(diǎn) 并標(biāo)記自己為master
如果創(chuàng)建不成功 則 讀取master節(jié)點(diǎn)并返回
4? 如果master節(jié)點(diǎn)讀取不成功 說明讀取時(shí)候發(fā)生了宕機(jī),則重新開始 創(chuàng)建master操作
會(huì)話失效則創(chuàng)建的臨時(shí)節(jié)點(diǎn)自動(dòng)刪除补箍,服務(wù)器宕機(jī)直接導(dǎo)致連接超時(shí)改执,會(huì)話失效,
監(jiān)聽master的刪除事件可以監(jiān)控當(dāng)前的服務(wù)器在線情況坑雅。如果發(fā)生宕機(jī)辈挂,則要開啟新一輪的選主操作。
LeaderSelectorZklient 調(diào)度器? 啟動(dòng)和停止workerver
WorkServer 服務(wù)器類 主工作類
Runningata 服務(wù)器的描述信息
網(wǎng)絡(luò)抖動(dòng):
網(wǎng)絡(luò)延遲從20ms變?yōu)?ms裹粤,網(wǎng)絡(luò)抖動(dòng)為15毫秒终蒂,描述的是網(wǎng)絡(luò)不穩(wěn)定性。
影響:
每一次由網(wǎng)絡(luò)抖動(dòng)所引發(fā)的master節(jié)點(diǎn)的宕機(jī)遥诉,將會(huì)導(dǎo)致master節(jié)點(diǎn)數(shù)據(jù)以及相關(guān)管理數(shù)據(jù)的遷移重新分配拇泣,因此應(yīng)付
網(wǎng)絡(luò)抖動(dòng)策略就是 當(dāng)之前的master節(jié)點(diǎn) 是自己時(shí) 就立馬 發(fā)起創(chuàng)建master節(jié)點(diǎn)操作,這樣就會(huì)提前創(chuàng)建master節(jié)點(diǎn)矮锈,
降低 數(shù)據(jù)重新遷移帶來的影響霉翔, 而哪些 之前的master節(jié)點(diǎn)不是自己的服務(wù)器,意味者如果當(dāng)前master節(jié)點(diǎn)選擇為自己的話苞笨,
需要進(jìn)行數(shù)據(jù)遷移债朵,網(wǎng)絡(luò)本身就不穩(wěn)定了子眶,再添加數(shù)據(jù)遷移無疑將會(huì)加大網(wǎng)絡(luò)瓶頸。因此序芦,當(dāng)之前的master節(jié)點(diǎn)不是自己時(shí)臭杰,
延遲5秒創(chuàng)建master,給上一個(gè)master充足的時(shí)間谚中,讓他繼續(xù)當(dāng)老大渴杆。
應(yīng)用場(chǎng)景: