? ? ? ? 互聯(lián)網(wǎng)時代是一個講究合作共贏的時代。由于業(yè)務的拓展與項目的融合,能夠充分思考出系統(tǒng)的內(nèi)外特性,提前預留出擴展接口,保護內(nèi)部系統(tǒng)穩(wěn)定的同時,循序漸進的進行外部系統(tǒng)的融合對接,往往決定著企業(yè)業(yè)務及系統(tǒng)的健康穩(wěn)定發(fā)展。
? ? ? 在進行系統(tǒng)架構(gòu)設計時,對外要考慮從業(yè)務流程的拆解優(yōu)化,系統(tǒng)的豐滿完善,從而分化來自用戶的高壓請求,比如:在購買商品的前后環(huán)節(jié)中,加入優(yōu)惠券領取,下單付款之后,加入抽獎免單等環(huán)節(jié),既能從系統(tǒng)上分散用戶的請求壓力,又能豐富提升用戶的購物體驗;
? ? ? ? 在系統(tǒng)負載上,也可根據(jù)業(yè)務的系統(tǒng)特性,結(jié)合用戶對業(yè)務系統(tǒng)操作的占比權重,進行針對性的負載分區(qū)設計,合理地緩解分化來自不同業(yè)務點的用戶請求。比如電商系統(tǒng)中,商品瀏覽、促銷搶購、訂單查詢,是用戶經(jīng)常操作的系統(tǒng)場景,假設同一時刻有100個用戶正在使用該電商系統(tǒng),那么同一時刻各個業(yè)務系統(tǒng)的操作人數(shù)占比為:60:20:10:10(其它系統(tǒng)),計算出各個業(yè)務系統(tǒng)的操作熱度占比之后,就可以針對性地進行系統(tǒng)服務的前端負載設計,各個服務系統(tǒng)在服務器資源上的分配占比(內(nèi)存、CPU、磁盤、緩存等);在代碼開發(fā)時,也可以根據(jù)這些對外的業(yè)務特性進行有的放矢的編碼及優(yōu)化了。
? ? ? ? 在系統(tǒng)架構(gòu)的內(nèi)部設計中,可以預先分析出用戶的集中操作點,又或者說是密集業(yè)務點、公共業(yè)務區(qū)(行業(yè)里通常也叫做核心業(yè)務點,這里阿K認為核心業(yè)務點未必是公共密集點,所以這里特別強調(diào)的公共密集操作的業(yè)務點)。根據(jù)這些密集業(yè)務點,以及其對周邊關聯(lián)業(yè)務系統(tǒng)的相互影響程度,進行內(nèi)部集中優(yōu)化設計,從而保證這些內(nèi)部密集系統(tǒng)的高性能、高可用。
? ? ? 因為這些公共密集點,深深影響著整個核心系統(tǒng)的穩(wěn)定性和用戶的系統(tǒng)體驗好感度。比如電商系統(tǒng)中,商品、購物車、訂單、降價促銷通知、付款、優(yōu)惠券,都是用戶會集中操作的公共點,這些公共部分除了是密集的業(yè)務點外,每個部分又和其他業(yè)務系統(tǒng)有或多或少關聯(lián)性,就構(gòu)成了所謂的公共業(yè)務區(qū)的概念。
? ? ? ? 針對這些公共點公共區(qū)的設計,就可以采用CDN、數(shù)據(jù)緩存、熱點數(shù)據(jù)靜態(tài)化、高可用調(diào)度器、MQ、分布式事務鎖等機制方案,從技術組件上對密集操作的核心業(yè)務數(shù)據(jù)進行設計優(yōu)化。
? ? ? ? 在服務器資源分配上,也可以針對這些公共密集業(yè)務數(shù)據(jù),進行對應的優(yōu)化分配,比如商品的圖文詳情可以放在CDN服務器上,購物車信息和訂單狀態(tài)可以緩存在Redis上,降價促銷通知可以通過ElasticJob抓取到之后,通過mq的方式觸發(fā)對應的短信或郵件發(fā)送服務等。這其中CDN服務器可以通過第三方購買來獲得加速,Redis節(jié)點上可以多分配一些物理內(nèi)存以提高緩存效率,ElasticJob調(diào)度器可以低內(nèi)存多(偽)實例做成HA高可用架構(gòu);也可以根據(jù)實際用量特性,考慮把ElasticJob和MQ部署在相同的節(jié)點中,以節(jié)省服務器資源。
? ? ? ? 在編碼開發(fā)上也要根據(jù)這些公共業(yè)務對象的特點特性,認真仔細地思考,以提高公共業(yè)務服務的程序響應效率和穩(wěn)定性,公共業(yè)務對象的系統(tǒng)通用性、流通性和可擴展性為主要目標,進行充分的編碼和完善的測試。
? ? ? ? 以上講述的系統(tǒng)架構(gòu)設計方法,就是所謂的“開合”?!伴_”,是打開的意思;“合”,是閉合的意思。所謂“開合”,從系統(tǒng)架構(gòu)設計的角度看,“開”就是公開列舉出系統(tǒng)對外提供的服務接口,分析其中的用戶及系統(tǒng)行為,進行針對性的設計和優(yōu)化;“合”就是列舉出系統(tǒng)內(nèi)部的密集業(yè)務點,分析出其中關聯(lián)影響到的業(yè)務系統(tǒng)(區(qū)),進行技術上的集中設計與優(yōu)化。
? ? ? ? 綜合來看,就是可以從不同的角度進行觀察分析,外看聯(lián)動,內(nèi)看同異;不論是在系統(tǒng)架構(gòu)、系統(tǒng)設計、開發(fā)編碼上都是可以適用的。