前言:想要寫出一篇引人入勝的文章?我們特意為您整理了多租戶網(wǎng)站實現(xiàn)方法研究和設(shè)計范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:本文根據(jù)J2EE多層架構(gòu)的Web開發(fā)框架,同時結(jié)合多租戶SaaS原理以及元數(shù)據(jù)思想,構(gòu)建了一個多租戶網(wǎng)站架構(gòu)。其通過單一網(wǎng)站實例,利用簡單的配置,可以及時部署和資源再利用等相關(guān)優(yōu)勢,最終有效節(jié)約社會資源。
關(guān)鍵詞:多租戶網(wǎng)站;實現(xiàn)方法;Web開發(fā)
現(xiàn)如今,網(wǎng)站建設(shè)大部分采取B/S架構(gòu)以及信息發(fā)布,特別是相同行業(yè)當中的網(wǎng)站,如,在教育系統(tǒng)里面的中小學(xué)網(wǎng)站當中,不管是相關(guān)技術(shù)需求或業(yè)務(wù)流程等方面伴有相對比較多相同的地方,大致上均是利用靜態(tài)網(wǎng)頁、動態(tài)網(wǎng)頁等相關(guān)組成,并且整個布局結(jié)構(gòu)相似度相對較高,利用之前單個用戶制定的模式,可以重復(fù)利用性相對較差,造成這一系統(tǒng)建設(shè)需要加大投資力度,造成成本相對較高等相關(guān)問題。如果想要將多租戶共享網(wǎng)站架構(gòu)給予妥善處理,本文筆者采取一種多租戶的網(wǎng)站框架予以實現(xiàn),其通過單一網(wǎng)站實例,利用簡單的配置,可以及時部署和資源再利用等相關(guān)優(yōu)勢,最終有效節(jié)約社會資源。
1多租戶網(wǎng)站結(jié)構(gòu)
1.1系統(tǒng)架構(gòu)
本文筆者所設(shè)計的是根據(jù)J2EE多層架構(gòu)的Web開發(fā)框架,同時結(jié)合多租戶SaaS原理以及元數(shù)據(jù)思想,構(gòu)建的一個多租戶網(wǎng)站架構(gòu)。
1.2多租戶網(wǎng)站工作原理
這一框架主要是按照J2EE模型當中的分層思想,其中包括三個層次,能夠充分進行擴張。另外,應(yīng)用服務(wù)器層一般為Web和EJB這兩種容器,前者主要是能夠返回到動態(tài)的頁面,其中包括JSP以及Struts兩個組件。后者可以將業(yè)務(wù)邏輯予以實現(xiàn),并且利用Bean完成整個映射(O/R),對多租戶當中的數(shù)據(jù)給予增加或者刪減,并且由于其主要是根據(jù)相關(guān)對象的想法,需要在操作方面進行簡單封裝,所以,其接口予以簡化,使這一系統(tǒng)具有靈活性以及擴展性。多租戶組合網(wǎng)站管理系統(tǒng)為了保證能夠有效區(qū)分不同類型組合的租戶數(shù)據(jù)庫就需要在多個數(shù)據(jù)庫列表當中同時增添id等字段,就需要與常規(guī)單一用戶網(wǎng)站有著較大的差異。除此之外,當租戶在需要重新進行網(wǎng)站修改以及需要構(gòu)建一個網(wǎng)站的時候,如查閱網(wǎng)站文章以及需要添加網(wǎng)站欄目等均必須在網(wǎng)站有關(guān)的語句當中一并增加了ID這個唯一性的標識,進而將不同時期租戶當中的不同數(shù)據(jù)來源給予有效的隔離,以免發(fā)生泄漏。多媒體租戶服務(wù)網(wǎng)站當中的可配置性數(shù)據(jù)是通過利用具有結(jié)合統(tǒng)一數(shù)據(jù)模型以及結(jié)合元數(shù)據(jù)結(jié)構(gòu)模型技術(shù)予以結(jié)合實現(xiàn),同時讓整個系統(tǒng)當中的基本應(yīng)用數(shù)據(jù)以及其他個性化的擴展應(yīng)用數(shù)據(jù)分別對其進行整合存儲,不但這樣可以充分滿足不同類型用戶的數(shù)據(jù)個性化需求,并且不會對系統(tǒng)數(shù)據(jù)資料表當中的數(shù)據(jù)結(jié)構(gòu)造成任何的破壞。另外,因為必須要面對功能需求個性化以及大量的租戶。因此,系統(tǒng)需要可以支持租戶具有更多選擇性地自行定制自身所可能需要的網(wǎng)站功能。除此之外,本文當中的多租戶管理網(wǎng)站當今所需要支持的都是個性化功能配置,其中主要包含租戶頁面定制內(nèi)容、模板樣式選擇以及系統(tǒng)菜單等。
2關(guān)鍵技術(shù)
多租戶網(wǎng)站技術(shù)構(gòu)建與之前網(wǎng)站之當中有非常大的差別,其中包括有以下幾點;(1)各個租戶共享一個應(yīng)用實例,數(shù)據(jù)當中不但可以共享,同時可以進行隔離。應(yīng)該怎樣的情況之下保證每一個租戶當中的數(shù)據(jù)給予安全隔離;(2)個性化配置問題;(3)多源數(shù)據(jù)庫訪問。
2.1數(shù)據(jù)隔離與數(shù)據(jù)庫訪問接口設(shè)計
其架構(gòu)設(shè)計的關(guān)鍵就是對每一個租戶當中這些數(shù)據(jù)的安全隔離,為了我們能夠真正的實現(xiàn)每一個人對租戶當中的所有數(shù)據(jù)信息給予有效性的隔離,本文筆者主要利用在租戶表當中添加字符id值,進而有效隔離區(qū)分各個租戶當中的數(shù)據(jù)信息。除此之外,筆者利用這一種設(shè)計方法在租戶表當中重新增添了對租戶當中標識字段的隔離機制,進而將租戶數(shù)據(jù)進行有效分離。多租戶共享網(wǎng)站管理框架主要采取的關(guān)系型共享數(shù)據(jù)庫,對每個租戶當中的所有數(shù)據(jù)可以進行共享儲存,從三種儲存模式當中分別選取一種共享型的數(shù)據(jù)庫基礎(chǔ)架構(gòu),如表1所示。筆者主要考慮到也許我們會同時伴有多個不同的數(shù)據(jù)源,因此,需要設(shè)計一個不同數(shù)據(jù)源的訪問管理組件,被我們稱之為統(tǒng)一數(shù)據(jù)訪問層,在當中封裝以及抽象全部數(shù)據(jù)的增加和刪減改查,采取JDBC,降低每一次連接所需要消耗的時間,本文筆者通過EJB所提供的連接池方式,進而獲得這一效果,例如圖1所示。
2.2可配置性分析
在網(wǎng)站當中需要管理的配置包括有表、頁面以及原子功能等,目前暫時被定義為配置元。通過MDA對相關(guān)配置元給予抽象分析,進而將其分解成為常規(guī)數(shù)據(jù)以及元數(shù)據(jù)模型,其中前者顯示不同用戶之間相同的數(shù)據(jù)庫字段,然而后者顯示不同租戶可以改變的字段集合。除此之外,為了能夠真實體現(xiàn)這種可變性,本文筆者對當中的數(shù)據(jù)庫表結(jié)構(gòu)給予相對應(yīng)的改變,如圖2所示。元數(shù)據(jù)塊的區(qū)表當中,租戶對象信息能夠分配一個id字段作為當中的唯一租戶識別數(shù)據(jù)字段,通過這一識別系統(tǒng),我們能夠有效的區(qū)分不同租戶之間的一些數(shù)據(jù)相關(guān)信息。除此之外,這一字段據(jù)信息不僅能夠更改一個可變的元數(shù)據(jù)區(qū)的字段,同時能夠利用這一id來準確標識這一字段當中的租戶對象數(shù)據(jù)信息表。如,考慮存放同學(xué)信息的數(shù)據(jù)表—--student表,這個當中的表2所顯示的核心字段以及自定義字段,分別被學(xué)校A以及學(xué)校B所應(yīng)用。從表2當中能夠看出學(xué)校Q自定義S-sex字段,然而學(xué)校B自定義為S-age字段,均能夠在系統(tǒng)處在生產(chǎn)環(huán)境。本文筆者假設(shè)這里存放的元數(shù)據(jù)模型當中的對象信息表,全部表的入口均是從m-object表開始,程序均會從這一個表當中開始取出相對應(yīng)student表記錄自定義字段。元數(shù)據(jù)模型當中的租戶對象關(guān)聯(lián)表當中存放的數(shù)據(jù)為自定義分類,m-class表能夠作為其之間的中間關(guān)系表。元數(shù)據(jù)模型當中的字段信息表里面存在的數(shù)據(jù)為實際的字段名,能夠獲得相對應(yīng)的某一個租戶當中均需要的自定義字段每一個自定義字段當中的值儲存在m-data表當中,例如,當中的student表當中的101與102的兩條數(shù)據(jù)。為了能夠獲得核心模型與元數(shù)據(jù)模型當中的數(shù)據(jù)集合,必須要利用共同查詢模式,其結(jié)果是包含student表當中的schlool-id為101的記錄。
3多租戶網(wǎng)站的運行實例
租戶必須按需要到系統(tǒng)后臺,將系統(tǒng)前臺所提供需要的元素對其進行組合構(gòu)造。除此之外,現(xiàn)如今,平臺當中所需要提供的包括文章內(nèi)容管理、用戶體驗管理、前臺模板網(wǎng)頁設(shè)計模板以及后臺欄目管理等,與此同時,不同的系統(tǒng)租戶平臺能夠按照所提供需要的元素給予前臺模板以及后臺功能等多方面進行選擇。選擇成功以后,當中的租戶可以連接到租戶的網(wǎng)站服務(wù)后臺,對網(wǎng)站前臺進行管理,后天維護管理當中的租戶不僅能夠為網(wǎng)站前臺欄目進行添加,例如,jave技術(shù)等網(wǎng)站相關(guān)欄目,同時租戶能夠為網(wǎng)站前臺進行添加相對應(yīng)的相關(guān)文章。網(wǎng)站后天在構(gòu)建以后,租戶便能夠?qū)⑶芭_予以開放,并且供瀏覽者應(yīng)用,瀏覽人員采取租戶所提供的瀏覽網(wǎng)址,在這里就能夠看到網(wǎng)站后天當中添加的欄目和里面的文章等。
4總結(jié)
多租戶系統(tǒng)技術(shù)就是屬于一種軟件架構(gòu)設(shè)計技術(shù),其目的是在通過探討與設(shè)計實現(xiàn)系統(tǒng)應(yīng)該如何進行應(yīng)用,并在多用戶的軟件環(huán)境之下可以共享租戶系統(tǒng)或者應(yīng)用程序中的組件,同時仍然可以能夠真正保證每個不同用戶之間具有數(shù)據(jù)的完全隔離性。通過多租戶系統(tǒng)技術(shù)不僅能夠真正保證實現(xiàn)多個不同租戶當中的個人共享系統(tǒng)應(yīng)用實例,并且還可以真正保證實現(xiàn)每個租戶的共享系統(tǒng)應(yīng)用實例的完全個性化和可定制。另外,利用多租戶系統(tǒng)技術(shù)后還能夠保證整個租戶系統(tǒng)具有共性的部分就是可以單獨進行數(shù)據(jù)共享,個性化的部分則是需要被單獨進行隔離。通過在多個不同租戶當中的成本資源重復(fù)組合利用,可以將其中的成本資源給予有效節(jié)省,同時在每個不同租戶當中可以共享應(yīng)用程序的單個系統(tǒng)實例,一旦遇到需要系統(tǒng)升級的重要時候,多個租戶都會在同一時間重新進行系統(tǒng)升級。除此之外,由于多個租戶同時享有一個系統(tǒng)當中的核心系統(tǒng)代碼,所以,一旦進行系統(tǒng)升級,僅需要將當中的一個核心系統(tǒng)代碼重新進行系統(tǒng)升級處理即可。因為網(wǎng)站缺乏多租戶協(xié)同運行系統(tǒng)架構(gòu)和網(wǎng)站個性化資源配置管理能力等功能,以往用于面向承租租戶的各種B/S大型網(wǎng)站管理框架系統(tǒng)開發(fā)技術(shù)并不完全適用。以往的技術(shù)主要采取ASP模式,每一個用戶對應(yīng)一個運行實例,這一方式開發(fā)相對較為簡單,然而會導(dǎo)致多次開發(fā),可重復(fù)使用性較差。然而通過利用j2ee以及saas多租戶等多種相關(guān)信息技術(shù)可以構(gòu)建多租戶的網(wǎng)站架構(gòu),從而讓廣大用戶更加方便于快捷應(yīng)用系統(tǒng)中的功能。
作者:季露 單位:南京高等職業(yè)技術(shù)學(xué)校