44 | 互聯(lián)網(wǎng)架構(gòu)模板:“平臺”技術(shù)

當(dāng)業(yè)務(wù)規(guī)模比較小唯沮、系統(tǒng)復(fù)雜度不高時,運(yùn)維堪遂、測試介蛉、數(shù)據(jù)分析、管理等支撐功能主要由各系統(tǒng)或者團(tuán)隊獨(dú)立完成溶褪。隨著業(yè)務(wù)規(guī)模越來越大币旧,系統(tǒng)復(fù)雜度越來越高,子系統(tǒng)數(shù)量越來越多猿妈,如果繼續(xù)采取各自為政的方式來實(shí)現(xiàn)這些支撐功能吹菱,會發(fā)現(xiàn)重復(fù)工作非常多巍虫。因此我們自然而然就會想到將這些支撐功能做成平臺,避免重復(fù)造輪子鳍刷,減少不規(guī)范帶來的溝通和協(xié)作成本占遥。

今天,我就來聊聊互聯(lián)網(wǎng)架構(gòu)模板的“平臺”技術(shù)输瓜。由于每個平臺本身都是一個龐大的體系瓦胎,專欄只是介紹一下平臺的核心職責(zé)和關(guān)鍵設(shè)計點(diǎn),具體細(xì)節(jié)就不詳細(xì)展開了尤揣。

運(yùn)維平臺

運(yùn)維平臺核心的職責(zé)分為四大塊:配置搔啊、部署、監(jiān)控北戏、應(yīng)急负芋,每個職責(zé)對應(yīng)系統(tǒng)生命周期的一個階段,如下圖所示嗜愈。

配置:主要負(fù)責(zé)資源的管理旧蛾。例如,機(jī)器管理蠕嫁、IP 地址管理蚜点、虛擬機(jī)管理等。

部署:主要負(fù)責(zé)將系統(tǒng)發(fā)布到線上拌阴。例如绍绘,包管理、灰度發(fā)布管理迟赃、回滾等陪拘。

監(jiān)控:主要負(fù)責(zé)收集系統(tǒng)上線運(yùn)行后的相關(guān)數(shù)據(jù)并進(jìn)行監(jiān)控,以便及時發(fā)現(xiàn)問題纤壁。

應(yīng)急:主要負(fù)責(zé)系統(tǒng)出故障后的處理左刽。例如,停止程序酌媒、下線故障機(jī)器欠痴、切換 IP 等。

運(yùn)維平臺的核心設(shè)計要素是“四化”:標(biāo)準(zhǔn)化秒咨、平臺化喇辽、自動化、可視化雨席。

1. 標(biāo)準(zhǔn)化

需要制定運(yùn)維標(biāo)準(zhǔn)菩咨,規(guī)范配置管理、部署流程、監(jiān)控指標(biāo)抽米、應(yīng)急能力等特占,各系統(tǒng)按照運(yùn)維標(biāo)準(zhǔn)來實(shí)現(xiàn),避免不同的系統(tǒng)不同的處理方式云茸。標(biāo)準(zhǔn)化是運(yùn)維平臺的基礎(chǔ)是目,沒有標(biāo)準(zhǔn)化就沒有運(yùn)維平臺

如果某個系統(tǒng)就是無法改造自己來滿足運(yùn)維標(biāo)準(zhǔn)标捺,那該怎么辦呢胖笛?常見的做法是不改造系統(tǒng),由中間方來完成規(guī)范適配宜岛。例如,某個系統(tǒng)對外提供了 RESTful 接口的方式來查詢當(dāng)前的性能指標(biāo)功舀,而運(yùn)維標(biāo)準(zhǔn)是性能數(shù)據(jù)通過日志定時上報萍倡,那么就可以寫一個定時程序訪問 RESTful 接口獲取性能數(shù)據(jù),然后轉(zhuǎn)換為日志上報到運(yùn)維平臺辟汰。

2. 平臺化

傳統(tǒng)的手工運(yùn)維方式需要投入大量人力列敲,效率低,容易出錯帖汞,因此需要在運(yùn)維標(biāo)準(zhǔn)化的基礎(chǔ)上戴而,將運(yùn)維的相關(guān)操作都集成到運(yùn)維平臺中,通過運(yùn)維平臺來完成運(yùn)維工作翩蘸。

運(yùn)維平臺的好處有:

可以將運(yùn)維標(biāo)準(zhǔn)固化到平臺中所意,無須運(yùn)維人員死記硬背運(yùn)維標(biāo)準(zhǔn)。

運(yùn)維平臺提供簡單方便的操作催首,相比之下人工操作低效且容易出錯扶踊。

運(yùn)維平臺是可復(fù)用的,一套運(yùn)維平臺可以支撐幾百上千個業(yè)務(wù)系統(tǒng)郎任。

3. 自動化

傳統(tǒng)手工運(yùn)維方式效率低下的一個主要原因就是要執(zhí)行大量重復(fù)的操作秧耗,運(yùn)維平臺可以將這些重復(fù)操作固化下來,由系統(tǒng)自動完成舶治。

例如分井,一次手工部署需要登錄機(jī)器、上傳包霉猛、解壓包尺锚、備份舊系統(tǒng)、覆蓋舊系統(tǒng)惜浅、啟動新系統(tǒng)缩麸,這個過程中需要執(zhí)行大量的重復(fù)或者類似的操作。有了運(yùn)維平臺后,平臺需要提供自動化的能力杭朱,完成上述操作阅仔,部署人員只需要在最開始單擊“開始部署”按鈕,系統(tǒng)部署完成后通知部署人員即可弧械。

類似的還有監(jiān)控八酒,有了運(yùn)維平臺后,運(yùn)維平臺可以實(shí)時收集數(shù)據(jù)并進(jìn)行初步分析刃唐,當(dāng)發(fā)現(xiàn)數(shù)據(jù)異常時自動發(fā)出告警羞迷,無須運(yùn)維人員盯著數(shù)據(jù)看,或者寫一大堆“grep + awk + sed”來分析日志才能發(fā)現(xiàn)問題画饥。

4. 可視化

運(yùn)維平臺有非常多的數(shù)據(jù)衔瓮,如果全部通過人工去查詢數(shù)據(jù)再來判斷,則效率很低抖甘。尤其是在故障應(yīng)急時热鞍,時間就是生命,處理問題都是爭分奪秒衔彻,能減少 1 分鐘的時間就可能挽回幾十萬元的損失薇宠,可視化的主要目的就是為了提升數(shù)據(jù)查看效率。

可視化的原理和汽車儀表盤類似艰额,如果只是一連串的數(shù)字顯示在屏幕上澄港,相信大部分人一看到一連串的數(shù)字,第一感覺是眼花柄沮,而且也很難將數(shù)據(jù)與具體的情況聯(lián)系起來回梧。而有了儀表盤后,通過儀表盤的指針偏離幅度及指針指向的區(qū)域顏色祖搓,能夠一目了然地看出當(dāng)前的狀態(tài)是低速漂辐、中速還是高速。

可視化相比簡單的數(shù)據(jù)羅列棕硫,具備下面這些優(yōu)點(diǎn):

能夠直觀地看到數(shù)據(jù)的相關(guān)屬性髓涯,例如,汽車儀表盤中的數(shù)據(jù)最小值是 0哈扮,最大是 100纬纪,單位是 MPH。

能夠?qū)?shù)據(jù)的含義展示出來滑肉,例如汽車儀表盤中不同速度的顏色指示包各。

能夠?qū)㈥P(guān)聯(lián)數(shù)據(jù)整合一起展示,例如汽車儀表盤的速度和里程靶庙。

測試平臺

測試平臺核心的職責(zé)當(dāng)然就是測試了问畅,包括單元測試、集成測試、接口測試护姆、性能測試等矾端,都可以在測試平臺來完成。

測試平臺的核心目的是提升測試效率卵皂,從而提升產(chǎn)品質(zhì)量秩铆,其設(shè)計關(guān)鍵就是自動化。傳統(tǒng)的測試方式是測試人員手工執(zhí)行測試用例灯变,測試效率低殴玛,重復(fù)的工作多。通過測試平臺提供的自動化能力添祸,測試用例能夠重復(fù)執(zhí)行滚粟,無須人工參與,大大提升了測試效率刃泌。

為了達(dá)到“自動化”的目標(biāo)凡壤,測試平臺的基本架構(gòu)如下圖所示。

1. 用例管理

測試自動化的主要手段就是通過腳本或者代碼來進(jìn)行測試蔬咬,例如單元測試用例是代碼、接口測試用例可以用 Python 來寫沐寺、可靠性測試用例可以用 Shell 來寫林艘。為了能夠重復(fù)執(zhí)行這些測試用例,測試平臺需要將用例管理起來混坞,管理的維度包括業(yè)務(wù)狐援、系統(tǒng)、測試類型究孕、用例代碼啥酱。例如,網(wǎng)購業(yè)務(wù)的訂單系統(tǒng)的接口測試用例厨诸。

2. 資源管理

測試用例要放到具體的運(yùn)行環(huán)境中才能真正執(zhí)行镶殷,運(yùn)行環(huán)境包括硬件(服務(wù)器、手機(jī)微酬、平板電腦等)绘趋、軟件(操作系統(tǒng)、數(shù)據(jù)庫颗管、Java 虛擬機(jī)等)陷遮、業(yè)務(wù)系統(tǒng)(被測試的系統(tǒng))。

除了性能測試垦江,一般的自動化測試對性能要求不高帽馋,所以為了提升資源利用率,大部分的測試平臺都會使用虛擬技術(shù)來充分利用硬件資源,如虛擬機(jī)绽族、Docker 等技術(shù)姨涡。

3. 任務(wù)管理

任務(wù)管理的主要職責(zé)是將測試用例分配到具體的資源上執(zhí)行,跟蹤任務(wù)的執(zhí)行情況项秉。任務(wù)管理是測試平臺設(shè)計的核心绣溜,它將測試平臺的各個部分串聯(lián)起來從而完成自動化測試。

4. 數(shù)據(jù)管理

測試任務(wù)執(zhí)行完成后娄蔼,需要記錄各種相關(guān)的數(shù)據(jù)(例如怖喻,執(zhí)行時間、執(zhí)行結(jié)果岁诉、用例執(zhí)行期間的 CPU锚沸、內(nèi)存占用情況等),這些數(shù)據(jù)具備下面這些作用:

展現(xiàn)當(dāng)前用例的執(zhí)行情況涕癣。

作為歷史數(shù)據(jù)哗蜈,方便后續(xù)的測試與歷史數(shù)據(jù)進(jìn)行對比,從而發(fā)現(xiàn)明顯的變化趨勢坠韩。例如距潘,某個版本后單元測試覆蓋率從 90% 下降到 70%。

作為大數(shù)據(jù)的一部分只搁,可以基于測試的任務(wù)數(shù)據(jù)進(jìn)行一些數(shù)據(jù)挖掘音比。例如,某個業(yè)務(wù)一年執(zhí)行了 10000 個用例測試氢惋,另外一個業(yè)務(wù)只執(zhí)行了 1000 個用例測試洞翩,兩個業(yè)務(wù)規(guī)模和復(fù)雜度差不多,為何差異這么大焰望?

數(shù)據(jù)平臺

數(shù)據(jù)平臺的核心職責(zé)主要包括三部分:數(shù)據(jù)管理骚亿、數(shù)據(jù)分析和數(shù)據(jù)應(yīng)用。每一部分又包含更多的細(xì)分領(lǐng)域熊赖,詳細(xì)的數(shù)據(jù)平臺架構(gòu)如下圖所示来屠。

1. 數(shù)據(jù)管理

數(shù)據(jù)管理包含數(shù)據(jù)采集、數(shù)據(jù)存儲震鹉、數(shù)據(jù)訪問和數(shù)據(jù)安全四個核心職責(zé)的妖,是數(shù)據(jù)平臺的基礎(chǔ)功能。

數(shù)據(jù)采集:從業(yè)務(wù)系統(tǒng)搜集各類數(shù)據(jù)足陨。例如嫂粟,日志、用戶行為墨缘、業(yè)務(wù)數(shù)據(jù)等星虹,將這些數(shù)據(jù)傳送到數(shù)據(jù)平臺零抬。

數(shù)據(jù)存儲:將從業(yè)務(wù)系統(tǒng)采集的數(shù)據(jù)存儲到數(shù)據(jù)平臺,用于后續(xù)數(shù)據(jù)分析宽涌。

數(shù)據(jù)訪問:負(fù)責(zé)對外提供各種協(xié)議用于讀寫數(shù)據(jù)平夜。例如,SQL卸亮、Hive忽妒、Key-Value 等讀寫協(xié)議。

數(shù)據(jù)安全:通常情況下數(shù)據(jù)平臺都是多個業(yè)務(wù)共享的兼贸,部分業(yè)務(wù)敏感數(shù)據(jù)需要加以保護(hù)段直,防止被其他業(yè)務(wù)讀取甚至修改,因此需要設(shè)計數(shù)據(jù)安全策略來保護(hù)數(shù)據(jù)溶诞。

2. 數(shù)據(jù)分析

數(shù)據(jù)分析包括數(shù)據(jù)統(tǒng)計鸯檬、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)螺垢、深度學(xué)習(xí)等幾個細(xì)分領(lǐng)域喧务。

數(shù)據(jù)統(tǒng)計:根據(jù)原始數(shù)據(jù)統(tǒng)計出相關(guān)的總覽數(shù)據(jù)。例如枉圃,PV功茴、UV、交易額等孽亲。

數(shù)據(jù)挖掘:數(shù)據(jù)挖掘這個概念本身含義可以很廣坎穿,為了與機(jī)器學(xué)習(xí)和深度學(xué)習(xí)區(qū)分開,這里的數(shù)據(jù)挖掘主要是指傳統(tǒng)的數(shù)據(jù)挖掘方式墨林。例如赁酝,有經(jīng)驗(yàn)的數(shù)據(jù)分析人員基于數(shù)據(jù)倉庫構(gòu)建一系列規(guī)則來對數(shù)據(jù)進(jìn)行分析從而發(fā)現(xiàn)一些隱含的規(guī)律犯祠、現(xiàn)象旭等、問題等,經(jīng)典的數(shù)據(jù)挖掘案例就是沃爾瑪?shù)钠【婆c尿布的關(guān)聯(lián)關(guān)系的發(fā)現(xiàn)衡载。

機(jī)器學(xué)習(xí)搔耕、深度學(xué)習(xí):機(jī)器學(xué)習(xí)和深度學(xué)習(xí)屬于數(shù)據(jù)挖掘的一種具體實(shí)現(xiàn)方式,由于其實(shí)現(xiàn)方式與傳統(tǒng)的數(shù)據(jù)挖掘方式差異較大痰娱,因此數(shù)據(jù)平臺在實(shí)現(xiàn)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)時弃榨,需要針對機(jī)器學(xué)習(xí)和深度學(xué)習(xí)獨(dú)立進(jìn)行設(shè)計。

3. 數(shù)據(jù)應(yīng)用

數(shù)據(jù)應(yīng)用很廣泛梨睁,既包括在線業(yè)務(wù)鲸睛,也包括離線業(yè)務(wù)。例如坡贺,推薦官辈、廣告等屬于在線應(yīng)用箱舞,報表、欺詐檢測拳亿、異常檢測等屬于離線應(yīng)用晴股。

數(shù)據(jù)應(yīng)用能夠發(fā)揮價值的前提是需要有“大數(shù)據(jù)”,只有當(dāng)數(shù)據(jù)的規(guī)模達(dá)到一定程度肺魁,基于數(shù)據(jù)的分析电湘、挖掘才能發(fā)現(xiàn)有價值的規(guī)律、現(xiàn)象鹅经、問題等寂呛。如果數(shù)據(jù)沒有達(dá)到一定規(guī)模,通常情況下做好數(shù)據(jù)統(tǒng)計就足夠了瞬雹,尤其是很多初創(chuàng)企業(yè)昧谊,無須一開始就參考 BAT 來構(gòu)建自己的數(shù)據(jù)平臺。

管理平臺

管理平臺的核心職責(zé)就是權(quán)限管理酗捌,無論是業(yè)務(wù)系統(tǒng)(例如呢诬,淘寶網(wǎng))、中間件系統(tǒng)(例如胖缤,消息隊列 Kafka)尚镰,還是平臺系統(tǒng)(例如,運(yùn)維平臺)哪廓,都需要進(jìn)行管理狗唉。如果每個系統(tǒng)都自己來實(shí)現(xiàn)權(quán)限管理,效率太低涡真,重復(fù)工作很多分俯,因此需要統(tǒng)一的管理平臺來管理所有的系統(tǒng)的權(quán)限。

權(quán)限管理主要分為兩部分:身份認(rèn)證哆料、權(quán)限控制缸剪,其基本架構(gòu)如下圖所示。

1. 身份認(rèn)證

確定當(dāng)前的操作人員身份东亦,防止非法人員進(jìn)入系統(tǒng)杏节。例如,不允許匿名用戶進(jìn)入系統(tǒng)典阵。為了避免每個系統(tǒng)都自己來管理用戶奋渔,通常情況下都會使用企業(yè)賬號來做統(tǒng)一認(rèn)證和登錄。

2. 權(quán)限控制

根據(jù)操作人員的身份確定操作權(quán)限壮啊,防止未經(jīng)授權(quán)的人員進(jìn)行操作嫉鲸。例如,不允許研發(fā)人員進(jìn)入財務(wù)系統(tǒng)查看別人的工資歹啼。

小結(jié)

今天我為你講了互聯(lián)網(wǎng)企業(yè)常見的平臺以及基本的平臺功能玄渗,希望對你有所幫助减江。

這就是今天的全部內(nèi)容,留一道思考題給你吧捻爷,運(yùn)維平臺或者測試平臺辈灼,有的公司是由中間件團(tuán)隊負(fù)責(zé)開發(fā),有的是運(yùn)維和測試團(tuán)隊自己開發(fā)也榄,你覺得兩種方式各有什么優(yōu)缺點(diǎn)巡莹,分別適用什么場景呢?

歡迎你把答案寫到留言區(qū)甜紫,和我一起討論降宅。相信經(jīng)過深度思考的回答,也會讓你對知識的理解更加深刻囚霸。(編輯亂入:精彩的留言有機(jī)會獲得豐厚福利哦Q)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拓型,隨后出現(xiàn)的幾起案子额嘿,更是在濱河造成了極大的恐慌,老刑警劉巖劣挫,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件册养,死亡現(xiàn)場離奇詭異,居然都是意外死亡压固,警方通過查閱死者的電腦和手機(jī)球拦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帐我,“玉大人坎炼,你說我怎么就攤上這事±辜” “怎么了谣光?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矿咕。 經(jīng)常有香客問我抢肛,道長狼钮,這世上最難降的妖魔是什么碳柱? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮熬芜,結(jié)果婚禮上莲镣,老公的妹妹穿的比我還像新娘。我一直安慰自己涎拉,他們只是感情好瑞侮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布的圆。 她就那樣靜靜地躺著,像睡著了一般半火。 火紅的嫁衣襯著肌膚如雪越妈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天钮糖,我揣著相機(jī)與錄音梅掠,去河邊找鬼。 笑死店归,一個胖子當(dāng)著我的面吹牛阎抒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播消痛,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼且叁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秩伞?” 一聲冷哼從身側(cè)響起逞带,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纱新,沒想到半個月后掰担,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怒炸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年带饱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阅羹。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡勺疼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捏鱼,到底是詐尸還是另有隱情执庐,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布导梆,位于F島的核電站轨淌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏看尼。R本人自食惡果不足惜递鹉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藏斩。 院中可真熱鬧躏结,春花似錦呀闻、人聲如沸郑临。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泳梆。三九已至勃黍,卻和暖如春懦砂,著一層夾襖步出監(jiān)牢的瞬間姐扮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工子巾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留描孟,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓砰左,卻偏偏與公主長得像匿醒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缠导,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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