關(guān)于SpringCloud灰度發(fā)布的實現(xiàn)
一、springcloud灰度發(fā)布思路
- 注冊中心:不解釋了
- 根據(jù)用戶路由:user id關(guān)聯(lián)路由標(biāo)簽
- 區(qū)分服務(wù)實例:給服務(wù)實例打標(biāo)簽 eureka.instance.metadata-map.key=value
- 負載均衡ribbon:修改路由規(guī)則,根據(jù)用戶標(biāo)簽路由到對應(yīng)服務(wù)
二、ribbon大致原理
- RibbonAutoConfiguration 是起始點,會在spring啟動時被掃起來,實例化SpringClientFactory。
- SpringClientFactory 是獲取Ribbon相關(guān)實例或配置的工廠類,可以獲取指定服務(wù)的ILoadBalancer和IConfig等,繼承自NamedContextFactory。
- NamedContextFactory 維護了每個服務(wù)相關(guān)的上下文AnnotationConfigApplicationContext;上下文在第一次調(diào)用時被創(chuàng)建,并注冊、裝配相關(guān)類、接口;外界獲取相關(guān)類、接口就是從上下文中拿的。
- RibbonClientConfiguration 用來實例化自定義接口。
- XXXLoadBalancer 負責(zé)調(diào)用IRule選擇Server,并啟動定時任務(wù)更新ServerList列表。
- ZoneAvoidanceRule是默認的IRule,先利用XXXPredicate進行過濾,然后在從過濾的結(jié)果中選擇。
三、最終代碼實現(xiàn)
1.在目標(biāo)服務(wù)上配置灰度標(biāo)簽。
2.將想要的灰度標(biāo)簽保存到threadlocal里,注意有線程池的情況。
3.自定義路由規(guī)則IRule以及預(yù)判規(guī)則Predicate,將不符合標(biāo)簽的服務(wù)過濾掉掉,然后從剩下的服務(wù)中選一個。
4.自定義RibbonClientConfiguration,指定用步驟3的自定義IRule。
到此這篇關(guān)于關(guān)于SpringCloud灰度發(fā)布的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringCloud灰度發(fā)布內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring boot 數(shù)據(jù)源未配置異常的解決
這篇文章主要介紹了Spring boot 數(shù)據(jù)源未配置異常的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Java中tomcat memecached session 共享同步問題的解決辦法
這篇文章主要介紹了Java中tomcat memecached session 共享同步問題的解決辦法的相關(guān)資料,需要的朋友可以參考下2015-10-10