資料內(nèi)容:
架構(gòu)設(shè)計(jì)總結(jié)
架構(gòu)的調(diào)整是否必須按照上述演變路徑進(jìn)行? 不是的,以上所說的架構(gòu)演變順序只是針對某個(gè)側(cè)面進(jìn)行單獨(dú)的
改進(jìn),在實(shí)際場景中,可能同一時(shí)間會有幾個(gè)問題需要解決,或者可能先達(dá)到瓶頸的是另外的方面,這時(shí)候就
應(yīng)該按照實(shí)際問題實(shí)際解決。如在政府類的并發(fā)量可能不大,但業(yè)務(wù)可能很豐富的場景,高并發(fā)就不是重點(diǎn)解決
的問題,此時(shí)優(yōu)先需要的可能會是豐富需求的解決方案。
對于將要實(shí)施的系統(tǒng),架構(gòu)應(yīng)該設(shè)計(jì)到什么程度? 對于單次實(shí)施并且性能指標(biāo)明確的系統(tǒng),架構(gòu)設(shè)計(jì)到能夠支
持系統(tǒng)的性能指標(biāo)要求就足夠了,但要留有擴(kuò)展架構(gòu)的接口以便不備之需。對于不斷發(fā)展的系統(tǒng),如電商平臺,
應(yīng)設(shè)計(jì)到能滿足下一階段用戶量和性能指標(biāo)要求的程度,并根據(jù)業(yè)務(wù)的增長不斷的迭代升級架構(gòu),以支持更高的
并發(fā)和更豐富的業(yè)務(wù)。服務(wù)端架構(gòu)和大數(shù)據(jù)架構(gòu)有什么區(qū)別? 所謂的“大數(shù)據(jù)”其實(shí)是?量數(shù)據(jù)采集清洗轉(zhuǎn)換、數(shù)據(jù)存儲、數(shù)據(jù)分析、
數(shù)據(jù)服務(wù)等場景解決方案的一個(gè)統(tǒng)稱,在每一個(gè)場景都包含了多種可選的技術(shù),如數(shù)據(jù)采集有Flume、 Sqoop、
Kettle等,數(shù)據(jù)存儲有分布式文件系統(tǒng)HDFS、FastDFS,NoSQL數(shù)據(jù)庫HBase、MongoDB等,數(shù)據(jù)分析有Spark技
術(shù)棧、機(jī)?學(xué)習(xí)算法等??偟膩碚f大數(shù)據(jù)架構(gòu)就是根據(jù)業(yè)務(wù)的需求,整合各種大數(shù)據(jù)組件組合而成的架構(gòu),一
般會提供分布式存儲、分布式計(jì)算、多維分析、數(shù)據(jù)倉庫、機(jī)?學(xué)習(xí)算法等能力。而服務(wù)端架構(gòu)更多指的是應(yīng)用
組織層面的架構(gòu),底層能力往往是由大數(shù)據(jù)架構(gòu)來提供。
有沒有一些架構(gòu)設(shè)計(jì)的原則?
N+1設(shè)計(jì)。系統(tǒng)中的每個(gè)組件都應(yīng)做到?jīng)]有單點(diǎn)故障;
回滾設(shè)計(jì)。確保系統(tǒng)可以向前兼容,在系統(tǒng)升級時(shí)應(yīng)能有辦法回滾版本;
禁用設(shè)計(jì)。應(yīng)該提供控制具體功能是否可用的配置,在系統(tǒng)出現(xiàn)故障時(shí)能夠快速下線功能;
監(jiān)控設(shè)計(jì)。在設(shè)計(jì)階段就要考慮監(jiān)控的手段;
多活數(shù)據(jù)中心設(shè)計(jì)。若系統(tǒng)需要極高的高可用,應(yīng)考慮在多地實(shí)施數(shù)據(jù)中心進(jìn)行多活,至少在一個(gè)機(jī)房
斷電的情況下系統(tǒng)依然可用;
采用成熟的技術(shù)。剛開發(fā)的或開源的技術(shù)往往存在很多隱藏的bug,出了問題沒有商業(yè)支持可能會是一個(gè)
災(zāi)難;
資源隔離設(shè)計(jì)。應(yīng)避免單一業(yè)務(wù)占用全部資源;
架構(gòu)應(yīng)能水平擴(kuò)展。系統(tǒng)只有做到能水平擴(kuò)展,才能有效避免瓶頸問題;
非核心則購買。非核心功能若需要占用大量的研發(fā)資源才能解決,則考慮購買成熟的產(chǎn)品;
使用商用硬件。商用硬件能有效降低硬件故障的機(jī)率;
快速迭代。系統(tǒng)應(yīng)該快速開發(fā)小功能模塊,盡快上線進(jìn)行驗(yàn)證,早日發(fā)現(xiàn)問題大大降低系統(tǒng)交付的風(fēng)
險(xiǎn);
無狀態(tài)設(shè)計(jì)。服務(wù)接口應(yīng)該做成無狀態(tài)的,當(dāng)前接口的訪問不依賴于接口上次訪問的狀態(tài)。