系統(tǒng)架構(gòu)篇:傳統(tǒng)架構(gòu)和中臺(tái)架構(gòu)的辨析
自從頭部互聯(lián)網(wǎng)企業(yè)提出中臺(tái)概念,很多企業(yè)都開始搭建中臺(tái)系統(tǒng),中臺(tái)系統(tǒng)到底是什么和傳統(tǒng)系統(tǒng)有哪些差異呢?本文通俗的聊一聊中臺(tái)系統(tǒng)。
聲明:本文非專業(yè)技術(shù)文章,重點(diǎn)在于通俗易懂。
一、傳統(tǒng)架構(gòu)和中臺(tái)架構(gòu)
1. 中臺(tái)和PaaS的關(guān)系
先辨析下中臺(tái)系統(tǒng)和PaaS系統(tǒng)的關(guān)系:
- 從外部視角看:中臺(tái)系統(tǒng)可以是SaaS系統(tǒng)也可以是PaaS系統(tǒng),但是PaaS系統(tǒng)肯定使用中臺(tái)系統(tǒng)的架構(gòu)。
- 從內(nèi)部視角看:中臺(tái)系統(tǒng)是改變了企業(yè)的組織架構(gòu)和服務(wù)之間的組合關(guān)系。終端客戶,感受并不直觀。
2. 傳統(tǒng)架構(gòu)和中臺(tái)架構(gòu)的結(jié)構(gòu)圖
本圖是傳統(tǒng)系統(tǒng)架構(gòu)和中臺(tái)系統(tǒng)架構(gòu)的簡略示意圖。
兩者共同點(diǎn)和差異點(diǎn)為:
- 都在虛擬機(jī)上運(yùn)轉(zhuǎn),傳統(tǒng)架構(gòu)一般在一個(gè)虛擬機(jī)上運(yùn)轉(zhuǎn),如設(shè)備算力不足,只能人工干預(yù),部署新的服務(wù)。中臺(tái)系統(tǒng)部署在容器系統(tǒng)中,一般是Docker系統(tǒng),Docker系統(tǒng)支持自動(dòng)拓展虛擬機(jī)數(shù)量,無需人工干預(yù)。
- 都依托內(nèi)部子服務(wù)對(duì)外提供功能,傳統(tǒng)系統(tǒng)的子服務(wù)按照業(yè)務(wù)邏輯直接組織,內(nèi)部層級(jí)混亂,拓展困難,無法實(shí)現(xiàn)針對(duì)性的算力拓展,如:只給服務(wù)1及其關(guān)聯(lián)對(duì)象拓展5倍的算力,而不相關(guān)的服務(wù)不拓展。中臺(tái)系統(tǒng)可以實(shí)現(xiàn)該功能。
- 都可監(jiān)控系統(tǒng)運(yùn)行數(shù)據(jù),傳統(tǒng)系統(tǒng)一般在一個(gè)虛擬機(jī)上運(yùn)轉(zhuǎn),直接使用虛擬機(jī)自帶的工具集基本可以滿足要求。中臺(tái)系統(tǒng)的數(shù)據(jù)監(jiān)控平臺(tái)可以監(jiān)控所有自動(dòng)拓展的虛擬機(jī),并能細(xì)顆粒度的干預(yù)系統(tǒng)運(yùn)行??梢辕B加預(yù)警機(jī)制和其他業(yè)務(wù)管理工具。
- 都可以對(duì)系統(tǒng)干預(yù),傳統(tǒng)系統(tǒng)干預(yù)手段單一,比如:關(guān)機(jī)、重啟。中臺(tái)系統(tǒng)干預(yù)手段豐富,包括限流、預(yù)警等。
- 中臺(tái)系統(tǒng)微服務(wù)復(fù)用效率更高。
- 都對(duì)外提供服務(wù),由于以上優(yōu)點(diǎn),中臺(tái)系統(tǒng)用戶體驗(yàn)更好。
- 中臺(tái)系統(tǒng)的缺點(diǎn)是:系統(tǒng)復(fù)雜,開發(fā)周期長。如果企業(yè)業(yè)務(wù)沒有復(fù)雜到一定程度,可以根據(jù)需要部分上線中臺(tái)系統(tǒng),逐步完善,無需急于求成。
本節(jié)剩余內(nèi)容對(duì)部分模塊詳細(xì)展開:
3. 虛擬機(jī)及虛擬機(jī)管理
此處的虛擬機(jī)并不是狹義上的Java虛擬機(jī),而是廣義上的虛擬機(jī)。
現(xiàn)代計(jì)算機(jī)包括輸入設(shè)備、輸出設(shè)備、控制器、計(jì)算器、存儲(chǔ)器五個(gè)模塊,無論這些設(shè)備是直接的硬件實(shí)現(xiàn)或者建立在硬件之上的虛擬機(jī)如Java、Python等,都屬于此處的虛擬機(jī)。
傳統(tǒng)的框架,設(shè)計(jì)的計(jì)算機(jī)程序,都默認(rèn)在一臺(tái)虛擬機(jī)上運(yùn)行,當(dāng)時(shí)的計(jì)算需求相對(duì)較少,一臺(tái)計(jì)算機(jī)能提供的算力能滿足絕大部分的計(jì)算需要。大部分情況下,計(jì)算機(jī)的算力遠(yuǎn)遠(yuǎn)超過了用戶對(duì)算力的需求,所以當(dāng)時(shí)的思路主要集中在如何實(shí)現(xiàn)分時(shí)共享,所以誕生了分時(shí)操作系統(tǒng)。
隨著互聯(lián)網(wǎng)的發(fā)展,各行各業(yè)都開始實(shí)現(xiàn)互聯(lián)網(wǎng)+,此時(shí)單臺(tái)虛擬機(jī)算力不夠的事情才開始凸顯。比如春節(jié)搶票,幾億人幾乎在同一時(shí)間點(diǎn)涌向12306,12306系統(tǒng)忽然產(chǎn)生巨大的計(jì)算需求,系統(tǒng)剛上線時(shí),系統(tǒng)無法及時(shí)響應(yīng)用戶體驗(yàn)較差(這是以前,現(xiàn)在體驗(yàn)已經(jīng)很不錯(cuò)了)。正是這種類似的需求催生了中臺(tái)系統(tǒng)。
4. 服務(wù)
之前的文章提到過,抽象的說:
- CPU的加法器、減法器等硬件實(shí)現(xiàn)的計(jì)算功能就是服務(wù)。
- C語言的函數(shù)將計(jì)算器和變量包裝到函數(shù)體里也是服務(wù)。
- 面向?qū)ο蟮恼Z言,是將多個(gè)函數(shù)和屬性包裝到對(duì)象里,也是服務(wù)。
- 面向中臺(tái)的編程,是將多個(gè)對(duì)象包裝到一個(gè)docker里,多個(gè)docker在docker管理器的支撐下完成業(yè)務(wù),也是服務(wù)。
所以服務(wù)一直都是存在的,只是在傳統(tǒng)架構(gòu)里,各種服務(wù)并沒有裝到相同類型的容器里,所以無法區(qū)分操作。
面向中臺(tái)的編程則是將不同的對(duì)象打包到相同類型的多個(gè)容器里。通過Docker管理器可以實(shí)現(xiàn)僅對(duì)某些服務(wù)定向拓展或定向關(guān)閉。
5. 數(shù)據(jù)監(jiān)控
a. 建模和監(jiān)控的關(guān)系
系統(tǒng)設(shè)計(jì)需要先建模,建模就是使用接口、類圖梳理出不同的對(duì)象以及對(duì)象之間的關(guān)系,類圖相當(dāng)于該系統(tǒng)的靜態(tài)地圖。圖中標(biāo)識(shí)了哪些是高山、湖泊、河流、農(nóng)田,他們相互之間的關(guān)聯(lián)關(guān)系。
數(shù)據(jù)監(jiān)控就是監(jiān)控不同的數(shù)據(jù)在這個(gè)地圖上是如何流動(dòng)的,軌跡是什么。沒有數(shù)據(jù)監(jiān)控就不知道靜態(tài)的地圖哪里需要調(diào)整,哪條河需要清淤、什么時(shí)間容易漲水、哪個(gè)路需要加寬等等。
b. 傳統(tǒng)模型的監(jiān)控需求
在計(jì)算量需求不高的時(shí)候,對(duì)數(shù)據(jù)監(jiān)控的關(guān)注度并不高,只有在系統(tǒng)運(yùn)行故障時(shí),才需要還原軌跡,用以幫助定位問題節(jié)點(diǎn)。
傳統(tǒng)的架構(gòu),程序和數(shù)據(jù)在固定數(shù)量設(shè)備上運(yùn)轉(zhuǎn),運(yùn)算量足夠,所以數(shù)據(jù)監(jiān)控的重要性并未凸顯,但是當(dāng)系統(tǒng)用戶越來越多時(shí),就容易出現(xiàn)堵塞,就需要人工干預(yù)。
道理十分簡單,很多村道只有一個(gè)車道,路口也不安裝紅綠燈,很少發(fā)生交通事故,主要就是因?yàn)榱髁啃?。但是大城市的道路大部分是四車道或更多,不僅安裝紅綠燈,高峰時(shí)期交警同志還需要上崗執(zhí)勤,就是因?yàn)榱髁刻?,容易出現(xiàn)問題。
c. 中臺(tái)系統(tǒng)的監(jiān)控需求
在中臺(tái)系統(tǒng)中,系統(tǒng)會(huì)自動(dòng)記錄每個(gè)對(duì)象及其依賴對(duì)象的創(chuàng)建時(shí)間、數(shù)量、內(nèi)存占有率、CPU占有時(shí)間等。并能用可視化的方式將信息呈現(xiàn)給技術(shù)運(yùn)維。
d. 兩系統(tǒng)對(duì)比
傳統(tǒng)模型能不能監(jiān)控?cái)?shù)據(jù)呢?
當(dāng)然能,無論是哪個(gè)語言都有機(jī)制查看對(duì)象的運(yùn)行軌跡,但是當(dāng)一個(gè)業(yè)務(wù)啟用2個(gè)、3個(gè)甚至更多虛擬機(jī)的時(shí)候,逐個(gè)查看以判斷問題,效率就太低了。
并且PaaS平臺(tái)的數(shù)據(jù)監(jiān)控不僅是顯示數(shù)據(jù),還需要疊加預(yù)警機(jī)制、干預(yù)機(jī)制。比如:擴(kuò)增虛擬機(jī)的數(shù)量、關(guān)閉非緊急服務(wù)以釋放算力、限制訪問、限制流量等等都可以基于數(shù)據(jù)監(jiān)控采取干預(yù)措施。
6. 干預(yù)平臺(tái)
圖中傳統(tǒng)架構(gòu)使用的是干預(yù)命令、中臺(tái)架構(gòu)使用的是干預(yù)平臺(tái)。
從名字上就可知,中臺(tái)架構(gòu)對(duì)干預(yù)的手段做了極大的升級(jí)。
傳統(tǒng)的方式最常見的方式就是停機(jī)、重啟,中臺(tái)架構(gòu)不僅支持停機(jī)、重啟、還支持限流、拓展算力、關(guān)閉虛擬服務(wù)。并且允許拓展干預(yù)指令定時(shí)執(zhí)行等,干預(yù)平臺(tái)實(shí)際上是傳統(tǒng)架構(gòu)的干預(yù)命令的升級(jí)版。
7. 服務(wù)平臺(tái)
服務(wù)平臺(tái)指的是服務(wù)用戶的平臺(tái),包括PC系統(tǒng)、APP系統(tǒng)、智能硬件設(shè)備、物聯(lián)網(wǎng)設(shè)備等,兩個(gè)架構(gòu)對(duì)用戶而言,用戶可能感覺不到太大的差異,但是實(shí)際上中臺(tái)系統(tǒng)有很多優(yōu)點(diǎn):
a. 系統(tǒng)開發(fā)更快
按照中臺(tái)架構(gòu)設(shè)計(jì)的系統(tǒng),系統(tǒng)原有的服務(wù)容易復(fù)用,傳統(tǒng)架構(gòu)的方式難以實(shí)現(xiàn)復(fù)用。
傳統(tǒng)架構(gòu)的復(fù)用可能主要體現(xiàn)為代碼的復(fù)用,拷貝、粘貼、調(diào)試,基于中臺(tái)系統(tǒng)的架構(gòu)無需對(duì)原有服務(wù)拷貝、粘貼,可直接復(fù)用,所以開發(fā)周期更短。
系統(tǒng)延伸性強(qiáng),如果延伸到可視化設(shè)計(jì)和流程搭建,可以將設(shè)計(jì)任務(wù)轉(zhuǎn)到到非技術(shù)人員手中。
b. 系統(tǒng)服務(wù)更穩(wěn)定
中臺(tái)架構(gòu)是自動(dòng)延伸的架構(gòu),可以隨著訪問量的增加,自動(dòng)拓展資源,自動(dòng)拓展的硬件資源可以是一臺(tái)、十臺(tái)、百臺(tái)、千臺(tái),只要系統(tǒng)本身夠健壯,用戶可以獲得更好的服務(wù)體驗(yàn)。
比如12306上買票,大家現(xiàn)在的購票體驗(yàn),肯定比系統(tǒng)剛上線的時(shí)候好很多,基本沒有被阻礙的感覺了。
c. 平臺(tái)更智能
平臺(tái)在保證自動(dòng)延伸的前提上,數(shù)據(jù)并沒有分散,還是可以統(tǒng)一訪問,為數(shù)據(jù)挖掘提供了便利,可以使平臺(tái)更智能。
d. 拓展性更強(qiáng)
更強(qiáng)的拓展性體現(xiàn)在兩方面:
- 硬件拓展性:基于IAAS平臺(tái),可以動(dòng)態(tài)擴(kuò)充硬件資源而不影響系統(tǒng)穩(wěn)定性。
- 軟件拓展性:方便增加新的微服務(wù),比如部署用戶畫像系統(tǒng)、用戶推薦系統(tǒng)等。
二、兩種架構(gòu)的拓展緣起
為什么要從傳統(tǒng)架構(gòu)升級(jí)到中臺(tái)架構(gòu),我們可以從以下設(shè)想的場(chǎng)景中推演:
聲明:下文只是以12306系統(tǒng)舉例子,僅是推演。
設(shè)想:12306火車購票系統(tǒng)上線了,春節(jié)高峰期,有兩億用戶同時(shí)訪問本系統(tǒng)。雖然事先已經(jīng)做了預(yù)案,但是客戶訪問量還是超過了預(yù)期,此時(shí)你應(yīng)該用什么技術(shù)手段應(yīng)對(duì)哪?
1. 現(xiàn)狀
系統(tǒng)基于傳統(tǒng)架構(gòu)設(shè)計(jì),已提前預(yù)估了可能的訪問量,并采取了對(duì)應(yīng)的技術(shù)措施。
但是系統(tǒng)訪問量還是遠(yuǎn)遠(yuǎn)超過了預(yù)期,如何解決?
- 立刻改系統(tǒng)來不及,并且如何改,使用什么方案還不清楚。
- 只能啟用臨時(shí)方案
2. 解決方案
方案至少有三個(gè):
- 方案一:多次放票,盡量不讓訪問需求集中在同一時(shí)間,錯(cuò)峰放票。(不展開)
- 方案二:直接拓展硬件,比如加CPU、加內(nèi)存,該方法有上限。實(shí)際執(zhí)行有哪些限制,需要IT部門評(píng)估可行性。(不展開)
- 方案三:再部署一套或兩套獨(dú)立的系統(tǒng)、獨(dú)立的數(shù)據(jù)庫。然后使用IP地址的路由技術(shù)實(shí)現(xiàn):購買京廣線的用戶訪問后臺(tái)訪問系統(tǒng)A,購買京滬線的用戶訪問系統(tǒng)B,購買其他路線的用戶訪問系統(tǒng)C。
最簡單的是方案三,該方案可以解決本次問題,但是產(chǎn)生以下新問題:
a. 哪條線路的用戶量和哪個(gè)系統(tǒng)能提供的計(jì)算量最匹配,沒有實(shí)時(shí)的數(shù)據(jù)依據(jù)。
b. 系統(tǒng)不能自動(dòng)切換,需要人工介入,人工響應(yīng)慢。人工操作的時(shí)間=人反應(yīng)的時(shí)間+機(jī)器響應(yīng)時(shí)間。
c. 人工割裂的系統(tǒng)雖然能臨時(shí)滿足購票需求,但是導(dǎo)致數(shù)據(jù)割裂。導(dǎo)致很多與數(shù)據(jù)相關(guān)的服務(wù)無法拿到完整數(shù)據(jù)。
3. 根本方案
根本方案就是上云,并做中臺(tái)系統(tǒng)改造:
a. 基于IAAS系統(tǒng)部署,可以動(dòng)態(tài)擴(kuò)展運(yùn)算能力。每次新增的算力單位是一個(gè)虛擬機(jī),因此虛擬機(jī)上運(yùn)行的需要是具體的微服務(wù),不能整體拓展。
b. 對(duì)微服務(wù)需要有管理平臺(tái),監(jiān)控服務(wù)運(yùn)行,并能提供干預(yù)。
三、服務(wù)平臺(tái)拓展
服務(wù)平臺(tái)有哪些可行的拓展,下文僅展開三個(gè)。
1. 可視化設(shè)計(jì)
產(chǎn)品經(jīng)理最常使用的工具,肯定是Axure,使用Axure以及積累的元件母版,可以快速的在界面上畫出:列表、單選框、復(fù)選框、菜單等等各種元素,可以使用動(dòng)態(tài)面板或頁面組織這些元素。
中臺(tái)系統(tǒng)的可視化設(shè)計(jì),就是將Axure的組件構(gòu)建能力移植到Pass平臺(tái)上,產(chǎn)品經(jīng)理或者客戶可以直接在Paas系統(tǒng)做設(shè)計(jì)。
PaaS平臺(tái)的可視化設(shè)計(jì)比Axure設(shè)計(jì)的優(yōu)勢(shì)為:
- 可視化平臺(tái)界面元素都已關(guān)聯(lián)真實(shí)數(shù)據(jù),無需使用Axure的中繼器做數(shù)據(jù)模擬。
- 可視化平臺(tái)的字體、顏色可以被預(yù)定義,保證了不同用戶設(shè)計(jì)的風(fēng)格一致。Axure不做限制,每個(gè)用戶的設(shè)計(jì)風(fēng)格可以不同。
- 可視化平臺(tái)的菜單、跳轉(zhuǎn)等框架可以被預(yù)定義,用戶只需關(guān)注界面交互邏輯。相當(dāng)于在Axure原型的基礎(chǔ)上調(diào)整,而不是重新構(gòu)建新系統(tǒng)。
- 可視化平臺(tái)搭建的系統(tǒng),搭建完成后可以直接交由測(cè)試,無需技術(shù)重新開發(fā)。
實(shí)際使用時(shí),可視化設(shè)計(jì)可能會(huì)有各種各樣的限制,這取決于Pass系統(tǒng)的設(shè)計(jì)特點(diǎn)和成熟度,理論上可以代替大部分的Axure功能。
2. 流程搭建
產(chǎn)品經(jīng)理梳理業(yè)務(wù)常用的流程工具,包括 Visio、ProcessOn、Plantuml等,這些工具做出的流程圖與Axure有個(gè)類似點(diǎn),就是與業(yè)務(wù)系統(tǒng)并不直接聯(lián)動(dòng)。
可以將流程搭建的功能集成在PaaS平臺(tái)上,與傳統(tǒng)流程工具相比的特點(diǎn)為:
- 優(yōu)勢(shì):流程搭建器已關(guān)聯(lián)真實(shí)業(yè)務(wù)對(duì)象,通過該工具可以直接組織業(yè)務(wù)對(duì)象的功能和動(dòng)作,開發(fā)周期短。
- 劣勢(shì):流程搭建器,約束更多,自由度低。
3. 疊加人工智能工具
傳統(tǒng)方式做AI研究獲取數(shù)據(jù)集的方式包括:excel表格、數(shù)據(jù)庫直接獲取、壓縮包,然后使用Python自帶的數(shù)學(xué)模型工具做研究。
PaaS平臺(tái)上獲取數(shù)據(jù)集的方式更簡單,直接簡單指令就可以獲取平臺(tái)上所需的數(shù)據(jù)集,并且可以對(duì)潛在的數(shù)據(jù)模型做包裝,業(yè)務(wù)人員使用包裝后的工具會(huì)比直接使用Python工具效率更高。
平臺(tái)也支持集成Python工具,對(duì)新的模型允許使用Python工具直接計(jì)算。
本文由 @我是產(chǎn)品張 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
這個(gè)是面向產(chǎn)品經(jīng)理的文章嗎?感覺有一些難度