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