- 應用系統(tǒng)架構種類及優(yōu)缺點分析
軟件體系結構是構建計算機軟件實踐的基礎。 軟件架構是一個系統(tǒng)的草圖。它描述的對象是直接構成系統(tǒng)的抽象組件。各個組件之間的連接則明確和相對細致地描述組件之間的通訊。
隨著社會及軟件設計的發(fā)展,不同時期對軟件架構的要求也不一樣,軟件架構的發(fā)展,從最開始的單體應用架構,到垂直應用架構,再到分布式架構,再到面向服務的SOA架構,再到目前比較流行的微服務架構,每種架構都在自己的時代發(fā)揮了重要的作用.
單體架構是早期的應用軟件架構,以前的SSH或者SSM架構模式就屬于這種架構,架構采用分層的架構模式,可分為數(shù)據(jù)庫訪問層,業(yè)務邏輯層,控制層,前臺到后臺在一個項目里完成,這種架構簡單,開發(fā)成本低,部署在一個節(jié)點上就可以,維護也比較方便,但缺點也比較明顯,全部功能集成在一個項目中,這樣對于大型項目來講不易開發(fā)和維護,模塊之間耦合緊密,單點容錯能力很低,并且無法針對不同的模塊進行針對性優(yōu)化和水平擴展,一個模塊出現(xiàn)問題,會導致整個系統(tǒng)無法使用.

?

單體應用架構
隨著項目運行發(fā)展,用戶訪問量逐漸增大,單體架構的應用只能通過軟負載均衡等手段,結合單純增加節(jié)點的方式來應對,但系統(tǒng)中并不是所有的模塊都會有比較大的訪問量,這時單體架構的劣勢就會展現(xiàn)出來,這時我們把系統(tǒng)模塊拆分,對訪問量較大的模塊,增加節(jié)點,進行水平擴展即可這就是垂直應用架構,垂直應用架構很好的適應了當時時代發(fā)展的需要,實現(xiàn)了流量分擔,解決了并發(fā)問題,并且可以針對不同模塊進行優(yōu)化和水平擴展,一個模塊出了問題不會影響到其他系統(tǒng),從而也提高了系統(tǒng)容錯能力,但垂直應用架構的系統(tǒng),各模塊間相互獨立,無法相互調(diào)用,這會導致重復的開發(fā)任務.模塊間物業(yè)相互調(diào)用的情況是避免不了的.

?

垂直應用架構
分布式架構,由垂直應用架構演變而來,當垂直應用架構中,模塊越來越多,重復的業(yè)務代碼會越來越多,這時把重復部分代碼抽取出來,做成統(tǒng)一的業(yè)務層來提供獨立服務,這就形成了分布式架構,分布式架構分為表現(xiàn)層和服務層兩個部分,表現(xiàn)層僅處理頁面交互,服務層提供業(yè)務邏輯支撐,各個服務模塊之間可以相互調(diào)用,提高了代碼的復用性,但隨著業(yè)務模塊增多,系統(tǒng)間耦合度會逐漸變高,模塊間調(diào)用關系錯綜復雜,系統(tǒng)會變的越來越難以維護.


?
分布式架構
由于分布式架構下,模塊服務越來越多,模塊小而多的問題越來越突出,模塊間調(diào)用混亂復雜,這個時候就需要增加一個調(diào)度中心,對模塊服務間的調(diào)用進行實時管理,此時SOA Service OrientedArchitecture,面向服務的架構出現(xiàn)了,該架構通過添加服務治理中間層,來實時管理模塊服務之間的相互調(diào)用.目前服務治理中間件有阿里的DUBBO,早期時有人用WebService或ESB企業(yè)服務總線,底層通訊協(xié)議使用SOAP協(xié)議(Http+XML)來實現(xiàn)傳輸.SOA架構使用服務治理層解決了服務之間調(diào)用關系錯綜復雜的問題,但服務間依賴關系較多,某個環(huán)節(jié)出錯可能會導致服務雪崩,并且模塊服務間關系復雜,運維成本增加,測試部署困難.

?


SOA架構
微服務架構從SOA架構演變而來,比SOA架構模式,粒度控制更加精細,微服務架構倡導將應用模塊,設計成一個個獨立,可配置,的子服務,每個服務可以獨立部署,互不影響,服務間通訊采用Http協(xié)議,并使用restful風格的API形式進行通訊,數(shù)據(jù)交換采用輕量級Json格式通訊,借助Http實現(xiàn)了系統(tǒng)跨語言,跨平臺的交互,微服務架構,通過對服務的原子化拆分,獨立打包,部署,升級,保證了每個微服務清晰的任務劃分,利于擴展.并且現(xiàn)在已經(jīng)有成熟的微服務全家桶式的框架,比如SpringCloud以及最新的Spring Cloud Alibaba.

?

微服務架構
- 分布式系統(tǒng)多租戶的優(yōu)缺點分析
多租戶技術又稱多重租賃技術,是一種軟件架構,它探討的是實現(xiàn)如何在多用戶環(huán)境箱,實現(xiàn)共用相同的系統(tǒng)或程序組件,并確保各個用戶之間的數(shù)據(jù)獨立性和隔離性.在多租戶應用系統(tǒng)架構中,使用多租戶應用系統(tǒng)的客戶稱之為租戶,對租戶而言在系統(tǒng)中建置的各種數(shù)據(jù),以及用戶本身客制化的應用程序環(huán)境等都是屬于租戶范圍的,也就是說,雖然多個租戶同時在使用一套程序軟件,但每個租戶都有自己的一套客制化軟件環(huán)境,因此租戶數(shù)據(jù)的隔離,隱私,安全是多租戶技術的關鍵.
多租戶的軟件架構,系統(tǒng)維護成本低,系統(tǒng)升級時只需更新一次,維護人員不需要對每個用戶都進行更新,節(jié)省了大量的運維成本,同時因為一個軟件實例被多個組織共享,降低了整體的資源消耗,減低了應用運行成本和相應管理開支,同時降低了在云計算環(huán)境下,導致的敏感數(shù)據(jù)容易泄露,數(shù)據(jù)訪問無詳細記錄,操作無詳細記錄的風險,提高了數(shù)據(jù)的安全性.另外由于統(tǒng)一部署所以管理起來也會更方便,當然多租戶的軟件架構同樣也有系統(tǒng)復雜性高的問題,由于多租戶系統(tǒng)融合了所有租戶的需求,所以需要更強的專業(yè)技術來持續(xù)開發(fā)升級維護,才能保證系統(tǒng)的持續(xù)穩(wěn)定運行.
- 多租戶系統(tǒng)模型及實現(xiàn)方式分析
在現(xiàn)有多租戶的技術實現(xiàn)中主要有三種模型.
第一種是獨立數(shù)據(jù)庫隔離模型,即為每個租戶維護一個單獨的數(shù)據(jù)庫,該數(shù)據(jù)庫獨占一臺服務器設備,這種方案的用戶隔離級別最高,安全性最好,獨立數(shù)據(jù)庫是一個租戶獨享一臺數(shù)據(jù)庫服務器,它提供了最高強度的隔離,租戶的數(shù)據(jù)彼此,在物理層面上不可見,數(shù)據(jù)的備份恢復都很靈活.但相應的硬件成本也高,數(shù)據(jù)庫安裝數(shù)量多,隨之會帶來運維和購置成本的增加.
第二種是共享數(shù)據(jù)庫服務器,獨立數(shù)據(jù)庫實例模型,這種方式所有租戶共享一個數(shù)據(jù)庫服務器,但每個租戶使用該數(shù)據(jù)庫服務器上的一個數(shù)據(jù)庫實例,將每個租戶分別關聯(lián)到這臺數(shù)據(jù)庫服務器的不同數(shù)據(jù)庫實例上,租戶之間的數(shù)據(jù),彼此在邏輯上是不可見的,這在一定程度上實現(xiàn)了數(shù)據(jù)的邏輯隔離,并不是完全隔離,但若該數(shù)據(jù)庫服務器出現(xiàn)問題,所有租戶的數(shù)據(jù)庫都會受到影響.
第三種是共享數(shù)據(jù)庫服務器,共享數(shù)據(jù)庫實例,共享數(shù)據(jù)庫表模型,
這種方式實現(xiàn)的多租戶系統(tǒng),所有租戶的數(shù)據(jù)放到同一臺數(shù)據(jù)庫服務器的,同一個數(shù)據(jù)庫實例中,每個租戶通過表中的TenantId來區(qū)分不同的租戶數(shù)據(jù),這種模型共享程度最高,隔離級別最低,租戶間數(shù)據(jù)彼此邏輯不可見,這是成本最低的一種實現(xiàn)方式,另外還有一種相似的實現(xiàn)方式,也是通過共享數(shù)據(jù)庫服務器共享數(shù)據(jù)庫表,但數(shù)據(jù)的隔離不是通過TenantId而是通過軟件系統(tǒng)自身的權限配置,來實現(xiàn)的租戶數(shù)據(jù)邏輯上的隔離,這種方式跟前一種方式相比設計實現(xiàn)成本會更低一些同時也能很好的在邏輯上保證數(shù)據(jù)的隔離.
- 企業(yè)軟件SAAS化的優(yōu)缺點分析
Saas Software-as-a-Service軟件即服務,對于平臺供應商來說,相對于傳統(tǒng)的軟件供應模式,軟件的Saas化,可以讓用戶通過互聯(lián)網(wǎng)使用實時運行的軟件,給用戶帶來極其豐富的體驗的同時,也節(jié)約了客戶的使用投資,同時由于供應商,始終維護一套代碼,所以在一定程度上也節(jié)省了供應商的成本.同時對于供應商來說,多租戶的軟件架構代碼可重復使用,成本較低,可以更快的為用戶提供解決方案,軟件產(chǎn)品可按功能模塊,隨意組合,定價模式靈活,符合企業(yè)發(fā)展模式,另外只維護一套軟件,供應商可以把精力專注到產(chǎn)品提升上,給客戶提供更好,更全面的解決方案和技術支持.
- 多租戶系統(tǒng)技術及架構選型分析
多租戶應用軟件構建模型有獨立數(shù)據(jù)庫服務器模型,獨立數(shù)據(jù)庫服務器,共享數(shù)據(jù)庫實例模型,共享數(shù)據(jù)庫服務器,共享數(shù)據(jù)庫實例,共享數(shù)據(jù)庫表模型,這三種方式各有優(yōu)缺點.
基于這三種構建多租戶系統(tǒng)的模型,我們可以在分布式微服務軟件架構的基礎上再去構建多租戶應用系統(tǒng),微服務軟件架構是當下比較流行的分布式軟件架構,其提供的全家桶式的,一站式分布式問題解決方案也獲得了眾多企業(yè)的認可,最新的SpringCloud Alibaba 優(yōu)化了服務的治理,流量監(jiān)控,分布式事物等處理等功能,使得分布式系統(tǒng)的開發(fā)變的更加的方便.因此建議使用SpringCloud Alibaba微服務架構做為多租戶系統(tǒng)開發(fā)的基礎框架.
在SpringCloud Alibaba的微服務架構選型基礎上,進一步選擇若依管理系統(tǒng)微服務版做為系統(tǒng)開發(fā)的基盤,該系統(tǒng)一直保持升級,是基于JAVA EE 分布式微服務架構的平臺,基于經(jīng)典技術組合(Spring Boot、Spring Cloud & Alibaba、Vue、Element),已經(jīng)內(nèi)置了模塊如:部門管理、角色用戶、菜單及按鈕授權、數(shù)據(jù)權限、系統(tǒng)參數(shù)、日志管理、代碼生成等。在線定時任務配置;支持集群,支持多數(shù)據(jù)源,可以提高系統(tǒng)開發(fā)效率,文檔完善,代碼易懂,且基盤持續(xù)維護更新保證了基礎代碼的安全,同時支持二次開發(fā),保證了系統(tǒng)靈活的可定制性.

?
?