Nacos 作為目前主流的微服務(wù)中間件,包含了兩個(gè)頂級(jí)的微服務(wù)功能:配置中心和注冊(cè)中心。
配置中心是一種集中化管理配置的服務(wù),通俗易懂的說(shuō)就是將本地配置文件“云端化”。 這樣做的好處有以下幾個(gè):
當(dāng)然,配置中心不可能有負(fù)載均衡的功能,所以略過(guò),咱們直接來(lái)看注冊(cè)中心。
注冊(cè)中心(Registry)是分布式系統(tǒng)中的一個(gè)組件,用于實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)。注冊(cè)中心用于管理服務(wù)實(shí)例的元數(shù)據(jù)信息,并提供服務(wù)發(fā)現(xiàn)和路由的功能。
在微服務(wù)架構(gòu)中,服務(wù)之間經(jīng)常需要互相調(diào)用和通信。注冊(cè)中心的作用是為服務(wù)提供一個(gè)集中管理和協(xié)調(diào)的中心,默認(rèn)情況下,服務(wù)將自己的信息注冊(cè)到注冊(cè)中心,其他服務(wù)可以通過(guò)查詢注冊(cè)中心的信息來(lái)發(fā)現(xiàn)和調(diào)用目標(biāo)服務(wù)。
注冊(cè)中心的核心功能包括以下幾個(gè):
負(fù)載均衡嚴(yán)格的來(lái)說(shuō),并不算是傳統(tǒng)注冊(cè)中心的功能。?般來(lái)說(shuō)服務(wù)發(fā)現(xiàn)的完整流程應(yīng)該是先從注 冊(cè)中心獲取到服務(wù)的實(shí)例列表,然后再根據(jù)自身的需求,來(lái)選擇其中的部分實(shí)例或者按照?定的流 量分配機(jī)制來(lái)訪問(wèn)不同的服務(wù)提供者,因此注冊(cè)中心本身?般不限定服務(wù)消費(fèi)者的訪問(wèn)策略。
例如 Eureka、Zookeeper 包括 Consul,本身都沒(méi)有去實(shí)現(xiàn)可配置及可擴(kuò)展的負(fù)載均衡機(jī)制,Eureka 的 負(fù)載均衡是由 Ribbon 來(lái)完成的,而 Consul 則是由 Fabio 做負(fù)載均衡。
也就是說(shuō)注冊(cè)中心和負(fù)載均衡,其實(shí)完全屬于兩個(gè)不同的東西,注冊(cè)中心主要提供服務(wù)的注冊(cè),以及將服務(wù)注冊(cè)的列表交給消費(fèi)者,至于消費(fèi)者要使用哪種負(fù)載均衡策略?完全可以由自己決定。此時(shí)消費(fèi)者可以通過(guò)客戶端負(fù)載均衡器來(lái)實(shí)現(xiàn)服務(wù)的選擇和調(diào)用,例如客戶端負(fù)載均衡器 Ribbon 或 Spring Cloud LoadBalancer。
客戶端負(fù)載均衡器通常位于服務(wù)的消費(fèi)者端,主要負(fù)責(zé)將請(qǐng)求合理地分發(fā)給不同的服務(wù)提供者。工作原理是客戶端在發(fā)起請(qǐng)求前,通過(guò)負(fù)載均衡算法選擇一個(gè)合適的服務(wù)實(shí)例進(jìn)行請(qǐng)求。客戶端根據(jù)服務(wù)實(shí)例的健康度、負(fù)載狀況等指標(biāo)來(lái)決定選擇哪個(gè)服務(wù)實(shí)例。常見(jiàn)的客戶端負(fù)載均衡器有 Ribbon、Feign 等。
服務(wù)端負(fù)載均衡器通常被稱為反向代理服務(wù)器或負(fù)載均衡器,它位于服務(wù)的提供者端,接收客戶端的請(qǐng)求,并根據(jù)一定的負(fù)載均衡策略將請(qǐng)求分發(fā)給后端的多個(gè)服務(wù)實(shí)例。工作原理是將客戶端的請(qǐng)求集中到負(fù)載均衡器,由負(fù)載均衡器將請(qǐng)求分發(fā)給多臺(tái)服務(wù)提供者。常見(jiàn)的服務(wù)器端負(fù)載均衡器有 Nginx、HAProxy 等。
然而 Nacos 的注冊(cè)中心和傳統(tǒng)的注冊(cè)中心不太一樣,例如 Eureka、Zookeeper、Consul 等。因?yàn)?Nacos 在 0.7.0 之后(包含此版本),它內(nèi)置了以下兩種負(fù)載均衡策略:
基于權(quán)重的負(fù)載均衡策略,這個(gè)在 Nacos 服務(wù)編輯的時(shí)候也可以看到其設(shè)置:
基于第三方 CMDB(地域就近訪問(wèn))標(biāo)簽的負(fù)載均衡策略,這個(gè)可以參考官方說(shuō)明文檔:https://nacos.io/zh-cn/blog/cmdb.html
注冊(cè)中心和負(fù)載均衡器嚴(yán)格意義上來(lái)說(shuō)是兩個(gè)東西,但 Nacos 注冊(cè)中心中,內(nèi)置了兩種負(fù)載均衡策略:基于權(quán)重和基于 CMDB(低于就近訪問(wèn))的負(fù)載均衡策略。
那么問(wèn)題來(lái)了,既然 Nacos 中內(nèi)置了基于權(quán)重的負(fù)載均衡策略,那為什么修改 Nacos 中的權(quán)重值,在服務(wù)端調(diào)用時(shí),卻沒(méi)看到任何變化?
本文鏈接:http://www.www897cc.com/showinfo-26-16130-0.html面試官:Nacos有幾種負(fù)載均衡策略?
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com