高級架構師如何僅用6步,就為企業量身打造一套高可用系統?
對于用戶量較大的系統以及系統穩定性要求極高的企業,每一次計劃外的系統停機都是嚴重事故。想要降低計劃外系統停機的概率,有兩個關鍵動作,一是執行計劃內維護來及時更新硬件或者軟件,另外一個有效的動作就是搭建一套高可用系統來降低系統意外停機的概率。
隨著企業用戶對集群方案需求的多樣性提升、系統環境的復雜度增加,為了進一步滿足企業用戶的需求,帆軟全新web集群方案就顯得很重要。截止今天已經有140余家帆軟客戶選擇使用web集群方案來提升系統的高可用性。
既然上面提到我們可以滿足客戶多樣性、復雜性的需求,今天就給大家介紹一下如何選擇集群方案,來量身打造一套適合企業的高可用性系統。
什么是集群和分布式?
想要深入了解一個東西,概念和基礎知識很重要,我給你用大白話講明白。
小飯店原來只有一個廚師,切菜洗菜備料炒菜全干。后來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,兩個廚師的關系是集群。
為了讓廚師專心炒菜,把菜做到極致,再請了個配菜師負責切菜,備菜,備料 ... 廚師和配菜師的關系是分布式。
一個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關系是集群。
一個配菜師因故請假了,但是其余的配菜師還是該啥就干啥,只是沒請假的配菜師任務均勻的加量了,但他們的任務和職責是不變的,這是集群。
- 集群:多個人在一起作同樣的事
- 分布式 :多個人在一起作不同的事


正式介紹之前,先說一點基礎知識:帆軟的web集群架構負載均衡+狀態服務器+文件服務器/節點間同步+外置數據庫,支持的組件比較多樣化,我們可以針對不同場景進行選擇和搭配。

第一步:選擇操作系統
帆軟web集群方案對Windows操作系統、Linux操作系統均能支持,如果企業還在考慮選擇什么樣的操作系統,這里推薦大家選擇Linux操作系統,有兩個關鍵:性能和穩定性。
- Linux系統處理多線程比Windows要好的多,而且不像Windows系統必備圖形化操作界面,因此占用資源會少一些,性能也更好;
- Linux系統穩定性很好,大部分硬件和配置更新無需重啟;相對Windows系統,宕機機率更低,常常一年都不用關機;
但是影響我們最終哪種系統的因素,還有一個最關鍵的點——運維能力,如果公司不具備Linux系統的運維能力,只能選擇Windows系統了。
第二步:選擇負載均衡
負載均衡作為集群的入口,起到請求分發和節點健康檢查的作用。不管是軟件負載均衡,還是硬件負載均衡,核心作用都是一樣的。
硬件負載均衡穩定,性能也較好,但是采購和維護成本都比較高。軟件負載均衡性價比高,像我們常用的Nginx、Traefik都是開源免費的,許多超大型的企業也在使用,可用性得到了有效的驗證。
帆軟官方驗證過的軟件負載均衡有兩種:Treafik和Nginx,Linux系統推薦選用Nginx作為負載均衡,Windows系統推薦選用Treafik。如果希望負載均衡層面也具備高可用性,避免單點故障,可以再做一個Keepalived+Nginx方案,確保一個Nginx服務宕機或異常后,有備用的Nginx服務可以接手。
第三步:選擇Redis方案
帆軟集群方案里,狀態服務器是用Redis實現的,常用的Redis方案有Redis單機、Redis集群、Redis哨兵三種。Redis單機方案簡單易部署,運維成本低。但是如果希望Redis服務也達到高可用性,就需要選擇Redis集群或者Redis哨兵方案了。
Redis集群是官方推薦方案,既能夠保證Redis服務的高可用性,又因為數據是分區存儲在不同的主節點上,可以大幅度提升Redis服務的性能支撐。不足之處就是運維和資源成本相對Redis單機要高一些。
Redis哨兵模式是通過哨兵節點來實現自動化監控Redis主節點健康狀態,并提供故障恢復功能。最常用的Redis哨兵方案為1主2從3哨兵,能夠做到較好的高可用。缺點是不能支持高并發,能提供寫入功能的也就只有主節點。
注:FineReport和FineBI產品需要安裝Redis哨兵插件來對接Redis哨兵服務,插件還在測試階段,預計2020年2月份正式上線。
第四步:選擇文件一致性方案
集群一致性里很關鍵的點就是文件一致性,帆軟提供了多種方案來保障節點間資源文件的一致性。我們可以基于運維能力,實際場景來進行選擇。
- 節點間同步
節點間同步是保障節點間文件一致性的最簡方案。無須開啟文件服務器,無須做任何配置即可使用。而且各節點均存儲文件,具備高可用性。不過節點間同步方案建議僅在兩節點時選用,因為當節點增多時,節點間通信和同步效率會逐漸變低。
- 文件服務器
當使用文件服務器時,各個節點都從同一個文件服務器讀取資源文件,不涉及到節點間同步,因此各個節點讀取的資源文件永遠會保持一致性,節點數較多的場景下建議使用文件服務器。常用的幾種文件服務器:FTP、SFTP、HDFS、NAS、NFS。
第五步:選擇緩存模式
2019年12月更新的jar包里增加了緩存模式,當我們開啟集群時,可以選擇主動緩存、被動緩存、關閉緩存。主動緩存就是直接緩存所有資源文件,被動緩存是對訪問到的資源文件進行緩存,開啟緩存可以提高文件讀寫的性能。
而且配合文件服務器使用時,可以提升集群的高可用性,因為當文件服務器宕機時,系統可以繼續從緩存文件中讀取資源。
第六步:選擇外置數據庫

外置數據庫在集群方案里也是很關鍵的點,由于各個節點均使用同一個外置數據庫,因此節點間的配置可以保持一致性。FineReport和FineBI對常用的數據庫都可以支持,包括MySQL、SqlServer、Oracle、DB2等。
若公司已有數據庫服務,數據庫版本符合帆軟的要求則可直接使用,如果想要保證數據庫的高可用性,還可以采用主從的數據庫部署方案。
讀完上面的內容,相信你已經知道了如何選擇一套符合自己企業的集群方案了。不過值得說明的是,世上沒有100%高可用的方案,不過我們通過選用完備的高可用方案,加上對系統定期運維檢查和更新,是可以讓系統的高可用性盡可能地接近100%。