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