2016-08-02 分類: 軟件開發(fā)
本文目標(biāo)
本文闡述從傳統(tǒng)軟件開發(fā)架構(gòu)向基于云平臺(tái)開發(fā)架構(gòu)發(fā)展之路,給傳統(tǒng)開發(fā)想云原生開發(fā)提供參考。
架構(gòu)概述
軟件開發(fā)架構(gòu)大概分為三個(gè)階段,早期、成長(zhǎng)期和穩(wěn)定器。
第一個(gè)階段為早期單體架構(gòu),一般服務(wù)端+數(shù)據(jù)庫的方式進(jìn)行開發(fā),采用三層MVC架構(gòu)進(jìn)行開發(fā)。主要特點(diǎn):企業(yè)處于早期,業(yè)務(wù)比較簡(jiǎn)單,產(chǎn)品功能比較單一,業(yè)務(wù)會(huì)隨時(shí)根據(jù)運(yùn)營(yíng)數(shù)據(jù)進(jìn)行調(diào)整,對(duì)開發(fā)人員來說,主要講不同的功能模塊進(jìn)行劃分,能夠應(yīng)對(duì)業(yè)務(wù)隨時(shí)調(diào)整的不確定性。
第二階段成長(zhǎng)期,公司公司業(yè)務(wù)快速成長(zhǎng),DAU可能達(dá)到十萬,這是時(shí)候既要保證業(yè)務(wù)的穩(wěn)定運(yùn)行,又要進(jìn)行產(chǎn)品的快速迭代。主要特點(diǎn):前段加速優(yōu)化,通過CDN等技術(shù)讓前端的靜態(tài)資源快速響應(yīng)客戶的操作;水平擴(kuò)展,讓后臺(tái)服務(wù)分布式,需要使用負(fù)載均衡實(shí)現(xiàn),但要對(duì)負(fù)載均衡的分流設(shè)計(jì);數(shù)據(jù)庫的優(yōu)化,主要結(jié)構(gòu)化和非結(jié)構(gòu)數(shù)據(jù)的設(shè)計(jì),以及通過緩存提供數(shù)據(jù)響應(yīng)。
第三階段完全分布式架構(gòu)。這個(gè)主要特點(diǎn):前端和數(shù)據(jù)都會(huì)很大的壓力,對(duì)業(yè)務(wù)響應(yīng)的效率要求就非常高;彈性擴(kuò)容,系統(tǒng)因需求和用戶的增長(zhǎng),會(huì)出現(xiàn)波峰與波谷,需要通過彈性擴(kuò)容更好利用資源;功能服務(wù)化,需要將之前功能服務(wù)化,比如:微服務(wù)設(shè)計(jì);
早期架構(gòu)
根據(jù)早期業(yè)務(wù)量,我們主要從以下幾個(gè)方面:技術(shù)框架選型、數(shù)據(jù)存儲(chǔ)、緩存選型、靜態(tài)資源存儲(chǔ)。目前來看,前段框架是SpringMVC,也直接采用前后端分離技術(shù),采用SpringBoot+Vue來開發(fā)。數(shù)據(jù)存儲(chǔ)一般采用MySQL,緩存采用Redis,靜態(tài)資源通過Nginx實(shí)現(xiàn)本地托管。需要說明就是緩存的設(shè)計(jì),基本訪問路徑是:訪問緩存-是否命中-命中直接返回-沒有命中-數(shù)據(jù)庫查詢-緩存更新。高可用可以通過部署多個(gè)節(jié)點(diǎn),當(dāng)一個(gè)節(jié)點(diǎn)受到異常的時(shí)候,還通過其他節(jié)點(diǎn)進(jìn)行相應(yīng),基本可以達(dá)到2個(gè)9或3個(gè)9.
成長(zhǎng)期架構(gòu)
這個(gè)階段對(duì)用戶需求響應(yīng)上,比如:全文檢索、重大活動(dòng)支持等。架構(gòu)設(shè)計(jì)主要分為以下幾塊,前端系統(tǒng)擴(kuò)展、無狀態(tài)服務(wù)設(shè)計(jì)、在線水平擴(kuò)展、后端系統(tǒng)擴(kuò)展、系統(tǒng)通信和消息中間件。
前端資源因?yàn)椴蛔冎饕ㄟ^存儲(chǔ)分發(fā),主要通過獨(dú)立域名或CDN技術(shù)實(shí)現(xiàn)優(yōu)化;無狀態(tài)設(shè)計(jì)。
水平擴(kuò)展需要條件有:資源快速交付、無狀態(tài)服務(wù)設(shè)計(jì)、業(yè)務(wù)性能監(jiān)控和統(tǒng)一服務(wù)入口,實(shí)現(xiàn)技術(shù)主要是負(fù)載均衡,可以采用四層和七層協(xié)議分別對(duì)不同場(chǎng)景的訪問進(jìn)行轉(zhuǎn)發(fā)。
后端系統(tǒng)擴(kuò)展主要實(shí)現(xiàn)緩存服務(wù)器和數(shù)據(jù)庫的擴(kuò)展,緩存服務(wù)擴(kuò)展主要有Twemporxy+Sentinel和Redis Cluster
Twemporxy+Sentinel架構(gòu)
Redis Cluster采用去中心化設(shè)計(jì),每個(gè)節(jié)點(diǎn)都是平行,通過哈希槽來實(shí)現(xiàn)劃分,新添加節(jié)點(diǎn)時(shí)候,使用redis-trib工具將其他幾點(diǎn)的slot遷移部分到新節(jié)點(diǎn)上面,遷移過程不影響使用。對(duì)于數(shù)據(jù)擴(kuò)展,前期會(huì)通過分庫分表來實(shí)現(xiàn),建議分布式庫來實(shí)現(xiàn)數(shù)據(jù)庫的水平擴(kuò)展
分布式數(shù)據(jù)庫
系統(tǒng)通信主要根據(jù)場(chǎng)景選擇通信協(xié)議,有http協(xié)議、https協(xié)議和tcp協(xié)議。具體差別不在詳述。
消息中間件主要解決應(yīng)用耦合、異步投遞消息、流量削峰,采用RabbitMQ.
這一步可以實(shí)現(xiàn)DevOps進(jìn)一步提高效率,采用的技術(shù)方案Jekins+Kubernets。
穩(wěn)定期架構(gòu)
穩(wěn)定期架構(gòu)主要對(duì)系統(tǒng)功能進(jìn)行拆分,實(shí)現(xiàn)服務(wù)分而治之、各司其職、協(xié)同工作,共同完成業(yè)務(wù)邏輯。主要幾件事:業(yè)務(wù)拆分、統(tǒng)一配置、分布式任務(wù)。
當(dāng)前文章:傳統(tǒng)軟件開發(fā)架構(gòu)向基于云平臺(tái)轉(zhuǎn)型之路
文章源于:http://aaarwkj.com/news17/45317.html
網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷seo公司;服務(wù)項(xiàng)目有網(wǎng)站維護(hù)、軟件開發(fā)等
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容