亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
919
2025-04-01
本文目錄一覽:
1. 概述
筆者從2014年開始接觸SaaS(Software as a Service),即多租戶(或多承租)軟件應用平臺;并一直從事相關領域的架構設計及研發工作。機緣巧合,在筆者本科畢業設計時完成了一個基于SaaS的高效財務管理平臺的課題研究,從中收獲頗多。最早接觸SaaS時,國內相關資源匱乏,唯一有的參照資料是《互聯網時代的軟件革命:SaaS架構設計》(葉偉等著)一書。最后課題的實現是基于OSGI(Open Service Gateway Initiative)Java動態模塊化系統規范來實現的。
時至今日,五年的時間過去了,軟件開發的技術發生了巨大的改變,筆者所實現SaaS平臺的技術棧也更新了好幾波,真是印證了那就話:“山重水盡疑無路,柳暗花明又一村”。基于之前走過的許多彎路和踩過的坑,以及近段時間有許多網友問我如何使用Spring Boot實現多租戶系統,決定寫一篇文章聊一聊關于SaaS的硬核技術。
說起SaaS,它只是一種軟件架構,并沒有多少神秘的東西,也不是什么很難的系統,我個人的感覺,SaaS平臺的難度在于商業上的運營,而非技術上的實現。就技術上來說,SaaS是這樣一種架構模式:它讓多個不同環境的用戶使用同一套應用程序,且保證用戶之間的數據相互隔離。現在想想看,這也有點共享經濟的味道在里面。
筆者在這里就不再深入聊SaaS軟件成熟度模型和數據隔離方案對比的事情了。今天要聊的是使用Spring Boot快速構建獨立數據庫/共享數據庫獨立Schema的多租戶系統。我將提供一個SaaS系統最核心的技術實現,而其他的部分有興趣的朋友可以在此基礎上自行擴展。
2. 嘗試了解多租戶的應用場景
假設我們需要開發一個應用程序,并且希望將同一個應用程序銷售給N家客戶使用。在常規情況下,我們需要為此創建N個Web服務器(Tomcat),N個數據庫(DB),并為N個客戶部署相同的應用程序N次。現在,如果我們的應用程序進行了升級或者做了其他任何的改動,那么我們就需要更新N個應用程序同時還需要維護N臺服務器。接下來,如果業務開始增長,客戶由原來的N個變成了現在的N+M個,我們將面臨N個應用程序和M個應用程序版本維護,設備維護以及成本控制的問題。運維幾乎要哭死在機房了…
為了解決上述的問題,我們可以開發多租戶應用程序,我們可以根據當前用戶是誰,從而選擇對應的數據庫。例如,當請求來自A公司的用戶時,應用程序就連接A公司的數據庫,當請求來自B公司的用戶時,自動將數據庫切換到B公司數據庫,以此類推。從理論上將沒有什么問題,但我們如果考慮將現有的應用程序改造成SaaS模式,我們將遇到第一個問題:如果識別請求來自哪一個租戶?如何自動切換數據源?
3. 維護、識別和路由租戶數據源
我們可以提供一個獨立的庫來存放租戶信息,如數據庫名稱、鏈接地址、用戶名、密碼等,這可以統一的解決租戶信息維護的問題。租戶的識別和路由有很多種方法可以解決,下面列舉幾個常用的方式:
解決了上述問題后,我們再來看看如何獲取客戶端傳入的租戶信息,以及在我們的業務代碼中如何使用租戶信息(最關鍵的是DataSources的問題)。
我們都知道,在啟動Spring Boot應用程序之前,就需要為其提供有關數據源的配置信息(有使用到數據庫的情況下),按照一開始的需求,有N個客戶需要使用我們的應用程序,我們就需要提前配置好N個數據源(多數據源),如果N<50,我認為我還能忍受,如果更多,這樣顯然是無法接受的。為了解決這一問題,我們需要借助Hibernate 5提供的動態數據源特性,讓我們的應用程序具備動態配置客戶端數據源的能力。簡單來說,當用戶請求系統資源時,我們將用戶提供的租戶信息(tenantId)存放在ThreadLoacal中,緊接著獲取TheadLocal中的租戶信息,并根據此信息查詢單獨的租戶庫,獲取當前租戶的數據配置信息,然后借助Hibernate動態配置數據源的能力,為當前請求設置數據源,最后之前用戶的請求。這樣我們就只需要在應用程序中維護一份數據源配置信息(租戶數據庫配置庫),其余的數據源動態查詢配置。接下來,我們將快速的演示這一功能。
4. 項目構建
我們將使用Spring Boot 2.1.5版本來實現這一演示項目,首先你需要在Maven配置文件中加入如下的一些配置:
然后提供一個可用的配置文件,并加入如下的內容:
接下來,我們需要關閉Spring Boot自動配置數據源的功能,在項目主類上添加如下的設置:
最后,讓我們看看整個項目的結構:
5. 實現租戶數據源查詢模塊
我們將定義一個實體類存放租戶數據源信息,它包含了租戶名,數據庫連接地址,用戶名和密碼等信息,其代碼如下:
持久層我們將繼承JpaRepository接口,快速實現對數據源的CURD操作,同時提供了一個通過租戶名查找租戶數據源的接口,其代碼如下:
業務層提供通過租戶名獲取租戶數據源信息的服務(其余的服務各位可自行添加):
接下來是配置自定義的數據源,其源碼如下:
在改配置類中,我們主要提供包掃描路徑,實體管理工程,事務管理器和數據源配置參數的配置。
6. 實現租戶業務模塊
在此小節中,租戶業務模塊我們僅提供一個用戶登錄的場景來演示SaaS的功能。其實體層、業務層和持久化層根普通的Spring Boot Web項目沒有什么區別,你甚至感覺不到它是一個SaaS應用程序的代碼。
首先,創建一個用戶實體User,其源碼如下:
業務層提供了一個根據用戶名檢索用戶信息的服務,它將調用持久層的方法根據用戶名對租戶的用戶表進行檢索,如果找到滿足條件的用戶記錄,則返回用戶信息,如果沒有找到,則返回null;持久層和業務層的源碼分別如下:
7. 配置-
我們需要提供一個租戶信息的-,用以獲取租戶標識符,其源代碼和配置-的源代碼如下:
8. 維護租戶標識信息
在這里,我們使用ThreadLocal來存放租戶標識信息,為動態設置數據源提供數據支持,該類提供了設置租戶標識、獲取租戶標識以及清除租戶標識三個靜態方法。其源碼如下:
9. 動態數據源切換
要實現動態數據源切換,我們需要借助兩個類來完成,CurrentTenantIdentifierResolver和AbstractDataSourceBasedMultiTenantConnectionProviderImpl。從它們的命名上就可以看出,一個負責解析租戶標識,一個負責提供租戶標識對應的租戶數據源信息。
首先,我們需要實現CurrentTenantIdentifierResolver接口中的resolveCurrentTenantIdentifier()和validateExistingCurrentSessions()方法,完成租戶標識的解析功能。實現類的源碼如下:
有了租戶標識符解析類之后,我們需要擴展租戶數據源提供類,實現從數據庫動態查詢租戶數據源信息,其源碼如下:
最后,我們還需要提供租戶業務模塊數據源配置,這是整個項目核心的地方,其代碼如下:
10. 應用測試
最后,我們通過一個簡單的登錄案例來測試本次課程中的SaaS應用程序,為此,需要提供一個Controller用于處理用戶登錄邏輯。在本案例中,沒有嚴格的對用戶密碼進行加密,而是使用明文進行比對,也沒有提供任何的權限認證框架,知識單純的驗證SaaS的基本特性是否具備。登錄控制器代碼如下:
在啟動項目之前,我們需要為主數據源創建對應的數據庫和數據表,用于存放租戶數據源信息,同時還需要提供一個租戶業務模塊數據庫和數據表,用來存放租戶業務數據。一切準備就緒后,啟動項目,在瀏覽器中輸入:http://localhost:8080/login.html
在登錄窗口中輸入對應的租戶名,用戶名和密碼,測試是否能夠正常到達主頁。可以多增加幾個租戶和用戶,測試用戶是否正常切換到對應的租戶下。
總結
別找了apaas多租戶開源框架, 翻遍全網apaas多租戶開源框架,推薦率最高的“免費低代碼開發平臺”就在這了!
想要提高辦公體驗或者工作效率的朋友,看這一篇就夠了!
織信Informat作為一款隨需而配的低代碼開發平臺,它包含報表、表單、頁面、自動化工作流、溝通等多個模塊,無需懂代碼,通過拖拽可視化組件就可以快速、輕松搭建企業管理系統、業務平臺、企業官網等等。同時它也是一款業務管理平臺,提供大量成熟應用和行業模板,讓管理與業務隨心而變、隨需而配,一站式解決企業的數字信息化需求。
作為一款功能強大,同時簡單易用的低代碼開發平臺,可以滿足企業95%以上的數字信息化需要。
織信界面體驗apaas多租戶開源框架:簡潔、便捷、大氣,整個界面是清新自然的協調色系,UI漂亮,平臺使用操作很簡單,自由度也非常高。
織信工作臺
雖然涉及數據管理、企業官網和多場景系統應用搭建,織信這款工具卻并不難理解,你可以用它來制作你想要的業務管理、內部辦公和對外銷售,尤其是做業務管理方面的應用,以完成數據的搜集、整理、協作、推送、展示與分析。小到一張調查問卷的制作,大到OA、ERP、CRM、BPM、eHr等應用的搭建。對外銷售管理到對內業務系統辦公協作,都能輕松完成。
織信還提供了100+現成的應用和行業模板,你不用從零開始,直接基于應用或模板來修改或拓展功能,可以更快速的搭建出貼近你需求的應用,就像搭積木一樣,省時還省力省心。
織信應用市場
這樣一款平臺,為什么在開頭講它可以滿足企業95%的需求?
1、20%:入門門檻低
在以前,很多人會花精力去學Excel 百分之五十的功能,可能到最后用到的不過是5%。對企業而言,Excel不管是在功能靈活性方面,還是在協作上,尤其是在移動端應用方面,都難以滿足需求;而買現成的通用軟件,功能或臃腫或不全,外包定制開發不僅貴而且周期長,低門檻搭建個性化應用成為剛需;市面上也有一些快速開發平臺類的產品,但使用難度高,要很懂編程,要花大量的時間精力學習,這對一般的企業員工或管理者來說,都是極不現實的。
織信功能織信功能
織信低代碼開發平臺的一大價值在于,它大大降低了企業應用的制作難度,完全可視化配置,簡化了企業應用的制作過程,既不需要編寫代碼,甚至還不用部署安裝,還可以基于現成的CRM、ERP、eHr、OA、任務協作、項目管理、調查問卷、生產管理等應用和行業模板快速搭建,即搭即用的理念非常契合互聯時代的快節奏。
從功能上說,織信包含報表、表單、頁面、自動化工作流、溝通等模塊(詳見上圖),這些模塊都有相應的可視化設計器,操作基本就是“拖拉拽”,而且織信匠心獨運,很多超復雜的業務邏輯都做了大量的底層工作,你只需要簡單配置就可以使用,例如在設計“入庫單”的表單時,使用表單的“初始化表單”功能,根據“訂單編號”,就可以從“銷售訂單”和“訂單明細”子表中讀取出相應數據,快捷生成入庫單。
2、20%:邊改邊用,隨需應變
企業不管是買現成的通用軟件,還是外包定制開發,都不能滿足企業應用的需求變化,或者要花很貴的價錢去隨時定制,但開發周期長,質量也不保障,低成本、易操作的隨時自定義是企業應用的另一剛需;
織信低代碼開發平臺的另一價值在于,它很好的滿足了不同行業和企業,甚至同一企業在不同的發展時期、不同業務階段的個性化需求,可以說它是一套動態平臺、智能化平臺,任何時候哪個功能用得不合適了、不爽了就可以隨時配置修改,幾分鐘就能解決需求變化的問題,這也是深度契合了互聯時代的快節奏。
3、20%:-移動端Web
身處移動互聯時代,外出辦公、銷售外勤都是常況,加上全民熱情普及,移動端的使用和體驗成為重中之重;
在織信低代碼開發平臺做出來的功能在微信里可以直接群組分享,適合用來做對外銷售+業務管理+內部辦公;深度集成微信和釘釘,使用非常方便,而且體驗非常流暢不亞于原生APP。
4、20%:緊密的團隊協作
團隊協作過程中,成員間不僅僅要共享數據資料,對數據快速整合、實時分析,還要對數據能針對性的實時溝通,例如銷售、項目的團隊協作;
織信低代碼開發平臺在協作方面做得非常完善:數據的共享和權限控制只是基礎中的基礎,此外流程審批可以關聯任何業務,提供數據進行互動協作、任務協作等協作模塊,這也是其他平臺、開發框架等產品所沒有的。
互動面板,可以針對任意項目業務或數據發起互動協作,評論、回復、參與:
5、15%:深度滿足業務需求
企業需求不僅都有各自的個性特點,行業差異性大,而且就算是中小企業也是五臟俱全,需求都不會簡單,企業應用自然要做到有“深度”,滿足復雜業務邏輯。
市面上,類似開發平臺、開發框架或者應用搭建工具是相當多的。這類工具有個最大的問題:功能強大了就太難用,而太容易使用了功能就太簡單。例如麥客、金數據這類,使用起來就相當簡單,拖拉一下就能搞出一個表單、報表,但開發的功能也相當簡單,其實就是簡單的增刪改查+一點報表展示,用這類工具不能開發出強大的業務管理軟件嗎,例如簡單地實現報表里加個按扭實現鉆取數據,做一些操作,就做不到;表單的界面也不能任意設計。這類工具就是用于收集一下數據,ERP沒有的功能這里來補一補,都是一些不重要的邊緣一點的業務才用這類工具來信息化管理。
織信低代碼開發平臺可以輕松解決上面的問題,它一方面是提供了大量的行業應用,我們可以基于成熟應用進行修改開發,另一方面,它把很多復雜的邏輯已經智能性的處理了,用戶只需要簡單的配置操作就可以完成復雜的功能。同時,織信不像別的開發平臺,需要很強的技術背景以及花費大量的學習時間,可以說織信兼顧到了功能強大和傻瓜好用,是一款非常適合企業管理者或企業業務部門使用的低代碼快速開發平臺。
6、最后,剩余5%的期待
織信基礎功能的搭建學習并不難,甚至可以說非常簡單,任何人都能輕易學會,而且它提供了很多成熟的通用應用和行業應用,有大量的模板,其實對使用者來說真的是性價比非常高的選擇。
但像調用函數這種,難度相對較高的內容,用起來也是非常輕松,比起普通編程開發或者使用傳統的開發平臺、開發工具簡直是太簡單,只是對完全不懂技術的小白,就需要花費一些時間來學習,這方面來說,織信也提供了很多的視頻教程,以及幫助中心。
總的來說,織信作為一款快速開發平臺,同時也是一款業務管理平臺,能讓不懂技術的人搭建出企業信息化所需的東西,也能讓懂技術的人事半功倍,更加專注于業務,功能豐富、自由而強大,UI漂亮體驗流暢,不管是做對外的小程序還是做對內的管理平臺,都非常值得推薦。
合理并且有效地運用低/零代碼開發平臺,不僅可以讓我們工作高效地運行,還能最大程度保證團隊目標的達成。我推薦使用織信Informat,它內置100多個應用模板并覆蓋:OA、ERP、CRM、績效、人事、企業服務、個人及組織等多個應用場景。點擊一鍵安裝,即可免費試用。現在注冊可享受終身免費使用權益。同時還能體驗在線搭建功能,是幫助企業開啟數字化轉型的重要引擎!
關于apaas多租戶開源框架和apaas的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。 apaas多租戶開源框架的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于apaas、apaas多租戶開源框架的信息別忘了在本站進行查找喔。版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。