李浩
摘要:分布式系統(tǒng)也稱為分布式計算,截止2018年,計算機網(wǎng)絡(luò)技術(shù)高速發(fā)展,互聯(lián)網(wǎng)使用人群呈現(xiàn)井噴式的增長,互聯(lián)網(wǎng)成為廣大群體瀏覽,溝通,業(yè)務(wù)往來,消費等行為的途徑,在這種背景下,分布,異構(gòu),集群為基準(zhǔn)構(gòu)成的分布式系統(tǒng)由于在資源共享,高并發(fā),高可用等方面具有巨大的優(yōu)勢以及高擴展性成為了當(dāng)前互聯(lián)網(wǎng)應(yīng)用的主流模式?;诜植际较到y(tǒng)架構(gòu)的軟件系統(tǒng)伴隨著計算機的發(fā)展需求愈加強烈,本文將針對當(dāng)前分布式系統(tǒng)的架構(gòu)體系設(shè)計解決高并發(fā),高可用,高擴展性的分布式系統(tǒng)通用體系設(shè)計方案。
關(guān)鍵詞:分布式系統(tǒng);高可用;性能調(diào)優(yōu);高并發(fā);高擴展性
一、當(dāng)前互聯(lián)網(wǎng)環(huán)境的分布式系統(tǒng)需求
通過軟件體系架構(gòu)方面的改進與設(shè)計提升分布式系統(tǒng)的高擴展性,高性能,高可用,高并發(fā),是分布式系統(tǒng)設(shè)計的核心思想,也是本文所闡述的核心思想。一個可行的思路是采用SOA架構(gòu)模式,拆分系統(tǒng)的不同模塊,并將不同的模塊拆分為表現(xiàn)層系統(tǒng)和服務(wù)層系統(tǒng),使用相應(yīng)的Java中間件進行不同系統(tǒng)之間的依賴關(guān)系和調(diào)用,必要時不同的系統(tǒng)部署集群架構(gòu),基于負載均衡實現(xiàn)系統(tǒng)的高可用,高并發(fā)的體系模式。最后通過有效的手段保證不同系統(tǒng)之間的安全耦合。
基于以上思路,在分析當(dāng)前互聯(lián)網(wǎng)電子商務(wù)系統(tǒng)面對高并發(fā)訪問的應(yīng)用場景的基礎(chǔ)上,本文針對系統(tǒng)架構(gòu)的演變,分布式系統(tǒng)的作用以及客觀必要性,同時如何實現(xiàn)高可用,高并發(fā)的應(yīng)用體系架構(gòu)進行相應(yīng)的深入研究,從而提升互聯(lián)網(wǎng)系統(tǒng)針對高用戶群體對象,實現(xiàn)高可用,支撐高并發(fā),運營后實現(xiàn)高擴展性,低成本開發(fā)與維護的設(shè)計目的。
(一):提出了一個分布式系統(tǒng)的實現(xiàn)方案——SOA架構(gòu)模式。給出了形式化,可具化的架構(gòu)體系模型?;诿嫦蚍?wù)的體系架構(gòu),粗粒度基于具體的業(yè)務(wù)模塊拆分為獨立的應(yīng)用系統(tǒng),細粒度模塊拆分為表現(xiàn)層應(yīng)用系統(tǒng)和表現(xiàn)層應(yīng)用系統(tǒng)?;贒ubbo以及Zookeeper實現(xiàn)應(yīng)用系統(tǒng)之間的注冊中心和安全調(diào)用。
(二):結(jié)合具體的業(yè)務(wù)邏輯設(shè)計相應(yīng)的性能調(diào)優(yōu)方案,采用Redis數(shù)據(jù)庫作為整個系統(tǒng)架構(gòu)當(dāng)中的應(yīng)用緩存設(shè)計實現(xiàn)。以電子商務(wù)系統(tǒng)為案例,對訪問頻繁的資源以緩存實現(xiàn),加快整個應(yīng)用體系的響應(yīng)速度。擴展性方面亦可搭建Redis高可用集群來實現(xiàn)。
(三):對分布式應(yīng)用系統(tǒng)的搜索引擎優(yōu)化實現(xiàn),使用Solr索引庫對系統(tǒng)的搜索資源構(gòu)建索引,打造敏捷,快速的響應(yīng)式搜索引擎。
(四):系統(tǒng)依賴關(guān)系的解耦,性能調(diào)優(yōu),使用ActiveMQ作為消息中間件,在系統(tǒng)當(dāng)中存在直接的調(diào)用關(guān)系時,不同系統(tǒng)之間直接調(diào)用的方式會造成應(yīng)用體系依賴關(guān)系緊密,耦合性變強,進而會使得整個應(yīng)用體系臃腫不堪。使用ActiveMQ消息隊列解耦應(yīng)用系統(tǒng)之間的依賴關(guān)系,進行應(yīng)用解耦,流量削鋒,異步調(diào)用,是一個常見的也是相當(dāng)有效的分布式系統(tǒng)體系架構(gòu)的解決方案。
本文將以上述思路為基礎(chǔ),以真實的電子商務(wù)系統(tǒng)為案例,以構(gòu)建以高可用,高并發(fā),高擴展性為目標(biāo),研究分布式架構(gòu)體系設(shè)計過程,適應(yīng)當(dāng)下互聯(lián)網(wǎng)電子商務(wù)系統(tǒng)高流量的網(wǎng)絡(luò)環(huán)境,提供相應(yīng)的,可行的解決方案。
二、基于分布式系統(tǒng)實現(xiàn)過程的探討
(一):分布式系統(tǒng)的核心定義
Andrew S. Tanenbaum即分布式操作系統(tǒng)是在獨立的、聯(lián)網(wǎng)的、通信的和物理上分開的計算節(jié)點的集合上的軟件。它們處理由多個CPU服務(wù)的作業(yè)。這個思想可以理解為同時使用多臺計算機的處理能力來完成實際的業(yè)務(wù)需求,從而提升整個系統(tǒng)的計算處理能力。同時這個思想也被應(yīng)用與數(shù)據(jù)庫,文件系統(tǒng)等各個方面。
(二):分布式系統(tǒng)的設(shè)計思路
從架構(gòu)方面實現(xiàn)分布式系統(tǒng)化的核心目的在于提升軟件的高可用性,在巨量的用戶群體的高并發(fā)訪問下,傳統(tǒng)的單一應(yīng)用服務(wù)器不能夠滿足此需求,因此,需要從架構(gòu)方面改善系統(tǒng)的整體性能。分布式系統(tǒng)的設(shè)計思路,可以從具化的業(yè)務(wù)體系出發(fā),通過拆分不同得業(yè)務(wù)模塊,將具體的業(yè)務(wù)模塊拆分為表現(xiàn)層系統(tǒng)和服務(wù)層系統(tǒng),即SOA架構(gòu)模式。單一的系統(tǒng)運行在單一的應(yīng)用的服務(wù)器當(dāng)中,當(dāng)單一化的應(yīng)用服務(wù)器不能夠滿足并發(fā)需求的時候,可以使用搭建單一模塊系統(tǒng)的分布式集群實現(xiàn)。集群的實現(xiàn)過程需要時用反向代理和負載均衡服務(wù)器,這里擬采用Nginx反向代理服務(wù)器,同時可以給不同的系統(tǒng)配備不同的權(quán)重,給予優(yōu)良的服務(wù)器更多的訪問資源。對于不同子系統(tǒng)的關(guān)系依賴以及系統(tǒng)調(diào)用,擬采用阿里巴巴的Dubbo組件配合Zookeeper中間件,設(shè)計不同系統(tǒng)的注冊中心以及依賴關(guān)系管理與服務(wù)調(diào)用。對于持久化資源的存儲,采用MySQL持久化數(shù)據(jù)庫,當(dāng)數(shù)據(jù)龐大和讀寫操作頻繁發(fā)生時,可以使用垂直拆分和水平切割兩種方案,一種是使用分布式數(shù)據(jù)庫部署相關(guān)數(shù)據(jù)庫,降低數(shù)據(jù)庫的訪問壓力,另一種則是基于成本低的方案實現(xiàn),即將數(shù)據(jù)庫進行讀寫分離,拆分為讀數(shù)據(jù)庫和寫數(shù)據(jù)庫,同時設(shè)置主從復(fù)制關(guān)系,緩解數(shù)據(jù)庫壓力。
三、總結(jié)
基于此方案設(shè)計的分布式系統(tǒng)具有高度的擴展性,在性能1可以進行高度優(yōu)化與擴展,各個系統(tǒng)之間具有獨立自治性,在項目擴展的過程當(dāng)中,只需要增加新的子系統(tǒng)即可,已部署的系統(tǒng)將不會受到干擾。同時,亦可添加緩存數(shù)據(jù)庫,freemaker頁面靜態(tài)化,靜態(tài)文件資源服務(wù)器,消息隊列來進行流量削峰,解耦合。具有良好的容錯性,從而能夠應(yīng)對高流量場景當(dāng)中的系統(tǒng)需求。
參考文獻:
[1]曾憲杰. 大型網(wǎng)站系統(tǒng)與Java中間件. 北京:電子工業(yè)出版社, 2014.
[2]李智慧.大型網(wǎng)站技術(shù)架構(gòu)核心原理與案例分析.北京:電子工業(yè)出版社,2013.
[3]Baron Schwartz, PeterZaitsev, Vadim Tkacbenko著:Optimization, Backups and Replication High Performance MySQL.北京:電子工業(yè)出版社 2013.