傳統(tǒng)軟件開發(fā)架構(gòu)向基于云平臺轉(zhuǎn)型之路

2016-08-02    分類: 軟件開發(fā)

本文目標(biāo)

本文闡述從傳統(tǒng)軟件開發(fā)架構(gòu)向基于云平臺開發(fā)架構(gòu)發(fā)展之路,給傳統(tǒng)開發(fā)想云原生開發(fā)提供參考。

架構(gòu)概述

軟件開發(fā)架構(gòu)大概分為三個階段,早期、成長期和穩(wěn)定器。

第一個階段為早期單體架構(gòu),一般服務(wù)端+數(shù)據(jù)庫的方式進(jìn)行開發(fā),采用三層MVC架構(gòu)進(jìn)行開發(fā)。主要特點(diǎn):企業(yè)處于早期,業(yè)務(wù)比較簡單,產(chǎn)品功能比較單一,業(yè)務(wù)會隨時根據(jù)運(yùn)營數(shù)據(jù)進(jìn)行調(diào)整,對開發(fā)人員來說,主要講不同的功能模塊進(jìn)行劃分,能夠應(yīng)對業(yè)務(wù)隨時調(diào)整的不確定性。

第二階段成長期,公司公司業(yè)務(wù)快速成長,DAU可能達(dá)到十萬,這是時候既要保證業(yè)務(wù)的穩(wěn)定運(yùn)行,又要進(jìn)行產(chǎn)品的快速迭代。主要特點(diǎn):前段加速優(yōu)化,通過CDN等技術(shù)讓前端的靜態(tài)資源快速響應(yīng)客戶的操作;水平擴(kuò)展,讓后臺服務(wù)分布式,需要使用負(fù)載均衡實(shí)現(xiàn),但要對負(fù)載均衡的分流設(shè)計;數(shù)據(jù)庫的優(yōu)化,主要結(jié)構(gòu)化和非結(jié)構(gòu)數(shù)據(jù)的設(shè)計,以及通過緩存提供數(shù)據(jù)響應(yīng)。

第三階段完全分布式架構(gòu)。這個主要特點(diǎn):前端和數(shù)據(jù)都會很大的壓力,對業(yè)務(wù)響應(yīng)的效率要求就非常高;彈性擴(kuò)容,系統(tǒng)因需求和用戶的增長,會出現(xiàn)波峰與波谷,需要通過彈性擴(kuò)容更好利用資源;功能服務(wù)化,需要將之前功能服務(wù)化,比如:微服務(wù)設(shè)計;

早期架構(gòu)

根據(jù)早期業(yè)務(wù)量,我們主要從以下幾個方面:技術(shù)框架選型、數(shù)據(jù)存儲、緩存選型、靜態(tài)資源存儲。目前來看,前段框架是SpringMVC,也直接采用前后端分離技術(shù),采用SpringBoot+Vue來開發(fā)。數(shù)據(jù)存儲一般采用MySQL,緩存采用Redis,靜態(tài)資源通過Nginx實(shí)現(xiàn)本地托管。需要說明就是緩存的設(shè)計,基本訪問路徑是:訪問緩存-是否命中-命中直接返回-沒有命中-數(shù)據(jù)庫查詢-緩存更新。高可用可以通過部署多個節(jié)點(diǎn),當(dāng)一個節(jié)點(diǎn)受到異常的時候,還通過其他節(jié)點(diǎn)進(jìn)行相應(yīng),基本可以達(dá)到2個9或3個9.

成長期架構(gòu)

這個階段對用戶需求響應(yīng)上,比如:全文檢索、重大活動支持等。架構(gòu)設(shè)計主要分為以下幾塊,前端系統(tǒng)擴(kuò)展、無狀態(tài)服務(wù)設(shè)計、在線水平擴(kuò)展、后端系統(tǒng)擴(kuò)展、系統(tǒng)通信和消息中間件。

前端資源因為不變主要通過存儲分發(fā),主要通過獨(dú)立域名或CDN技術(shù)實(shí)現(xiàn)優(yōu)化;無狀態(tài)設(shè)計。

水平擴(kuò)展需要條件有:資源快速交付、無狀態(tài)服務(wù)設(shè)計、業(yè)務(wù)性能監(jiān)控和統(tǒng)一服務(wù)入口,實(shí)現(xiàn)技術(shù)主要是負(fù)載均衡,可以采用四層和七層協(xié)議分別對不同場景的訪問進(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è)計,每個節(jié)點(diǎn)都是平行,通過哈希槽來實(shí)現(xiàn)劃分,新添加節(jié)點(diǎn)時候,使用redis-trib工具將其他幾點(diǎn)的slot遷移部分到新節(jié)點(diǎn)上面,遷移過程不影響使用。對于數(shù)據(jù)擴(kuò)展,前期會通過分庫分表來實(shí)現(xiàn),建議分布式庫來實(shí)現(xiàn)數(shù)據(jù)庫的水平擴(kuò)展


分布式數(shù)據(jù)庫


系統(tǒng)通信主要根據(jù)場景選擇通信協(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)主要對系統(tǒng)功能進(jìn)行拆分,實(shí)現(xiàn)服務(wù)分而治之、各司其職、協(xié)同工作,共同完成業(yè)務(wù)邏輯。主要幾件事:業(yè)務(wù)拆分、統(tǒng)一配置、分布式任務(wù)。

當(dāng)前文章:傳統(tǒng)軟件開發(fā)架構(gòu)向基于云平臺轉(zhuǎn)型之路
文章源于:http://www.bm7419.com/news17/45317.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營銷seo公司;服務(wù)項目有網(wǎng)站維護(hù)軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管