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