一凰兑、什么是多租戶
????????引申自百度百科:多租戶簡單來說是指一個(gè)單獨(dú)的實(shí)例可以為多個(gè)組織服務(wù)。多租戶技術(shù)為共用的數(shù)據(jù)中心內(nèi)如何以單一系統(tǒng)架構(gòu)與服務(wù)提供多數(shù)客戶端相同甚至可定制化的服務(wù)高蜂,并且仍然可以保障客戶的數(shù)據(jù)隔離聪黎。
????????個(gè)人對(duì)于多租戶的理解:通過一套統(tǒng)一的程序界面,來支持多個(gè)不同組織的業(yè)務(wù)需求(具有共性業(yè)務(wù))备恤,通知保證不同組織之間的數(shù)據(jù)隔離稿饰。這種系統(tǒng)又稱為SaaS平臺(tái),
????????舉例來說露泊,小A,小B,小C三人在合租一套三室一廳的房子喉镰,其中三人的臥室是屬于每個(gè)人的獨(dú)立空間,必須用各自門上的鑰匙才能打開惭笑,保證自己空間的私密性侣姆。同時(shí)三人又同時(shí)擁有如客廳、廚房沉噩、衛(wèi)生間等公共區(qū)域捺宗,屬于三人共同享有的資源。這個(gè)例子中的ABC三人川蒙,就屬于使用多租戶系統(tǒng)的不同機(jī)構(gòu)或企業(yè)蚜厉,他們所使用的軟件服務(wù)都運(yùn)行在統(tǒng)一系統(tǒng)平臺(tái)(同一套房子內(nèi)),多家機(jī)構(gòu)將會(huì)共用一套程序界面的系統(tǒng)畜眨,使用系統(tǒng)提供的基本組件和工具(公用客廳廚房等公共區(qū)域)昼牛,而且保證了不同機(jī)構(gòu)用戶數(shù)據(jù)的私密性(擁有各自的臥室)。但從字面意思上理解康聂,租戶意思是只是租用贰健,僅有系統(tǒng)的使用權(quán),可向房東申請(qǐng)空調(diào)恬汁、冰箱等的工具伶椿,但不能更改系統(tǒng)整體架構(gòu)。
? ? ? ? 多租戶系統(tǒng)更多的是對(duì)企業(yè)和組織的業(yè)務(wù)運(yùn)轉(zhuǎn)提供服務(wù),對(duì)于企業(yè)或組織而言悬垃,能夠賦予他們?cè)谄脚_(tái)上固有的身份特征游昼,限制了其對(duì)于系統(tǒng)的操作行為和可控制系統(tǒng)權(quán)限。而對(duì)于實(shí)際操作系統(tǒng)用戶來說尝蠕,可以給不同身份的用戶賦予不同業(yè)務(wù)動(dòng)作烘豌,來保障整體業(yè)務(wù)的正常運(yùn)轉(zhuǎn)
二、多租戶的基本框架
多租戶系統(tǒng)權(quán)限管理
???????一般來說多租戶系統(tǒng)的機(jī)構(gòu)比較簡單看彼,在創(chuàng)建租戶后廊佩,通過賦予用戶角色權(quán)限,來達(dá)到用戶控制租戶后臺(tái)權(quán)限功能的目的靖榕,這是大多數(shù)多租戶系統(tǒng)的設(shè)計(jì)解決方案标锄,但在產(chǎn)品設(shè)計(jì)階前,就需要先梳理清楚多租戶系統(tǒng)的業(yè)務(wù)架構(gòu)茁计,就好像是蓋房子一樣料皇,先搭好框架,立好支柱星压,完善樓層践剂,然后再確定房門、窗的位置等娜膘。在一般的企業(yè)或機(jī)構(gòu)后臺(tái)中權(quán)限管理的大體模式如下:
多租系統(tǒng)的權(quán)限管理邏輯如下:
? ??????1.將平臺(tái)資源打包成為獨(dú)立的功能權(quán)限逊脯,資源包括平臺(tái)功能菜單、用戶使用產(chǎn)生的數(shù)據(jù)竣贪,以及列表字段等
? ??????2.設(shè)定角色權(quán)限以訪問系統(tǒng)資源军洼,完成角色權(quán)限與平臺(tái)內(nèi)功能的關(guān)聯(lián)
? ??????3.角色可以關(guān)聯(lián)用戶或用戶組,也就是將系統(tǒng)資源授權(quán)給用戶或用戶組處理演怎,完成訪問系統(tǒng)資源的操作
????????在實(shí)際操作上匕争,每個(gè)租戶下的用戶都需要單獨(dú)生成訪問賬號(hào),用戶通過賬號(hào)才能登錄租戶系統(tǒng)使用軟件服務(wù)爷耀。租戶和用戶是一對(duì)多的關(guān)系汗捡,在實(shí)際業(yè)務(wù)場景種,一個(gè)租戶系統(tǒng)內(nèi)要根據(jù)業(yè)務(wù)模式區(qū)分為前端銷售畏纲、后端運(yùn)營、服務(wù)人員等多種用戶角色春缕,這些用戶都是在同一租戶下共享同一租戶數(shù)據(jù)盗胀,但又因?yàn)闃I(yè)務(wù)模式不同,所享受的功能權(quán)限是不一樣的锄贼,這樣既能夠保證業(yè)務(wù)流轉(zhuǎn)過程中前后端數(shù)據(jù)統(tǒng)一票灰,又能讓每個(gè)用戶業(yè)務(wù)單獨(dú)運(yùn)營,更能滿足多樣化的業(yè)務(wù)場景。
????????另外屑迂,多租戶系統(tǒng)的設(shè)計(jì)邏輯并不是一成不變的浸策,有時(shí)也需要根據(jù)當(dāng)前業(yè)務(wù)不同對(duì)多租戶管理系統(tǒng)進(jìn)行改造,比如A機(jī)構(gòu)作為一家教育公司惹盼,自身不負(fù)責(zé)ToC業(yè)務(wù)庸汗,而是與一些其他B端教育培訓(xùn)公司合作,將平臺(tái)商品打包售出手报,同時(shí)將銷售、運(yùn)營等動(dòng)作交付給ToB機(jī)構(gòu),而自身只負(fù)責(zé)整體業(yè)務(wù)支撐和運(yùn)營管理潜沦,就需要引入更多的概念已完成業(yè)務(wù)邏輯:
多租戶系統(tǒng)的搭建
針對(duì)前期合作機(jī)構(gòu)的共性需求干花,和前期內(nèi)部業(yè)務(wù)這一年的摸索,梳理出平臺(tái)多租戶系統(tǒng)的基本功能清單:
1.應(yīng)用管理
應(yīng)用創(chuàng)建是多租戶平臺(tái)最基礎(chǔ)信息揍鸟,一般應(yīng)用接入都需要獨(dú)立的品牌信息兄裂,以注冊(cè)公眾號(hào)、小程序阳藻、軟件等信息晰奖。同時(shí)應(yīng)用是企業(yè)與企業(yè)之間數(shù)據(jù)隔離的關(guān)鍵,根據(jù)企業(yè)的要求稚配,賦予功能或應(yīng)用定制的功能畅涂,功能可基于應(yīng)用層面進(jìn)行配置,具體所需功能需要上午提前線下溝通道川,再由線上手動(dòng)配置完成午衰。
2.租戶管理
租戶管理可支持平臺(tái)應(yīng)用下細(xì)分多個(gè)租戶登錄系統(tǒng),同時(shí)租戶與租戶之間數(shù)據(jù)保持隔離冒萄,在應(yīng)用所有的權(quán)限下臊岸,可為不同租戶配置不同權(quán)限。而應(yīng)用層面的管理員可獲取所有租戶數(shù)據(jù)信息尊流,對(duì)租戶賬戶帅戒、賬戶權(quán)限有直接管理權(quán)。
3.權(quán)限管理
一個(gè)賬號(hào)所擁有權(quán)限與角色息息相關(guān)崖技,當(dāng)角色權(quán)限設(shè)置完成后逻住,再賦予到賬號(hào)上,這樣這個(gè)賬號(hào)就用了查看系統(tǒng)里指定功能的權(quán)利迎献,如果需要修改某個(gè)賬號(hào)的權(quán)限瞎访,實(shí)際上修改的是賬號(hào)所關(guān)聯(lián)的角色,只需要對(duì)角色權(quán)限進(jìn)行修改即可吁恍。對(duì)于賬號(hào)而言扒秸,角色是賬號(hào)的一個(gè)屬性播演,沒有角色的賬號(hào)只有系統(tǒng)的登錄訪問權(quán)限,沒有數(shù)據(jù)查看和操作權(quán)伴奥。
4.數(shù)據(jù)安全
數(shù)據(jù)安全隔離其實(shí)對(duì)于某一個(gè)賬號(hào)來說是沒有感知的写烤,但實(shí)際上每個(gè)使用環(huán)節(jié)都由數(shù)據(jù)隔離的體現(xiàn)。比如作為應(yīng)用可以給租戶配置哪些權(quán)限拾徙,單獨(dú)一個(gè)租戶可以看到哪些用戶信息等洲炊。而數(shù)據(jù)隔離的形式也分為三種:
? ??????1.獨(dú)立數(shù)據(jù)庫;? ??2.共享數(shù)據(jù)庫通過數(shù)據(jù)表隔離锣吼;? ??3.共享數(shù)據(jù)庫和表字段
具體的這三種數(shù)據(jù)隔離形式如何區(qū)分可以參考:業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)常見的隔離和共享模式??進(jìn)行了解选浑。
基于我們的業(yè)務(wù)場景選擇的是第三種數(shù)據(jù)隔離形式,實(shí)現(xiàn)成本更低玄叠,更易于后續(xù)維護(hù)古徒。
三、具體的設(shè)計(jì)方案闡述
多租戶模型主要解決不同角色身份之間的相互流轉(zhuǎn)读恃,在實(shí)際業(yè)務(wù)運(yùn)轉(zhuǎn)中就涉及到幾個(gè)重要的環(huán)節(jié):庫存管理隧膘、銷售管理、運(yùn)營管理
圍繞上面的業(yè)務(wù)需求寺惫,我首先介紹一下我們公司的多租戶平臺(tái)產(chǎn)品架構(gòu):
在這個(gè)業(yè)務(wù)模式中疹吃,最優(yōu)先保證的是平臺(tái)的基礎(chǔ)功能建設(shè),來滿足以下幾個(gè)層面的需求:
????? ??1.租戶賬號(hào)權(quán)限西雀、身份認(rèn)證等基礎(chǔ)建設(shè)萨驶。
????? ??2.各租戶商品的采購及商品流轉(zhuǎn),搭建完整的銷售鏈路艇肴,并具備基本的服務(wù)功能腔呜。
????? ??3.學(xué)生課時(shí)、課程信息再悼、個(gè)人信息的增刪改查核畴。
????? ??4.擴(kuò)展運(yùn)營場景,提供統(tǒng)計(jì)報(bào)表冲九。消息中心等服務(wù)谤草。
????????在設(shè)計(jì)過程中,因?yàn)椴煌緲I(yè)務(wù)模式不同莺奸,設(shè)計(jì)方案也會(huì)不一樣丑孩。從上往下看,各企業(yè)或組織業(yè)務(wù)屬性要基本一致灭贷,需要統(tǒng)一的產(chǎn)品架構(gòu)來滿足基本的業(yè)務(wù)需求嚎杨。從下網(wǎng)上看,不同機(jī)構(gòu)之間會(huì)有細(xì)微的需求差異氧腰,一些獨(dú)特的需求需要單獨(dú)配置枫浙,同時(shí)要根據(jù)獨(dú)特的需求來反推后續(xù)有哪些擴(kuò)展的共性需求。
四古拴、后記
多租戶系統(tǒng)搭建基本框架就已經(jīng)建立起來的箩帚,在前期的構(gòu)架建立中,功能一般只是給到業(yè)務(wù)支撐來滿足基本業(yè)務(wù)運(yùn)轉(zhuǎn)的需要黄痪,會(huì)耗費(fèi)比較多時(shí)間且短期內(nèi)不容易見效的工作紧帕。然而真正的困難點(diǎn)在于接下來的運(yùn)營過程中怎么樣去支持不同應(yīng)用之間的不同業(yè)務(wù)訴求,怎么樣讓產(chǎn)品桅打、技術(shù)架構(gòu)怎么樣做的更靈活是嗜,同時(shí)產(chǎn)品預(yù)期不過于超前:
? ??????1.短視容易讓產(chǎn)品功能越來越臃腫,后期拓展的開發(fā)成本過高挺尾。
? ??????2.過于超前也容易帶來不必要的開發(fā)成本鹅搪,拉長開發(fā)周期且不容易見效。
以上就是我基于在所經(jīng)歷業(yè)務(wù)所整理的多租戶權(quán)限管理設(shè)計(jì)方案遭铺,文中有不正確的地方歡迎大家指正丽柿,歡迎大家隨時(shí)與我探討。