官术网_书友最值得收藏!

4.1 什么是微服務(wù)架構(gòu)

4.1.1 微服務(wù)架構(gòu)的特點(diǎn)

微服務(wù)是當(dāng)前互聯(lián)網(wǎng)行業(yè)的主流架構(gòu)模式,各大互聯(lián)網(wǎng)巨頭也在用實(shí)際行動(dòng)全面擁抱微服務(wù)架構(gòu),這種架構(gòu)模式是在分布式應(yīng)用和SOA之上的進(jìn)一步擴(kuò)展,它的核心思想是“業(yè)務(wù)系統(tǒng)的組件化拆分和服務(wù)治理”。通過(guò)微服務(wù)架構(gòu),我們可以將一個(gè)龐大的業(yè)務(wù)系統(tǒng)拆分成細(xì)粒度的服務(wù)組件,并且我們可以對(duì)這些組件進(jìn)行獨(dú)立設(shè)計(jì)、開(kāi)發(fā)、測(cè)試和上線部署。

服務(wù)拆分是進(jìn)行微服務(wù)化改造的第一步,傳統(tǒng)的業(yè)務(wù)系統(tǒng)在向微服務(wù)架構(gòu)轉(zhuǎn)型的過(guò)程中,都要經(jīng)歷一番大刀闊斧的“拆遷工程”。業(yè)界通行的做法是結(jié)合領(lǐng)域驅(qū)動(dòng)建模和主鏈路規(guī)劃進(jìn)行服務(wù)拆分,本章將對(duì)微服務(wù)拆分的主流方法做詳細(xì)介紹。

拋開(kāi)紙上談兵的微服務(wù)三大特征(Small、Automated和Lightweight),我們從搭建大型應(yīng)用的視角來(lái)看,微服務(wù)架構(gòu)具有以下3個(gè)特點(diǎn):

(1)服務(wù)拆分與組件化:結(jié)合領(lǐng)域建模理論將一個(gè)大型應(yīng)用拆分成邊界清晰的子系統(tǒng)的集合(如訂單系統(tǒng)、商品中心、營(yíng)銷(xiāo)優(yōu)惠系統(tǒng)),再根據(jù)業(yè)務(wù)場(chǎng)景對(duì)子系統(tǒng)進(jìn)行更細(xì)粒度的拆分。

(2)獨(dú)立演進(jìn):拆分后的子應(yīng)用有自己獨(dú)立的數(shù)據(jù)庫(kù),可以獨(dú)立進(jìn)行開(kāi)發(fā)和部署,結(jié)合自動(dòng)化的DevOps和CICD持續(xù)集成方案,助力業(yè)務(wù)快速迭代。

(3)高可用:通過(guò)服務(wù)治理、流量整形、降級(jí)熔斷、削峰填谷和彈性計(jì)算等一系列技術(shù)手段,保證業(yè)務(wù)系統(tǒng)在高并發(fā)場(chǎng)景下的高可用性。

從本書(shū)第5章開(kāi)始,我們就通過(guò)優(yōu)惠券項(xiàng)目的開(kāi)發(fā)及微服務(wù)化過(guò)程,讓讀者切身感受微服務(wù)架構(gòu)的優(yōu)點(diǎn)。

4.1.2 一線大廠為什么采用微服務(wù)架構(gòu)

在互聯(lián)網(wǎng)飛速發(fā)展的同時(shí),誕生了一系列巨無(wú)霸式的移動(dòng)端應(yīng)用程序,比如以手機(jī)淘寶、支付寶和盒馬鮮生為代表的淘系產(chǎn)品,以及微信、抖音等具有社交娛樂(lè)屬性的全民App,它們的后臺(tái)業(yè)務(wù)以微服務(wù)架構(gòu)的模式部署在大規(guī)模集群之上,支撐著巨量的用戶請(qǐng)求。以筆者若干年前參與的“阿里系”產(chǎn)品為例,拿核心主鏈路上的某一個(gè)營(yíng)銷(xiāo)優(yōu)惠計(jì)算的微服務(wù)來(lái)說(shuō),在非大促時(shí)期就有近6000臺(tái)虛擬機(jī)的部署規(guī)模,整條產(chǎn)品線的體量更是一個(gè)極其驚人的數(shù)字。這類(lèi)承接海量用戶請(qǐng)求的巨無(wú)霸應(yīng)用,為什么都采用微服務(wù)模式來(lái)構(gòu)建業(yè)務(wù)系統(tǒng)呢?我們從三個(gè)方面來(lái)分析:

1. 支持快速迭代的業(yè)務(wù)

在微服務(wù)的理念中,微服務(wù)架構(gòu)就等同于微服務(wù)團(tuán)隊(duì),一個(gè)獨(dú)立的微服務(wù)模塊由一個(gè)開(kāi)發(fā)團(tuán)隊(duì)掌舵,而同時(shí)開(kāi)發(fā)團(tuán)隊(duì)也保持一個(gè)小型的特戰(zhàn)隊(duì)規(guī)模。由小規(guī)模團(tuán)隊(duì)來(lái)負(fù)責(zé)細(xì)分領(lǐng)域的業(yè)務(wù)模塊,使團(tuán)隊(duì)可以更專(zhuān)注于自己的獨(dú)立業(yè)務(wù),快速將業(yè)務(wù)落地上線,滿足互聯(lián)網(wǎng)行業(yè)快速試錯(cuò)、快速迭代的需求。如今大多數(shù)淘系業(yè)務(wù)的微服務(wù)團(tuán)隊(duì)仍保持10人以下的小團(tuán)隊(duì)規(guī)模。

2. 節(jié)約大量的計(jì)算資源

在單體架構(gòu)或者粗粒度的SOA、分布式架構(gòu)之下,系統(tǒng)擴(kuò)容往往是通過(guò)添加硬件服務(wù)器的水平擴(kuò)展模式來(lái)實(shí)現(xiàn)的,這相當(dāng)于吃上了大鍋飯,所有服務(wù)都分配到了資源,無(wú)法將計(jì)算資源集中在瓶頸業(yè)務(wù)上,造成了資源浪費(fèi)。在微服務(wù)的架構(gòu)模式下,系統(tǒng)被拆分成更細(xì)粒度的服務(wù)化組件,可以根據(jù)業(yè)務(wù)體量和性能壓測(cè)的結(jié)果,在各個(gè)服務(wù)之間合理分配計(jì)算資源,把資源用在真正需要的服務(wù)上。

以淘系電商場(chǎng)景為例,營(yíng)銷(xiāo)優(yōu)惠計(jì)算服務(wù)是一個(gè)承接海量用戶請(qǐng)求的模塊,商品的優(yōu)惠價(jià)格需要顯示在搜索列表頁(yè)、商品詳情頁(yè)、購(gòu)物車(chē)頁(yè)和訂單結(jié)算頁(yè),各個(gè)頁(yè)面都要調(diào)用營(yíng)銷(xiāo)優(yōu)惠計(jì)算接口。當(dāng)訪問(wèn)壓力增大時(shí),如果營(yíng)銷(xiāo)計(jì)算服務(wù)的響應(yīng)變慢,那么依賴(lài)營(yíng)銷(xiāo)計(jì)算服務(wù)的業(yè)務(wù)線都會(huì)受到影響,營(yíng)銷(xiāo)服務(wù)就很容易成為整個(gè)下單鏈路的瓶頸。在微服務(wù)架構(gòu)體系下,我們可以有針對(duì)性地添加硬件服務(wù)器和緩存資源到營(yíng)銷(xiāo)優(yōu)惠計(jì)算服務(wù)的集群環(huán)境中,將寶貴的計(jì)算資源投入瓶頸業(yè)務(wù)鏈路上。

3. 技術(shù)選型的多樣性

對(duì)單體應(yīng)用來(lái)說(shuō),引入新的技術(shù)棧是一件極其困難的事情,不僅要考慮和現(xiàn)有技術(shù)棧的兼容性,還要避免引起功能和依賴(lài)項(xiàng)的沖突,用新技術(shù)棧替換老技術(shù)棧更是一場(chǎng)艱苦卓絕的持久戰(zhàn)。而對(duì)微服務(wù)架構(gòu)的應(yīng)用來(lái)說(shuō),每個(gè)微服務(wù)都是可以獨(dú)立演進(jìn)的個(gè)體,在技術(shù)選型上有相當(dāng)大的自由度,只要遵循集團(tuán)層面的框架選型(比如使用指定的服務(wù)治理組件),技術(shù)團(tuán)隊(duì)在選型上就有了更大的話語(yǔ)權(quán),可以自主選擇適合業(yè)務(wù)發(fā)展的技術(shù)棧,并推進(jìn)技術(shù)棧的更新。

4.1.3 微服務(wù)架構(gòu)對(duì)系統(tǒng)運(yùn)維的挑戰(zhàn)

工欲善其事,必先利其器,若要借助微服務(wù)架構(gòu)達(dá)到業(yè)務(wù)快速迭代的目的,需要構(gòu)建一套高度自動(dòng)化的CICD工具(Continuous Integration and Continuous Delivery),從代碼提交到編譯構(gòu)建,再到單元測(cè)試和集成測(cè)試,最后根據(jù)指定的部署策略分批上線,整套流程需要構(gòu)建在高度自動(dòng)化的持續(xù)集成平臺(tái)之上。持續(xù)集成是DevOps領(lǐng)域的一個(gè)重要部分,不同于大型單體應(yīng)用動(dòng)輒數(shù)小時(shí)甚至十幾小時(shí)的編譯加回歸測(cè)試,微服務(wù)架構(gòu)下的應(yīng)用規(guī)模足夠靈巧,可以在短時(shí)間內(nèi)完成測(cè)試驗(yàn)證并發(fā)布上線。

微服務(wù)架構(gòu)下的應(yīng)用部署結(jié)構(gòu)非常復(fù)雜,對(duì)線上運(yùn)維體系也提出了更高的要求,需要搭建眾多的業(yè)務(wù)支持系統(tǒng)來(lái)保障系統(tǒng)的可用性。比如,業(yè)務(wù)接口可用性實(shí)時(shí)監(jiān)控系統(tǒng)、服務(wù)器異常的自動(dòng)診斷與恢復(fù)、洪峰流量下的彈性計(jì)算與流量切換,等等。

主站蜘蛛池模板: 梁平县| 肃北| 浮山县| 浪卡子县| 安国市| 天镇县| 酒泉市| 根河市| 泉州市| 弥勒县| 双江| 紫阳县| 称多县| 绥芬河市| 漯河市| 德兴市| 新闻| 邯郸县| 化州市| 新晃| 阳西县| 武川县| 赫章县| 平乐县| 河源市| 当涂县| 福州市| 新兴县| 门头沟区| 惠州市| 太湖县| 沙湾县| 海晏县| 麻栗坡县| 宁阳县| 大渡口区| 株洲县| 梅河口市| 迭部县| 奉化市| 温州市|