一些架構(gòu)設(shè)計(jì)的原則
N+1設(shè)計(jì)。系統(tǒng)中的每個(gè)組件都應(yīng)做到?jīng)]有單點(diǎn)故障蚯涮;
回滾設(shè)計(jì)。確保系統(tǒng)可以向前兼容卖陵,在系統(tǒng)升級(jí)時(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,出了問(wèn)題沒(méi)有商業(yè)支持可能會(huì)是一個(gè)災(zāi)難朽合;
資源隔離設(shè)計(jì)俱两。應(yīng)避免單一業(yè)務(wù)占用全部資源;
架構(gòu)應(yīng)能水平擴(kuò)展曹步。系統(tǒng)只有做到能水平擴(kuò)展宪彩,才能有效避免瓶頸問(wèn)題;
非核心則購(gòu)買讲婚。非核心功能若需要占用大量的研發(fā)資源才能解決尿孔,則考慮購(gòu)買成熟的產(chǎn)品;
使用商用硬件磺樱。商用硬件能有效降低硬件故障的機(jī)率纳猫;
快速迭代。系統(tǒng)應(yīng)該快速開發(fā)小功能模塊竹捉,盡快上線進(jìn)行驗(yàn)證芜辕,早日發(fā)現(xiàn)問(wèn)題大大降低系統(tǒng)交付的風(fēng)險(xiǎn);
無(wú)狀態(tài)設(shè)計(jì)块差。服務(wù)接口應(yīng)該做成無(wú)狀態(tài)的侵续,當(dāng)前接口的訪問(wèn)不依賴于接口上次訪問(wèn)的狀態(tài)。