Nacos服務實例的權(quán)重設(shè)置方式(以及設(shè)置為0時的作用與場景)
先分析為何要用權(quán)重設(shè)置
Nacos有同集群優(yōu)先訪問的負載均衡,不過呢,我們部署的時候啊,可能會存在這么一種情況,因為企業(yè)里服務器設(shè)備啊,會更新迭代,有一些機器呢,性能比較好,還有一些屬于是祖?zhèn)髟O(shè)備了,性能非常的差,可以說是老弱病殘,這個時候呢,我們肯定是希望這些性能好的機器,它承擔更多的用戶請求,而那些性能差一點的,自然是承擔少一點的請求,正所謂能者多勞嘛。
但是我們目前看來,NacosRule做到的是集群優(yōu)先,而后做隨機,當用戶請求來了以后,它可不管你是性格好的還是差,這個身強力壯的還是老弱病殘拉過來就一頓造,那這個時候那些性能差的肯定就會出問題。
那么我們該怎樣去控制不同服務它的一個請求量呢?
哎,Nacos,給我們提供了一個權(quán)重的配置,通過修改服務實力的權(quán)重,可以控制訪問頻率,權(quán)重越大,訪問到的頻率就越高,那我們就可以把性能好的機器全都設(shè)得大一點,性能差一些呢,設(shè)置的小一點。
權(quán)重設(shè)置為0時,該實例就不會被訪問了,也就是說權(quán)重調(diào)整0時,它壓根兒就不會被訪問。
設(shè)置權(quán)重為0有什么作用?
我們以前一個服務,我們想要對它做一個版本的升級,我們該怎么辦?
我們是不是要把它重啟啊,但是你光天化日之下,你去重啟個服務器,是不好的,因為用戶都還在訪問,你一重啟別人就反應不了“哎,你這服務怎么掛了?”,就有問題了!對不對,所以說呢,我們是不能隨便重啟的。
往往呀,每次版本升級都是搞得跟那個什么諜戰(zhàn)片一樣,要找一個月黑風高無人之夜是吧,然后等用戶都下線兒了,我們偷偷的把服務停機,然后呢,去做版本的一個升級。
但是你想看,如果現(xiàn)在有了這個權(quán)重,我可不可以這么做?我有多個服務器,8081、8082、8083各自部署,我先將8081這個服務的權(quán)重調(diào)成零。
然后呢,大白天也沒事兒啊,這個時候呢,漸漸的8081就不承擔用戶請求了,那這個時候我對它做停機,用戶就不會有感知了,那么這個時候?qū)?081停機完了以后,就可以去做一些這個版本的升級,升級完成以后我再重啟,我給它權(quán)重先不著急調(diào)太大,先調(diào)小一點,調(diào)到零點多,0.01什么之類的,這個時候呢,我們放出少數(shù)用戶進來做個測試,看看行不行,如果沒什么問題,我們就可以逐漸擴大比例,一次升級,這個時候用戶是無感知的,你可以做到平滑升級。
非常優(yōu)雅,那么這樣呢,這種升級方式啊,其實就是比較比較順滑這種方式了,你就不用去大半夜去加班的去搞了。所以呢,這是我們這個權(quán)重的一些作用。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
深入理解Java中的final關(guān)鍵字_動力節(jié)點Java學院整理
Java中的final關(guān)鍵字非常重要,它可以應用于類、方法以及變量。這篇文章中我將帶你看看什么是final關(guān)鍵字以及使用final的好處,具體內(nèi)容詳情通過本文學習吧2017-04-04Spring中的@ConditionalOnProperty注解詳解
這篇文章主要介紹了Spring中的@ConditionalOnProperty注解詳解,常見的@Conditionalxxx開頭的注解我們稱之為條件注解,常見的條件注解有,簡單來講,一般是在配置類上或者是@Bean修飾的方法上,添加此注解表示一個類是否要被Spring上下文加載,需要的朋友可以參考下2024-01-01SpringBoot如何使用ApplicationContext獲取bean對象
這篇文章主要介紹了SpringBoot 如何使用ApplicationContext獲取bean對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11