- 應用系統架構種類及優缺點分析
軟件體系結構是構建計算機軟件實踐的基礎。 軟件架構是一個系統的草圖。它描述的對象是直接構成系統的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。
隨著社會及軟件設計的發展,不同時期對軟件架構的要求也不一樣,軟件架構的發展,從最開始的單體應用架構,到垂直應用架構,再到分布式架構,再到面向服務的SOA架構,再到目前比較流行的微服務架構,每種架構都在自己的時代發揮了重要的作用.
單體架構是早期的應用軟件架構,以前的SSH或者SSM架構模式就屬于這種架構,架構采用分層的架構模式,可分為數據庫訪問層,業務邏輯層,控制層,前臺到后臺在一個項目里完成,這種架構簡單,開發成本低,部署在一個節點上就可以,維護也比較方便,但缺點也比較明顯,全部功能集成在一個項目中,這樣對于大型項目來講不易開發和維護,模塊之間耦合緊密,單點容錯能力很低,并且無法針對不同的模塊進行針對性優化和水平擴展,一個模塊出現問題,會導致整個系統無法使用.
?
單體應用架構
隨著項目運行發展,用戶訪問量逐漸增大,單體架構的應用只能通過軟負載均衡等手段,結合單純增加節點的方式來應對,但系統中并不是所有的模塊都會有比較大的訪問量,這時單體架構的劣勢就會展現出來,這時我們把系統模塊拆分,對訪問量較大的模塊,增加節點,進行水平擴展即可這就是垂直應用架構,垂直應用架構很好的適應了當時時代發展的需要,實現了流量分擔,解決了并發問題,并且可以針對不同模塊進行優化和水平擴展,一個模塊出了問題不會影響到其他系統,從而也提高了系統容錯能力,但垂直應用架構的系統,各模塊間相互獨立,無法相互調用,這會導致重復的開發任務.模塊間物業相互調用的情況是避免不了的.
?
垂直應用架構
分布式架構,由垂直應用架構演變而來,當垂直應用架構中,模塊越來越多,重復的業務代碼會越來越多,這時把重復部分代碼抽取出來,做成統一的業務層來提供獨立服務,這就形成了分布式架構,分布式架構分為表現層和服務層兩個部分,表現層僅處理頁面交互,服務層提供業務邏輯支撐,各個服務模塊之間可以相互調用,提高了代碼的復用性,但隨著業務模塊增多,系統間耦合度會逐漸變高,模塊間調用關系錯綜復雜,系統會變的越來越難以維護.
?
分布式架構
由于分布式架構下,模塊服務越來越多,模塊小而多的問題越來越突出,模塊間調用混亂復雜,這個時候就需要增加一個調度中心,對模塊服務間的調用進行實時管理,此時SOA Service OrientedArchitecture,面向服務的架構出現了,該架構通過添加服務治理中間層,來實時管理模塊服務之間的相互調用.目前服務治理中間件有阿里的DUBBO,早期時有人用WebService或ESB企業服務總線,底層通訊協議使用SOAP協議(Http+XML)來實現傳輸.SOA架構使用服務治理層解決了服務之間調用關系錯綜復雜的問題,但服務間依賴關系較多,某個環節出錯可能會導致服務雪崩,并且模塊服務間關系復雜,運維成本增加,測試部署困難.
?
SOA架構
微服務架構從SOA架構演變而來,比SOA架構模式,粒度控制更加精細,微服務架構倡導將應用模塊,設計成一個個獨立,可配置,的子服務,每個服務可以獨立部署,互不影響,服務間通訊采用Http協議,并使用restful風格的API形式進行通訊,數據交換采用輕量級Json格式通訊,借助Http實現了系統跨語言,跨平臺的交互,微服務架構,通過對服務的原子化拆分,獨立打包,部署,升級,保證了每個微服務清晰的任務劃分,利于擴展.并且現在已經有成熟的微服務全家桶式的框架,比如SpringCloud以及最新的Spring Cloud Alibaba.
?
微服務架構
- 分布式系統多租戶的優缺點分析
多租戶技術又稱多重租賃技術,是一種軟件架構,它探討的是實現如何在多用戶環境箱,實現共用相同的系統或程序組件,并確保各個用戶之間的數據獨立性和隔離性.在多租戶應用系統架構中,使用多租戶應用系統的客戶稱之為租戶,對租戶而言在系統中建置的各種數據,以及用戶本身客制化的應用程序環境等都是屬于租戶范圍的,也就是說,雖然多個租戶同時在使用一套程序軟件,但每個租戶都有自己的一套客制化軟件環境,因此租戶數據的隔離,隱私,安全是多租戶技術的關鍵.
多租戶的軟件架構,系統維護成本低,系統升級時只需更新一次,維護人員不需要對每個用戶都進行更新,節省了大量的運維成本,同時因為一個軟件實例被多個組織共享,降低了整體的資源消耗,減低了應用運行成本和相應管理開支,同時降低了在云計算環境下,導致的敏感數據容易泄露,數據訪問無詳細記錄,操作無詳細記錄的風險,提高了數據的安全性.另外由于統一部署所以管理起來也會更方便,當然多租戶的軟件架構同樣也有系統復雜性高的問題,由于多租戶系統融合了所有租戶的需求,所以需要更強的專業技術來持續開發升級維護,才能保證系統的持續穩定運行.
- 多租戶系統模型及實現方式分析
在現有多租戶的技術實現中主要有三種模型.
第一種是獨立數據庫隔離模型,即為每個租戶維護一個單獨的數據庫,該數據庫獨占一臺服務器設備,這種方案的用戶隔離級別最高,安全性最好,獨立數據庫是一個租戶獨享一臺數據庫服務器,它提供了最高強度的隔離,租戶的數據彼此,在物理層面上不可見,數據的備份恢復都很靈活.但相應的硬件成本也高,數據庫安裝數量多,隨之會帶來運維和購置成本的增加.
第二種是共享數據庫服務器,獨立數據庫實例模型,這種方式所有租戶共享一個數據庫服務器,但每個租戶使用該數據庫服務器上的一個數據庫實例,將每個租戶分別關聯到這臺數據庫服務器的不同數據庫實例上,租戶之間的數據,彼此在邏輯上是不可見的,這在一定程度上實現了數據的邏輯隔離,并不是完全隔離,但若該數據庫服務器出現問題,所有租戶的數據庫都會受到影響.
第三種是共享數據庫服務器,共享數據庫實例,共享數據庫表模型,
這種方式實現的多租戶系統,所有租戶的數據放到同一臺數據庫服務器的,同一個數據庫實例中,每個租戶通過表中的TenantId來區分不同的租戶數據,這種模型共享程度最高,隔離級別最低,租戶間數據彼此邏輯不可見,這是成本最低的一種實現方式,另外還有一種相似的實現方式,也是通過共享數據庫服務器共享數據庫表,但數據的隔離不是通過TenantId而是通過軟件系統自身的權限配置,來實現的租戶數據邏輯上的隔離,這種方式跟前一種方式相比設計實現成本會更低一些同時也能很好的在邏輯上保證數據的隔離.
- 企業軟件SAAS化的優缺點分析
Saas Software-as-a-Service軟件即服務,對于平臺供應商來說,相對于傳統的軟件供應模式,軟件的Saas化,可以讓用戶通過互聯網使用實時運行的軟件,給用戶帶來極其豐富的體驗的同時,也節約了客戶的使用投資,同時由于供應商,始終維護一套代碼,所以在一定程度上也節省了供應商的成本.同時對于供應商來說,多租戶的軟件架構代碼可重復使用,成本較低,可以更快的為用戶提供解決方案,軟件產品可按功能模塊,隨意組合,定價模式靈活,符合企業發展模式,另外只維護一套軟件,供應商可以把精力專注到產品提升上,給客戶提供更好,更全面的解決方案和技術支持.
- 多租戶系統技術及架構選型分析
多租戶應用軟件構建模型有獨立數據庫服務器模型,獨立數據庫服務器,共享數據庫實例模型,共享數據庫服務器,共享數據庫實例,共享數據庫表模型,這三種方式各有優缺點.
基于這三種構建多租戶系統的模型,我們可以在分布式微服務軟件架構的基礎上再去構建多租戶應用系統,微服務軟件架構是當下比較流行的分布式軟件架構,其提供的全家桶式的,一站式分布式問題解決方案也獲得了眾多企業的認可,最新的SpringCloud Alibaba 優化了服務的治理,流量監控,分布式事物等處理等功能,使得分布式系統的開發變的更加的方便.因此建議使用SpringCloud Alibaba微服務架構做為多租戶系統開發的基礎框架.
在SpringCloud Alibaba的微服務架構選型基礎上,進一步選擇若依管理系統微服務版做為系統開發的基盤,該系統一直保持升級,是基于JAVA EE 分布式微服務架構的平臺,基于經典技術組合(Spring Boot、Spring Cloud & Alibaba、Vue、Element),已經內置了模塊如:部門管理、角色用戶、菜單及按鈕授權、數據權限、系統參數、日志管理、代碼生成等。在線定時任務配置;支持集群,支持多數據源,可以提高系統開發效率,文檔完善,代碼易懂,且基盤持續維護更新保證了基礎代碼的安全,同時支持二次開發,保證了系統靈活的可定制性.
?
?