阿里巴巴的独立环境是如何实现的
點(diǎn)擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”
后臺(tái)回復(fù)”加群“加入公眾號(hào)專(zhuān)屬技術(shù)群
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/backend/comics-recommended/
?
本文由原作者投稿授權(quán)。作者:七岱,原文地址:https://juejin.im/post/5decbc92e51d45583c1cb408
什么是獨(dú)立環(huán)境
-
獨(dú)立環(huán)境,在環(huán)境內(nèi)的http請(qǐng)求,rpc,mq消息等都在該環(huán)境內(nèi),不會(huì)訪問(wèn)到其它環(huán)境的機(jī)器。常見(jiàn)的獨(dú)立環(huán)境如:測(cè)試環(huán)境,線上環(huán)境。
為什么需要獨(dú)立環(huán)境
-
第一個(gè)階段:你還是一個(gè)在校學(xué)生,接到一個(gè)設(shè)計(jì)作業(yè),然后你在自己的電腦上開(kāi)發(fā),在自己的電腦上運(yùn)行代碼,連接的是自己電腦的數(shù)據(jù)庫(kù),等老師檢查時(shí)候,你只要在自己電腦上操作一通就夠了。
-
第二個(gè)階段:你去幫學(xué)校社團(tuán)的一個(gè)小項(xiàng)目做功能補(bǔ)充,這個(gè)小項(xiàng)目已經(jīng)運(yùn)行在社團(tuán)自己租的服務(wù)器上了,你直接連接線上數(shù)據(jù)庫(kù)開(kāi)發(fā)也肯定是不行的,你還是在自己電腦上搞好,然后再部署到服務(wù)器上,這個(gè)時(shí)候你的開(kāi)發(fā)環(huán)境和服務(wù)器就是兩套環(huán)境。
-
第三個(gè)階段:你去一個(gè)小公司實(shí)習(xí)了,你本地是開(kāi)發(fā)環(huán)境,線上環(huán)境在專(zhuān)門(mén)的服務(wù)器上,但是公司畢竟是商業(yè)公司,不敢讓你把開(kāi)發(fā)好的東西直接放到線上,會(huì)有專(zhuān)門(mén)的測(cè)試測(cè)試,測(cè)試如果利用你本地來(lái)測(cè)試,那效率太低,一般都會(huì)拉出來(lái)一套測(cè)試環(huán)境,部署好你們提測(cè)的代碼進(jìn)行整體測(cè)試。
-
第四個(gè)階段:公司發(fā)展很快,開(kāi)發(fā)和測(cè)試都越來(lái)越多,并行的需求也越來(lái)越多,雖然大多時(shí)候每次提測(cè)會(huì)把眾多需求合并一起部署,但是零零碎碎的需求接踵而至,一個(gè)測(cè)試環(huán)境實(shí)在是扛不住了,公司搞了多套測(cè)試環(huán)境。
-
第五個(gè)階段:一些公司技術(shù)上采用了微服務(wù)架構(gòu),項(xiàng)目方式從瀑布開(kāi)發(fā)轉(zhuǎn)變?yōu)榱嗣艚蓍_(kāi)發(fā),經(jīng)常會(huì)有個(gè)一個(gè)一兩天開(kāi)發(fā)完成的需求,涉及到三四個(gè)服務(wù)的改動(dòng),開(kāi)發(fā)很難在本地實(shí)現(xiàn)測(cè)試也需要對(duì)應(yīng)的環(huán)境去測(cè)試。如果共用測(cè)試環(huán)境,就會(huì)需要多個(gè)開(kāi)發(fā)分支反復(fù)合并,環(huán)境大多時(shí)間處于部署中,影響測(cè)試進(jìn)度。所以需要的測(cè)試環(huán)境也會(huì)越來(lái)越多,當(dāng)然這些環(huán)境必須類(lèi)似測(cè)試環(huán)境和線上環(huán)境一樣相互隔離(數(shù)據(jù)庫(kù)層面除外),否則你測(cè)試一個(gè)需求,跑到了其它需求實(shí)現(xiàn)的分支上,測(cè)試結(jié)果根本不能保障。
獨(dú)立環(huán)境如何實(shí)現(xiàn)
在引入阿里巴巴獨(dú)立環(huán)境實(shí)現(xiàn)方式之前,首先引入我之前兩個(gè)公司的獨(dú)立環(huán)境方案,希望通過(guò)對(duì)比能讓大家更清楚每種方案的適用場(chǎng)景。
-
三套測(cè)試環(huán)境,采取瀑布方式的開(kāi)發(fā)模式,每一個(gè)環(huán)境往往有一個(gè)測(cè)試組所有,空余一套環(huán)境在一些緊急環(huán)境下便于適用。
優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,三套環(huán)境往往只需要通過(guò)在三個(gè)網(wǎng)段之中,每個(gè)環(huán)境有自己獨(dú)立的注冊(cè)中心。
缺點(diǎn):適用于瀑布式開(kāi)發(fā)模式,如果需求變更頻繁,或者有很多小需求,環(huán)境將會(huì)處在相互爭(zhēng)用的情況下。
-
每個(gè)人一臺(tái)測(cè)試機(jī),自己可以把自己涉及的服務(wù)拉取到自己的測(cè)試機(jī)器上,測(cè)試環(huán)境服務(wù)間通過(guò)host指定掉用本機(jī),自己測(cè)試時(shí)候可以通過(guò)fidder配置代理,讓請(qǐng)求打到對(duì)應(yīng)的機(jī)器上。
優(yōu)點(diǎn):操作時(shí)候相對(duì)方便,一開(kāi)始fidder配置完成后,后續(xù)只需要進(jìn)行host配置即可,如 fangwendeyuming.com 1.1.1.1(我機(jī)器的ip)
缺點(diǎn):在業(yè)務(wù)更加復(fù)雜的情況下,涉及到的服務(wù)會(huì)更多,往往一個(gè)業(yè)務(wù)請(qǐng)求鏈路上有很多各個(gè)bu的服務(wù),你不一定有權(quán)限部署對(duì)應(yīng)服務(wù),甚至你連對(duì)應(yīng)的服務(wù)是什么都不知道。
在阿里巴巴現(xiàn)在很多業(yè)務(wù)情況下,一個(gè)你從前端進(jìn)行的操作,可能會(huì)需要經(jīng)過(guò)十幾個(gè)服務(wù)的處理才會(huì)到達(dá)你代碼變更的服務(wù)中。鑒于業(yè)務(wù)的復(fù)雜,阿里巴巴內(nèi)部會(huì)有很多方式可以實(shí)現(xiàn)獨(dú)立環(huán)境,我們選取重要的和不涉及技術(shù)隱私的方面進(jìn)行講述。
首先,最頂層的也是通過(guò)常規(guī)的多套注冊(cè)中心的方式進(jìn)行隔離,通過(guò)這種方式區(qū)分出了,測(cè)試環(huán)境,預(yù)上線環(huán)境,線上環(huán)境。
在這個(gè)基礎(chǔ)上,測(cè)試環(huán)境和預(yù)上線環(huán)境往往都需要多套環(huán)境,因?yàn)閷?shí)現(xiàn)方式類(lèi)似,我們主要選取測(cè)試環(huán)境來(lái)講述。
阿里巴巴的測(cè)試環(huán)境,允許你給任何一個(gè)服務(wù)部署為一個(gè)獨(dú)立服務(wù),這個(gè)獨(dú)立服務(wù)可以是自身一個(gè),也可以將其它獨(dú)立服務(wù)聯(lián)合起來(lái)部署為一個(gè)整體的獨(dú)立服務(wù),還可以拉取其他的普通服務(wù)聯(lián)合(這時(shí)后續(xù)流程將不再隔離)
如果你的服務(wù)包括整個(gè)鏈路的源頭,那么非常簡(jiǎn)單,你只需要配置對(duì)應(yīng)的host,讓請(qǐng)求在你的獨(dú)立環(huán)境上,那么后續(xù)流程就會(huì)一直在你的獨(dú)立環(huán)境中流轉(zhuǎn)。
那如果源頭不是你的獨(dú)立環(huán)境呢,這時(shí)候我們先想下上面的流程中,源頭進(jìn)入了獨(dú)立環(huán)境是怎么保證后續(xù)的處理都在你對(duì)應(yīng)機(jī)器中呢?類(lèi)似與traceid,請(qǐng)求的鏈路中,會(huì)攜帶一個(gè)projectName的參數(shù),每次路由服務(wù)之時(shí),會(huì)根據(jù)這個(gè)name去匹配你之前申請(qǐng)獨(dú)立環(huán)境時(shí)候給你配置的name。這樣就保證了整個(gè)請(qǐng)求在你的獨(dú)立環(huán)境之中。所以,需要你做的就是讓程序明白你當(dāng)前的訪問(wèn)需要去對(duì)應(yīng)的獨(dú)立環(huán)境。
這里阿里巴巴有一個(gè)實(shí)現(xiàn)的tips。在你部署獨(dú)立環(huán)境時(shí)候,有一個(gè)路由到本獨(dú)立環(huán)境的配置,如果你勾選了,那么會(huì)保存你本機(jī)(你自己電腦ip)和對(duì)應(yīng)項(xiàng)目名稱(chēng)的映射,然后當(dāng)請(qǐng)求鏈路進(jìn)行過(guò)程中,traceid會(huì)攜帶請(qǐng)求的源頭ip,如果這個(gè)源頭ip 和你本機(jī)ip一致,那么就會(huì)路由到你的隔離環(huán)境中。
這個(gè)時(shí)候,我們?cè)僖暌幌?#xff0c;如果我想把我獨(dú)立環(huán)境上部署的功能,交給測(cè)試測(cè)試怎么辦呢,他機(jī)器的ip和我的肯定是不一樣的吧。這時(shí)候我們?cè)谌ゼ?xì)想上面提到的實(shí)現(xiàn)方案,如果我們?cè)谧畛醯恼?qǐng)求中,添加對(duì)應(yīng)的請(qǐng)求頭如下圖中所示。
路由中間件會(huì)根據(jù)如圖的key值去在每次路由時(shí)候?qū)ふ沂欠裼歇?dú)立的環(huán)境存在,有的話就將對(duì)應(yīng)的流量路由過(guò)去。
結(jié)語(yǔ)
為了讓大家了解獨(dú)立環(huán)境的必要所以在講述實(shí)現(xiàn)方式之前,一步步的延伸了獨(dú)立環(huán)境的必要性。如果有一天大家有幸感受過(guò)一個(gè)服務(wù)上部署七八個(gè)分支的情況,一定會(huì)更加理解獨(dú)立環(huán)境的必要。
注:本文主要講述獨(dú)立環(huán)境相關(guān),需要自身對(duì)traceId實(shí)現(xiàn)有大致了解,可以更加容易理解。
?
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/backend/comics-recommended/
想知道更多?掃描下面的二維碼關(guān)注我
【限時(shí)推廣1】
極客時(shí)間雙十二全場(chǎng)優(yōu)惠,特定申請(qǐng)了一個(gè)15元(滿40減15)優(yōu)惠口令:NIUBISIDA(上次的SIDANIUBI用掉了...),有效期截止日期本月月底。
【限時(shí)推廣2】
當(dāng)當(dāng)自營(yíng)圖書(shū)百萬(wàn)品種五折封頂,我這里有個(gè)優(yōu)惠碼:SD44VF,實(shí)付滿200減30(全場(chǎng)自營(yíng)圖書(shū)可用),記住有效期是 12.9-12.12
朕已閱?
超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的阿里巴巴的独立环境是如何实现的的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 嗯?那你来说说用 ArrayList 还
- 下一篇: Soul网关发布2.1.X之后,它到底有