溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略

發(fā)布時(shí)間:2021-09-03 10:33:52 來(lái)源:億速云 閱讀:96 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略”這篇文章吧。

關(guān)于rpc框架,簡(jiǎn)單介紹下springcloud的 ribbon。

springcloud的注冊(cè)發(fā)現(xiàn)機(jī)制,當(dāng)發(fā)現(xiàn)提供者有多個(gè)節(jié)點(diǎn),會(huì)通過(guò)ribbon模塊的指定負(fù)載策略來(lái)選擇其中一個(gè)節(jié)點(diǎn),這就是負(fù)載均衡

ribbon自己默認(rèn)實(shí)現(xiàn)了很多種負(fù)載策略,前面先簡(jiǎn)單說(shuō)下這些存在的常用的策略,最后重點(diǎn)說(shuō)如何定義一個(gè)高效的dev環(huán)境負(fù)載策略。

ribbon代碼jar包:

怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略

關(guān)于負(fù)載均衡算法的代碼在

<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon-loadbalancer</artifactId>
    <version>2.2.5</version>
</dependency>

ribbon默認(rèn)實(shí)現(xiàn)的負(fù)載均衡策略有:

    RoundRobinRule(輪訓(xùn)策略):當(dāng)可用服務(wù)有 node1,node2,node3時(shí)候,ribbon會(huì)在緩存里面存在這三個(gè)節(jié)點(diǎn)信息,然后再消費(fèi)時(shí)候按照順序依次消費(fèi)這個(gè)三個(gè)節(jié)點(diǎn)。這個(gè)策略也是ribbon默認(rèn)的策略。

    BestAvailableRule(最佳可用策略):當(dāng)可用服務(wù)有 node1,node2,node3時(shí)候,ribbon會(huì)在緩存里面存在這三個(gè)節(jié)點(diǎn)信息,然后依次調(diào)用三個(gè)節(jié)點(diǎn),如果節(jié)點(diǎn)被忽略跳過(guò),沒(méi)有被忽略再去嘗試請(qǐng)求節(jié)點(diǎn),如果該節(jié)點(diǎn)的瞬間并發(fā)最小,則會(huì)使用該節(jié)點(diǎn)的服務(wù)。

怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略

        RandomRule(隨機(jī)策略):當(dāng)可用服務(wù)有 node1,node2,node3時(shí)候,ribbon會(huì)在緩存里面存在這三個(gè)節(jié)點(diǎn)信息,然后隨機(jī)取出一個(gè)節(jié)點(diǎn)提供調(diào)用。隨機(jī)算法也很簡(jiǎn)單,取可用節(jié)點(diǎn)的總數(shù)量值,然后用rand.next(可用節(jié)點(diǎn)總數(shù)量值)來(lái)獲取一個(gè)小于總數(shù)量的整數(shù)值,然后從可用節(jié)點(diǎn)list內(nèi)取出一個(gè)服務(wù)來(lái)調(diào)用。

       ZoneAvoidanceRule(百度翻譯:區(qū)域回避策略):在可用節(jié)點(diǎn)集群的上層,如果存在一個(gè)機(jī)房集群,比如程序在阿里云的華東節(jié)點(diǎn),北京節(jié)點(diǎn)均有部署,則可以使用這個(gè)策略,他會(huì)優(yōu)先幫你篩選出一個(gè)可用的zone,然后再去選擇一個(gè)可用的節(jié)點(diǎn)(這個(gè)策略應(yīng)該很少用到吧,如果用到的話(huà),應(yīng)該運(yùn)維會(huì)去做這個(gè)事情,我們的程序目前還只是在阿里云的華東2地區(qū))。

    還有好多種策略,大家可以自行選擇使用。

    重點(diǎn)來(lái)了

     對(duì)于開(kāi)發(fā)人員有沒(méi)有感覺(jué)開(kāi)發(fā)微服務(wù)程序時(shí)候,效率變得很低。程序啟動(dòng)起來(lái)要花費(fèi)十分鐘左右,一不小心就會(huì)出現(xiàn)臨時(shí)改端口,系統(tǒng)內(nèi)存不足的情況。這其實(shí)對(duì)程序員是很痛苦的。

    我先說(shuō)一下我們之前遇到的問(wèn)題: 

  1. 開(kāi)發(fā)需要把所有后端啟動(dòng)起來(lái),一個(gè)注冊(cè)中心,五個(gè)后端微服務(wù),兩個(gè)前端(如果開(kāi)發(fā)一個(gè),就啟動(dòng)一個(gè))。這樣本地開(kāi)發(fā)機(jī)器需要啟動(dòng)最少七個(gè)程序(每個(gè)開(kāi)發(fā)程序員擁有了服務(wù)端全代碼的git權(quán)限)。

  2. 領(lǐng)導(dǎo)對(duì)每個(gè)程序員擁有全代碼的權(quán)限有點(diǎn)敏感。

  3. 開(kāi)發(fā)人員diss我,,程序吃?xún)?nèi)存導(dǎo)致電腦卡頓。

  4. 本地開(kāi)發(fā)機(jī)器的服務(wù)不小心注冊(cè)到公共開(kāi)發(fā)環(huán)境,但是本地代碼會(huì)有個(gè)別bug,開(kāi)發(fā)環(huán)境的服務(wù)就會(huì)變得很詭異,一會(huì)好一會(huì)不好,使得產(chǎn)品經(jīng)理總以產(chǎn)品不穩(wěn)定理由來(lái)diss整個(gè)開(kāi)發(fā)團(tuán)隊(duì),搞得火很大。

這個(gè)問(wèn)題其實(shí)已經(jīng)驗(yàn)證影響開(kāi)發(fā)人員的效率了,并且都在做一些無(wú)用功。所以就在想如果解決這個(gè)問(wèn)題。

第一種:寫(xiě)一個(gè)啟動(dòng)腳本文件。一鍵啟動(dòng)所有的程序,時(shí)間降低到了三分鐘,雖然時(shí)間減少了,但是對(duì)于開(kāi)發(fā)人員的電腦卡頓,領(lǐng)導(dǎo)的敏感問(wèn)題還是沒(méi)有解決。

第二種:開(kāi)發(fā)環(huán)境部署一套完整的服務(wù),程序員各自開(kāi)發(fā)自己的程序。所有本地開(kāi)發(fā)機(jī)器的服務(wù)都注冊(cè)到公共開(kāi)發(fā)環(huán)境內(nèi)。這時(shí)候,開(kāi)發(fā)環(huán)境就是一個(gè)集群環(huán)境了。但是本地代碼都是不穩(wěn)定的,如果其他同事調(diào)用了你的服務(wù),那很容易就影響了其他同事的進(jìn)度了。這時(shí)候的消費(fèi)者歸納為兩種:開(kāi)發(fā)環(huán)境,開(kāi)發(fā)人員。提供者有三種:開(kāi)發(fā)環(huán)境,當(dāng)前開(kāi)發(fā)人員,其他開(kāi)發(fā)人員。所以對(duì)于開(kāi)發(fā)環(huán)境他的消費(fèi)優(yōu)先級(jí)是開(kāi)發(fā)環(huán)境》開(kāi)發(fā)人員。對(duì)于開(kāi)發(fā)人員他的消費(fèi)優(yōu)先級(jí)是當(dāng)前開(kāi)發(fā)人員提供的服務(wù)》開(kāi)發(fā)環(huán)境提供的服務(wù)》其他開(kāi)發(fā)人員提供的服務(wù)。這樣就可以達(dá)到一種效果,當(dāng)你使用測(cè)試環(huán)境的app,web系統(tǒng),他始終消費(fèi)的是開(kāi)發(fā)環(huán)境的服務(wù)。相對(duì)很穩(wěn)定,對(duì)于開(kāi)發(fā)人員想要調(diào)試自己寫(xiě)的一個(gè)服務(wù),只需要把對(duì)應(yīng)點(diǎn)服務(wù)啟動(dòng)起來(lái),本地調(diào)用服務(wù)的時(shí)候,發(fā)現(xiàn)注冊(cè)中心只有開(kāi)發(fā)環(huán)境的服務(wù)時(shí)候,直接消費(fèi)。如果注冊(cè)中心多個(gè)服務(wù)節(jié)點(diǎn)的話(huà),優(yōu)先去本地開(kāi)發(fā)環(huán)境ip的服務(wù),如果沒(méi)有改服務(wù),說(shuō)明該服務(wù)其他同事本地也注冊(cè)進(jìn)去了,但是相對(duì)來(lái)說(shuō)消費(fèi)開(kāi)發(fā)環(huán)境的服務(wù)會(huì)更靠譜一些,所以取開(kāi)發(fā)環(huán)境服務(wù)。

這樣就降低了啟動(dòng)時(shí)間,減少了因?yàn)槌绦蚨嗪膬?nèi)存,領(lǐng)導(dǎo)敏感的事情了。

具體的代碼實(shí)現(xiàn):

聲明一個(gè)policy

怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略

   實(shí)現(xiàn)該規(guī)則類(lèi),主要就是繼承 AbstractLoadBalancerRule 類(lèi)

怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略

以上是“怎么定義開(kāi)發(fā)環(huán)境的服務(wù)消費(fèi)策略”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI