您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“怎么定義開發環境的服務消費策略”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“怎么定義開發環境的服務消費策略”這篇文章吧。
關于rpc框架,簡單介紹下springcloud的 ribbon。
springcloud的注冊發現機制,當發現提供者有多個節點,會通過ribbon模塊的指定負載策略來選擇其中一個節點,這就是負載均衡。
ribbon自己默認實現了很多種負載策略,前面先簡單說下這些存在的常用的策略,最后重點說如何定義一個高效的dev環境負載策略。
ribbon代碼jar包:
關于負載均衡算法的代碼在
<dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-loadbalancer</artifactId> <version>2.2.5</version> </dependency>
ribbon默認實現的負載均衡策略有:
RoundRobinRule(輪訓策略):當可用服務有 node1,node2,node3時候,ribbon會在緩存里面存在這三個節點信息,然后再消費時候按照順序依次消費這個三個節點。這個策略也是ribbon默認的策略。
BestAvailableRule(最佳可用策略):當可用服務有 node1,node2,node3時候,ribbon會在緩存里面存在這三個節點信息,然后依次調用三個節點,如果節點被忽略跳過,沒有被忽略再去嘗試請求節點,如果該節點的瞬間并發最小,則會使用該節點的服務。
RandomRule(隨機策略):當可用服務有 node1,node2,node3時候,ribbon會在緩存里面存在這三個節點信息,然后隨機取出一個節點提供調用。隨機算法也很簡單,取可用節點的總數量值,然后用rand.next(可用節點總數量值)來獲取一個小于總數量的整數值,然后從可用節點list內取出一個服務來調用。
ZoneAvoidanceRule(百度翻譯:區域回避策略):在可用節點集群的上層,如果存在一個機房集群,比如程序在阿里云的華東節點,北京節點均有部署,則可以使用這個策略,他會優先幫你篩選出一個可用的zone,然后再去選擇一個可用的節點(這個策略應該很少用到吧,如果用到的話,應該運維會去做這個事情,我們的程序目前還只是在阿里云的華東2地區)。
還有好多種策略,大家可以自行選擇使用。
重點來了
對于開發人員有沒有感覺開發微服務程序時候,效率變得很低。程序啟動起來要花費十分鐘左右,一不小心就會出現臨時改端口,系統內存不足的情況。這其實對程序員是很痛苦的。
我先說一下我們之前遇到的問題:
開發需要把所有后端啟動起來,一個注冊中心,五個后端微服務,兩個前端(如果開發一個,就啟動一個)。這樣本地開發機器需要啟動最少七個程序(每個開發程序員擁有了服務端全代碼的git權限)。
領導對每個程序員擁有全代碼的權限有點敏感。
開發人員diss我,,程序吃內存導致電腦卡頓。
本地開發機器的服務不小心注冊到公共開發環境,但是本地代碼會有個別bug,開發環境的服務就會變得很詭異,一會好一會不好,使得產品經理總以產品不穩定理由來diss整個開發團隊,搞得火很大。
這個問題其實已經驗證影響開發人員的效率了,并且都在做一些無用功。所以就在想如果解決這個問題。
第一種:寫一個啟動腳本文件。一鍵啟動所有的程序,時間降低到了三分鐘,雖然時間減少了,但是對于開發人員的電腦卡頓,領導的敏感問題還是沒有解決。
第二種:開發環境部署一套完整的服務,程序員各自開發自己的程序。所有本地開發機器的服務都注冊到公共開發環境內。這時候,開發環境就是一個集群環境了。但是本地代碼都是不穩定的,如果其他同事調用了你的服務,那很容易就影響了其他同事的進度了。這時候的消費者歸納為兩種:開發環境,開發人員。提供者有三種:開發環境,當前開發人員,其他開發人員。所以對于開發環境他的消費優先級是開發環境》開發人員。對于開發人員他的消費優先級是當前開發人員提供的服務》開發環境提供的服務》其他開發人員提供的服務。這樣就可以達到一種效果,當你使用測試環境的app,web系統,他始終消費的是開發環境的服務。相對很穩定,對于開發人員想要調試自己寫的一個服務,只需要把對應點服務啟動起來,本地調用服務的時候,發現注冊中心只有開發環境的服務時候,直接消費。如果注冊中心多個服務節點的話,優先去本地開發環境ip的服務,如果沒有改服務,說明該服務其他同事本地也注冊進去了,但是相對來說消費開發環境的服務會更靠譜一些,所以取開發環境服務。
這樣就降低了啟動時間,減少了因為程序多耗內存,領導敏感的事情了。
具體的代碼實現:
聲明一個policy
實現該規則類,主要就是繼承 AbstractLoadBalancerRule 類
以上是“怎么定義開發環境的服務消費策略”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。