微服務(wù)的兩處傷痛

前言

當(dāng)你打開(kāi)窗戶(hù)時(shí)当纱,清新的空氣會(huì)進(jìn)入房間,伴隨空氣的可能還有蚊子踩窖。微服務(wù)也一樣坡氯,有好處,也有壞處洋腮。我這里不講微服務(wù)帶來(lái)了哪些好處箫柳,這些都非常容易找到。微服務(wù)帶來(lái)了復(fù)雜性啥供,這點(diǎn)大家都有共識(shí)悯恍。復(fù)雜性衍生出了如下2個(gè)痛點(diǎn):

  • 痛點(diǎn)A: 部署一套環(huán)境很麻煩且耗資源

    現(xiàn)實(shí)中伙狐,可能有測(cè)試環(huán)境涮毫、性能測(cè)試環(huán)境、預(yù)發(fā)環(huán)境贷屎、生產(chǎn)環(huán)境等罢防。有的環(huán)境需要常駐,有的環(huán)境是臨時(shí)的唉侄,用完即可清理咒吐,如特性開(kāi)發(fā)環(huán)境、特性測(cè)試環(huán)境属划。

    跟微服務(wù)相伴的一般都有敏捷恬叹,甚至是敏捷的增強(qiáng)版——DevOps。微服務(wù)是敏捷發(fā)展的架構(gòu)階段榴嗅。微服務(wù)妄呕、敏捷、DevOps之間的關(guān)系可以參看下圖嗽测,也可以參考文章(https://www.infoworld.com/article/3075880/microservice-architecture-is-agile-software-architecture.html)绪励。

微服務(wù)DevOps.png

而實(shí)施敏捷就有多特性的并行開(kāi)發(fā),每個(gè)特性都需要有一套環(huán)境進(jìn)行調(diào)試和測(cè)試唠粥。想象一下疏魏,一個(gè)有30個(gè)以上服務(wù)的應(yīng)用,部署一套這樣的環(huán)境多么麻煩晤愧。

  • 痛點(diǎn)B: 隨著研發(fā)團(tuán)隊(duì)人員更迭大莫,沒(méi)人掌握整個(gè)系統(tǒng)的架構(gòu),服務(wù)之間的依賴(lài)關(guān)系不清楚官份。從而只厘,特性開(kāi)發(fā)或者修改bug時(shí)如履薄冰烙丛,不敢動(dòng)手。

如何解決痛點(diǎn)A?

對(duì)于這個(gè)痛點(diǎn)羔味,筆者看到過(guò)一些解決方案河咽,做得比較深入的是阿里,請(qǐng)參看文章(高能預(yù)警:文章很長(zhǎng)赋元,如果沒(méi)興趣看完也沒(méi)關(guān)系忘蟹,絲毫不影響本文的閱讀)。

在阿里搁凸,我們?nèi)绾喂芾頊y(cè)試環(huán)境

阿里的解決方式總結(jié)起來(lái)就是:發(fā)布平臺(tái)+本地服務(wù)+公共服務(wù)媚值。

阿里環(huán)境管理方案.png

但這種解決方式有如下2個(gè)缺點(diǎn):

  • 多特性環(huán)境依賴(lài)于公共的基礎(chǔ)服務(wù),有時(shí)會(huì)有沖突护糖;
  • 公共的基礎(chǔ)服務(wù)褥芒,如果需要回調(diào),不知道回調(diào)那哪個(gè)特性環(huán)境椅文。

現(xiàn)在喂很,我們來(lái)思考一下惜颇,這個(gè)問(wèn)題是否有更好的解決辦法皆刺?回到本痛點(diǎn)問(wèn)題:

  1. 部署麻煩,耗時(shí)耗力凌摄;
  2. 消耗資源大羡蛾。

我們能不能像管理單體應(yīng)用一樣,管理微服務(wù)應(yīng)用锨亏?答案是可以的痴怨!

1. 部署麻煩,耗時(shí)耗力器予。
對(duì)于這個(gè)問(wèn)題浪藻,解決起來(lái)相對(duì)比較簡(jiǎn)單,寫(xiě)一個(gè)完整的應(yīng)用部署腳本就行了乾翔,但也有一些額外的事情需要處理爱葵,比如:

  • 部署參數(shù)不一樣,需要調(diào)整反浓;
  • 統(tǒng)一配置中心上需要建不同的命名空間萌丈;
  • 公共的中間件新部署一套時(shí),如何將數(shù)據(jù)復(fù)制到新的中間件實(shí)例雷则。比如:數(shù)據(jù)庫(kù)的數(shù)據(jù)辆雾、消息隊(duì)列中的數(shù)據(jù);
  • 如果應(yīng)用使用了公共存儲(chǔ)月劈,新部署時(shí)需要特殊處理度迂。

但是藤乙,如果有一個(gè)部署平臺(tái)來(lái)解決這個(gè)問(wèn)題,\color{red} {提供環(huán)境的一鍵克隆功能}惭墓,自動(dòng)解決所有這些細(xì)節(jié)問(wèn)題湾盒,豈不美哉?

2. 消耗資源大诅妹。

這個(gè)問(wèn)題罚勾,傳統(tǒng)方式解決起來(lái)可能比較棘手。但使用腳本和程序也是可以解決的吭狡,如下是我的解決思路:

1. 底層部署使用K8s尖殃。進(jìn)程級(jí)別資源復(fù)用,壓榨資源划煮,資源利用率比虛擬機(jī)高50%以上送丰。這一點(diǎn)比較容易,只是有一定的遷移K8s的成本弛秋。
2. 按需創(chuàng)建器躏,到期清理。每套環(huán)境需要定義環(huán)境存活時(shí)間蟹略,到期自動(dòng)清理登失。
3. 自動(dòng)啟停服務(wù)。監(jiān)控每個(gè)微服務(wù)實(shí)例的流量訪問(wèn)情況挖炬,自動(dòng)啟停服務(wù)揽浙,釋放CPU和內(nèi)存資源。這一點(diǎn)結(jié)合K8s來(lái)實(shí)現(xiàn)意敛,效果會(huì)更佳馅巷。
4. 應(yīng)用畫(huà)像。用算法給每個(gè)應(yīng)用草姻、每個(gè)實(shí)例做畫(huà)像钓猬,動(dòng)態(tài)調(diào)整每個(gè)服務(wù)占用的CPU和內(nèi)存大小。
5. 底層硬件優(yōu)化撩独。

上面的后2點(diǎn)敞曹,據(jù)我了解,阿里云有團(tuán)隊(duì)已經(jīng)實(shí)現(xiàn)了跌榔。一般的團(tuán)隊(duì)沒(méi)有這個(gè)能力做這2點(diǎn)异雁。

如何解決痛點(diǎn)B?

此問(wèn)題傳統(tǒng)的解決辦法是依賴(lài)于人或者流程,包括如下幾點(diǎn):

  • 盡量留住對(duì)整個(gè)系統(tǒng)非常了解的架構(gòu)師僧须,或者平時(shí)有一個(gè)架構(gòu)師的backup纲刀,隨時(shí)能夠頂上來(lái);
  • 盡量在人員更替時(shí),做好交接示绊;
  • 平時(shí)盡量維護(hù)好系統(tǒng)的設(shè)計(jì)文檔锭部,以便新來(lái)的人學(xué)習(xí)。

從可行性上來(lái)說(shuō)面褐,第1點(diǎn)比其他兩點(diǎn)更靠譜拌禾。第2點(diǎn)和第3點(diǎn)都需要額外的人和流程來(lái)進(jìn)行監(jiān)督,收效甚微展哭。

是否有更好的解決思路湃窍?有!7税您市!思路主要包含如下幾點(diǎn):

1. 架構(gòu)圖定義好系統(tǒng)架構(gòu),包括哪些微服務(wù)役衡、中間件茵休、服務(wù)間依賴(lài)關(guān)系等。
2. 架構(gòu)圖可部署手蝎。架構(gòu)圖中的元素定義好部署參數(shù)榕莺,直接部署。
3. 封裝底層資源棵介,不能讓研發(fā)人員或運(yùn)維人員直接在底層資源上部署應(yīng)用钉鸯,所有的應(yīng)用部署必須以架構(gòu)圖部署。

這樣鞍时,最新的應(yīng)用亏拉,技術(shù)架構(gòu)是怎么樣扣蜻,依賴(lài)關(guān)系怎么樣逆巍,直接從對(duì)應(yīng)的架構(gòu)圖就能看出。

總結(jié)

其實(shí)莽使,如上2個(gè)痛點(diǎn)的解決方案锐极,可以融合在一起,做一個(gè)應(yīng)用管理平臺(tái)芳肌,包括如下模塊或功能即可灵再。

1. 應(yīng)用架構(gòu)圖管理。包括架構(gòu)圖設(shè)計(jì)亿笤、部署參數(shù)定義翎迁,最好是可視化的架構(gòu)圖。
2. 底層計(jì)算資源管理净薛。包括容器集群接入和刪除汪榔。
3. 架構(gòu)圖一鍵部署。
4. 應(yīng)用按需創(chuàng)建肃拜,到期自動(dòng)清理痴腌。
5. 應(yīng)用一鍵克隆雌团。
6. 服務(wù)的自動(dòng)啟停。
7. 服務(wù)資源占用的自動(dòng)調(diào)整士聪。
8. 底層硬件優(yōu)化锦援。

一圖勝千言,使用一張圖來(lái)表達(dá)包含這8點(diǎn)的解決方案剥悟,如下:


解決方案示意圖.png

有的企業(yè)內(nèi)部確實(shí)有在做類(lèi)似的平臺(tái)灵寺,筆者2011年在某大廠內(nèi)部見(jiàn)過(guò)類(lèi)似的平臺(tái),但是當(dāng)時(shí)該平臺(tái)是面向該大廠的特殊產(chǎn)品的区岗,而不是面向微服務(wù)應(yīng)用的替久,并且也只是實(shí)現(xiàn)了上述的部分功能。

坦誠(chéng)地講躏尉,這個(gè)平臺(tái)我們已經(jīng)做出來(lái)了:StarOS蚯根,但是上面羅列的5、6胀糜、7颅拦、8四點(diǎn)還沒(méi)有實(shí)現(xiàn),未來(lái)的規(guī)劃中會(huì)一一實(shí)現(xiàn)教藻。簡(jiǎn)單show一下它的架構(gòu)圖設(shè)計(jì)距帅、一鍵部署。

可視化架構(gòu)設(shè)計(jì)

可部署的架構(gòu)圖.png

可部署的架構(gòu)圖一鍵部署

一鍵部署.png

最后括堤,歡迎大家給我留言討論碌秸,集思廣益,讓開(kāi)發(fā)人員能夠做到“以業(yè)務(wù)為中心”悄窃,將所有非業(yè)務(wù)的東西沉淀為基礎(chǔ)設(shè)施讥电。歡迎大家試用StarOS,當(dāng)前可以免費(fèi)使用轧抗,有任何問(wèn)題可以給我們反饋恩敌,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末横媚,一起剝皮案震驚了整個(gè)濱河市纠炮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灯蝴,老刑警劉巖恢口,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異穷躁,居然都是意外死亡耕肩,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)看疗,“玉大人沙峻,你說(shuō)我怎么就攤上這事×椒迹” “怎么了摔寨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)怖辆。 經(jīng)常有香客問(wèn)我是复,道長(zhǎng),這世上最難降的妖魔是什么竖螃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任淑廊,我火速辦了婚禮,結(jié)果婚禮上特咆,老公的妹妹穿的比我還像新娘季惩。我一直安慰自己,他們只是感情好腻格,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布画拾。 她就那樣靜靜地躺著,像睡著了一般菜职。 火紅的嫁衣襯著肌膚如雪青抛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天酬核,我揣著相機(jī)與錄音蜜另,去河邊找鬼。 笑死嫡意,一個(gè)胖子當(dāng)著我的面吹牛举瑰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹅很,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嘶居,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了促煮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤整袁,失蹤者是張志新(化名)和其女友劉穎菠齿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體坐昙,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绳匀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疾棵。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戈钢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出是尔,到底是詐尸還是另有隱情殉了,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布拟枚,位于F島的核電站薪铜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恩溅。R本人自食惡果不足惜隔箍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脚乡。 院中可真熱鬧蜒滩,春花似錦、人聲如沸奶稠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窒典。三九已至蟆炊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瀑志,已是汗流浹背涩搓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劈猪,地道東北人昧甘。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像战得,于是被迫代替她去往敵國(guó)和親充边。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容