美團(tuán)數(shù)據(jù)安全平臺(tái)建設(shè)

轉(zhuǎn)自美團(tuán) https://tech.meituan.com/2019/02/14/data-security-platform-construction-practice-jiangjunling.html

如果從控制力的角度來(lái)進(jìn)行劃分的話牙捉,權(quán)限管控可以分為功能級(jí)權(quán)限管控和數(shù)據(jù)級(jí)權(quán)限管控创葡。早期的數(shù)據(jù)安全產(chǎn)品大多使用傳統(tǒng)的權(quán)限模型,只能實(shí)現(xiàn)功能級(jí)權(quán)限管控浪箭,無(wú)法進(jìn)行數(shù)據(jù)級(jí)權(quán)限管控婴梧。
image.png

功能應(yīng)用類(lèi)產(chǎn)品的權(quán)限表達(dá)下梢,一般為“是否有權(quán)限”,而數(shù)據(jù)類(lèi)產(chǎn)品權(quán)限表達(dá)的關(guān)系更加復(fù)雜塞蹭。例如數(shù)據(jù)類(lèi)產(chǎn)品的報(bào)表孽江,不僅需要表達(dá)出用戶能否訪問(wèn)這個(gè)報(bào)表,而且需要表達(dá)出用戶能訪問(wèn)報(bào)表中的哪些維度番电、指標(biāo)以及維值的范圍岗屏。還需要告知這些維度指標(biāo)來(lái)自于哪些庫(kù)表模型,是否有權(quán)限訪問(wèn)以及創(chuàng)建報(bào)表漱办。

權(quán)限模型

傳統(tǒng)的權(quán)限模型有ACL(Access Control List)訪問(wèn)控制列表这刷,RBAC(Role-Based Access Control)基于角色的訪問(wèn)控制等。以上模型比較適用于應(yīng)用類(lèi)型產(chǎn)品的權(quán)限管控娩井,而數(shù)據(jù)類(lèi)型的產(chǎn)品對(duì)信息安全的要求更高暇屋,而且各類(lèi)資源間的關(guān)系也更復(fù)雜,使用傳統(tǒng)的模型難以將內(nèi)部關(guān)系進(jìn)行清晰的表達(dá)洞辣,所以我們?cè)赗BAC權(quán)限模型的基礎(chǔ)上咐刨,擴(kuò)展設(shè)計(jì)了新的權(quán)限模型。

圖2 傳統(tǒng)權(quán)限模型

如圖2所示扬霜,傳統(tǒng)的權(quán)限模型:

  • ACL訪問(wèn)控制列表定鸟,用戶與權(quán)限直接關(guān)聯(lián),直接維護(hù)用戶與列表中資源的關(guān)系從而達(dá)到權(quán)限管控的目的著瓶。
  • RBAC模型則是角色與權(quán)限進(jìn)行關(guān)聯(lián)联予,用戶成為相應(yīng)的角色而獲得對(duì)應(yīng)的權(quán)限。

ACL模型和RBAC模型蟹但,都存在以下幾個(gè)問(wèn)題:

數(shù)據(jù)類(lèi)產(chǎn)品資源之間關(guān)系復(fù)雜躯泰,不能很好地表達(dá)這種復(fù)雜的關(guān)系。例如:一個(gè)報(bào)表下有多個(gè)標(biāo)簽頁(yè)华糖,一個(gè)標(biāo)簽頁(yè)下有多個(gè)組件麦向,一個(gè)組件下有多個(gè)維度、指標(biāo)等客叉。同時(shí)維度诵竭、指標(biāo)又來(lái)自不同的數(shù)據(jù)模型话告、庫(kù)表等。資源與資源之間存在關(guān)系卵慰,當(dāng)管理員給一個(gè)用戶賦予報(bào)表的全部或部分權(quán)限時(shí)沙郭,報(bào)表下的子資源需要同時(shí)獲得對(duì)應(yīng)的權(quán)限。
RBAC模型中角色與角色之間沒(méi)有對(duì)應(yīng)的關(guān)系裳朋。例如:組織架構(gòu)中病线,員工所在的組織架構(gòu)如下:華東區(qū)/銷(xiāo)售一區(qū)/銷(xiāo)售一組,員工擁有的角色是銷(xiāo)售一組的角色鲤嫡。當(dāng)角色之間沒(méi)有關(guān)系時(shí)送挑,員工如果需要華東區(qū)角色的權(quán)限時(shí),需要添加到華東區(qū)的角色中暖眼。而如果角色與角色之間具有從屬關(guān)系時(shí)惕耕,則能很好地解決這個(gè)問(wèn)題。

新的權(quán)限模型是如何解決上面這些問(wèn)題的:

  1. 設(shè)計(jì)資源模型時(shí)诫肠,資源與資源之間具有從屬關(guān)系司澎,并且資源允許多層級(jí),以樹(shù)形結(jié)構(gòu)展示栋豫。例如報(bào)表是一個(gè)父資源挤安,標(biāo)簽、組件笼才、維度指標(biāo)都是報(bào)表下的子資源漱受,這樣賦權(quán)時(shí)能清晰地展示出報(bào)表資源與下面的子資源的關(guān)系,賦權(quán)和鑒權(quán)時(shí)才能滿足各種權(quán)限控制的要求骡送。
  2. 角色與角色之間具有從屬關(guān)系昂羡,例如員工在華東區(qū)/銷(xiāo)售一區(qū)/銷(xiāo)售一組的組織架構(gòu)中,華東區(qū)/銷(xiāo)售一區(qū)/銷(xiāo)售一組這3個(gè)角色之間分別具有父子級(jí)的從屬關(guān)系摔踱,當(dāng)員工在銷(xiāo)售一組部門(mén)下虐先,則擁有華東區(qū)、銷(xiāo)售一區(qū)派敷、銷(xiāo)售一組的所有權(quán)限蛹批。當(dāng)權(quán)限不沖突時(shí)則直接合并所有權(quán)限,沖突時(shí)則以“就近原則”進(jìn)行覆蓋篮愉。


    圖3 新的權(quán)限模型

    如圖3所示腐芍,新的權(quán)限模型包含3個(gè)部分,用戶中心试躏、資源中心猪勇、權(quán)限中心。

用戶中心:用戶管理颠蕴、角色管理

  • 角色分為個(gè)人泣刹、組織助析、自定義3種,一個(gè)用戶可以同時(shí)擁有多個(gè)角色椅您,比如用戶默認(rèn)對(duì)應(yīng)一個(gè)個(gè)人角色外冀,又可同時(shí)擁有在公司組織架構(gòu)中組織角色、在自定義組織的自定義角色掀泳。
  • 角色支持多層級(jí)雪隧,滿足角色間權(quán)限繼承的表達(dá)方式。
  • 用戶开伏、部門(mén)信息Mafka(美團(tuán)基于Kafka開(kāi)發(fā)的一個(gè)分布式消息中間件綜合解決方案)實(shí)時(shí)更新膀跌,每天ETL定時(shí)同步,保證人員入職固灵、轉(zhuǎn)崗、調(diào)離權(quán)限實(shí)時(shí)同步劫流。
圖4 用戶中心

資源中心:資源管理

  • 資源類(lèi)型支持自定義巫玻,在通用資源類(lèi)型的基礎(chǔ)上支持自定義的資源接入,滿足各個(gè)系統(tǒng)不同資源的統(tǒng)一管控祠汇。
  • 資源支持多層級(jí)仍秤,樹(shù)形結(jié)構(gòu)的資源展示方式便于資源的統(tǒng)一賦權(quán)鑒權(quán);給一個(gè)報(bào)表資源賦權(quán)時(shí)可很,掛在報(bào)表下的維度诗力、指標(biāo)等資源能統(tǒng)一獲得權(quán)限。
  • 支持資源打包簡(jiǎn)化賦權(quán)流程我抠。
  • 資源安全密級(jí)苇本、資源負(fù)責(zé)人,支持按照資源配置不同的審批模板進(jìn)行權(quán)限自助申請(qǐng)菜拓。
圖5 資源中心

權(quán)限中心:角色與資源的關(guān)系的多種策略表達(dá)

  • 范圍策略:例如報(bào)表中的平臺(tái)維度的維值包括美團(tuán)和大眾點(diǎn)評(píng)瓣窄,賦權(quán)時(shí),支持按要求給用戶賦予部分或全部權(quán)限纳鼎;鑒權(quán)時(shí)俺夕,按照規(guī)則解析為某人擁有某維度的部分或全部權(quán)限。
  • 表達(dá)式策略:當(dāng)把報(bào)表給用戶賦權(quán)時(shí)贱鄙,設(shè)置表達(dá)式為limit 10劝贸,表示當(dāng)前用戶在該報(bào)表其他權(quán)限的基礎(chǔ)上再進(jìn)行限制,只能返回前10條記錄逗宁。
  • 權(quán)限自動(dòng)合并:一個(gè)用戶擁有多個(gè)角色映九,多角色的同一資源的權(quán)限鑒權(quán)時(shí)按照規(guī)則自動(dòng)合并;規(guī)則解析時(shí)疙剑,權(quán)限數(shù)據(jù)不沖突時(shí)取合集氯迂,沖突時(shí)按照優(yōu)先級(jí)取對(duì)應(yīng)的值践叠。
  • 黑白名單:支持按照特定的規(guī)則,對(duì)某人針對(duì)某資源全面開(kāi)發(fā)和封禁嚼蚀,黑白名單策略的優(yōu)先級(jí)最高禁灼,其中黑名單高于白名單。
圖6 權(quán)限中心

挑戰(zhàn)

在建設(shè)數(shù)據(jù)安全平臺(tái)的過(guò)程中轿曙,主要面臨以下幾點(diǎn)挑戰(zhàn):

  • 隨著支持的業(yè)務(wù)線增加弄捕,通用平臺(tái)的不能滿足各個(gè)業(yè)務(wù)線的定制需求時(shí),需要保證系統(tǒng)的靈活可擴(kuò)展导帝。
  • 提供一個(gè)通用的數(shù)據(jù)安全平臺(tái)守谓,滿足大部分的數(shù)據(jù)安全的要求,保證系統(tǒng)的通用性您单。
  • 權(quán)限系統(tǒng)作為一個(gè)高QPS訪問(wèn)的系統(tǒng)斋荞,如何保證系統(tǒng)的高可用。

解決思路

  1. 提供靈活可插拔的Plugin服務(wù)虐秦,在通用權(quán)限基礎(chǔ)上平酿,滿足各個(gè)業(yè)務(wù)線靈活的權(quán)限管控要求。
  2. 提供一個(gè)通用的數(shù)據(jù)安全平臺(tái)悦陋,滿足基本的權(quán)限蜈彼、審批、審計(jì)的基礎(chǔ)功能俺驶。
  3. 微服務(wù)架構(gòu)幸逆、核心與非核心服務(wù)分離、數(shù)據(jù)緩存降級(jí)滿足系統(tǒng)高可用暮现。

解決方案

圖7 將軍令整體架構(gòu)

圖7 將軍令整體架構(gòu)

如圖7所示还绘,將軍令分3塊,數(shù)據(jù)內(nèi)容權(quán)限平臺(tái)送矩、審批流平臺(tái)蚕甥、審計(jì)日志平臺(tái):

  • 提供各種靈活可插拔的Plugin服務(wù),支持在通用服務(wù)的基礎(chǔ)基礎(chǔ)上進(jìn)行定制開(kāi)發(fā)栋荸。
  • 提供基礎(chǔ)服務(wù)菇怀,滿足各種通用的數(shù)據(jù)安全要求。
  • 提供管理工作臺(tái)晌块,支持管理員對(duì)各種數(shù)據(jù)和規(guī)則進(jìn)行頁(yè)面管理和配置爱沟。

具體方案

Plugin服務(wù)層,保證系統(tǒng)靈活可擴(kuò)展

在滿足通用權(quán)限的基礎(chǔ)上匆背,各個(gè)業(yè)務(wù)線難免會(huì)有定制的權(quán)限管控需求呼伸,于是設(shè)計(jì)了權(quán)限Plugin模塊。

通用服務(wù)提供用戶管理、資源管理括享、鑒權(quán)授權(quán)的服務(wù)搂根,Plugin調(diào)用基礎(chǔ)服務(wù)實(shí)現(xiàn)特殊的權(quán)限管控。Plugin模塊的應(yīng)用和數(shù)據(jù)各自單獨(dú)管理铃辖,通過(guò)RPC方式調(diào)用通用服務(wù)實(shí)現(xiàn)靈活可插拔剩愧。后續(xù)Plugin模塊的服務(wù)支持各個(gè)接入的應(yīng)用單獨(dú)定制開(kāi)發(fā)。

圖8 Plugin服務(wù)

如圖8所示娇斩,通用權(quán)限的服務(wù)與Plugin的服務(wù)是分離的仁卷,支持多個(gè)Plugin服務(wù)靈活可插拔:

  • 通用服務(wù)提供用戶、資源犬第、鑒權(quán)授權(quán)等通用服務(wù)锦积,大部分的系統(tǒng)基于通用服務(wù)即可實(shí)現(xiàn)權(quán)限管控要求。
  • Plugin服務(wù)基于通用服務(wù)對(duì)外提供的SDK進(jìn)行拓展歉嗓,各個(gè)Plugin服務(wù)單獨(dú)部署丰介,保證系統(tǒng)之間互相獨(dú)立。

最終的權(quán)限實(shí)現(xiàn)分層管控鉴分,分為核心數(shù)據(jù)層(用戶基矮、資源、權(quán)限數(shù)據(jù))和應(yīng)用層冠场。核心數(shù)據(jù)層的數(shù)據(jù)由通用服務(wù)進(jìn)行管理,達(dá)到權(quán)限數(shù)據(jù)統(tǒng)一管控的要求本砰。應(yīng)用層以Plugin服務(wù)方式接入碴裙,Plugin通過(guò)通用服務(wù)層對(duì)外的SDK進(jìn)行權(quán)限數(shù)據(jù)讀寫(xiě),達(dá)到定制的管控要求点额。應(yīng)用層的數(shù)據(jù)各自存儲(chǔ)舔株,可以自定義管控規(guī)則。接口之間的調(diào)用通過(guò)BA認(rèn)證鑒權(quán)还棱,保證服務(wù)之間調(diào)用的安全性载慈。

基礎(chǔ)服務(wù)層,保證系統(tǒng)通用性

通用權(quán)限系統(tǒng)架構(gòu)

使用微服務(wù)架構(gòu)設(shè)計(jì)珍手,系統(tǒng)分為接入層办铡、服務(wù)層、數(shù)據(jù)庫(kù)層琳要、以及外部服務(wù)層寡具。主要包含以下幾個(gè)核心服務(wù):

  • 用戶服務(wù):主要包含用戶和部門(mén)信息同步、角色管理稚补。
  • 資源服務(wù):包含資源注冊(cè)童叠、資源定時(shí)同步、資源密級(jí)及管理員管理课幕、資源包管理厦坛。
  • 賦權(quán)服務(wù):權(quán)限自助申請(qǐng)五垮、管理員賦權(quán)。
  • 鑒權(quán)服務(wù):提供各種鑒權(quán)的SDK供使用方調(diào)用杜秸。
圖9 權(quán)限系統(tǒng)架構(gòu)

如圖9所示:

  • 接入層:對(duì)外所有系統(tǒng)通過(guò)統(tǒng)一的SDK調(diào)用服務(wù)放仗。
  • 服務(wù)層:微服務(wù)架構(gòu),各個(gè)服務(wù)之間互相之間提供服務(wù)亩歹。
  • 數(shù)據(jù)庫(kù)層:合理利用緩存匙监、數(shù)據(jù)降級(jí),保證服務(wù)高可用小作。
  • 集成公司公共服務(wù)亭姥,保證系統(tǒng)穩(wěn)健運(yùn)行。

審批系統(tǒng)架構(gòu)

提供通用的審批服務(wù)顾稀,提供多級(jí)審批模板达罗,使用時(shí)選擇模板啟動(dòng)審批流,審批系統(tǒng)按照啟動(dòng)的參數(shù)進(jìn)行規(guī)則解析静秆,自動(dòng)適配對(duì)應(yīng)的審批流程粮揉。縮減接入流程支持一鍵接入抚笔。


圖10 審批系統(tǒng)架構(gòu)

如圖10所示:優(yōu)化審批接入流程扶认,提供通用的審批服務(wù),減少系統(tǒng)接入開(kāi)發(fā)成本:

  • 前期開(kāi)發(fā)一個(gè)審批功能需要6個(gè)步驟殊橙,繪制流程圖辐宾,配置審批的組和成員,配置通知的消息膨蛮,配置事件映射叠纹,啟動(dòng)審批流,開(kāi)發(fā)回調(diào)接口改狀態(tài)敞葛。
  • 而我們?cè)谄脚_(tái)的審批服務(wù)基礎(chǔ)上進(jìn)行封裝誉察,提供通用的審批模板,接入審批系統(tǒng)只需要選擇模板啟動(dòng)審批流惹谐,并提供回調(diào)接口即可持偏。能滿足大部分的審批功能。

提供通用的規(guī)則解析引擎豺鼻,支持審批人综液、審批條件、審批通知按照規(guī)則動(dòng)態(tài)解析匹配儒飒。靈活實(shí)現(xiàn)自動(dòng)審批谬莹、多人多級(jí)審批、定時(shí)催辦等多種通用功能。

對(duì)接權(quán)限和審計(jì)系統(tǒng)附帽,保證審批系統(tǒng)數(shù)據(jù)安全:

  • 對(duì)接權(quán)限系統(tǒng)埠戳,提供管理員權(quán)限管控。
  • 對(duì)接審計(jì)系統(tǒng)蕉扮,操作數(shù)據(jù)落到審計(jì)系統(tǒng)便于后續(xù)的數(shù)據(jù)審計(jì)整胃。

審計(jì)系統(tǒng)架構(gòu)

提供通用的數(shù)據(jù)審計(jì)服務(wù),客戶端日志埋點(diǎn)上報(bào)喳钟,審計(jì)日志按類(lèi)型落到Elasticsearch中存儲(chǔ)屁使。對(duì)接如意可視化報(bào)表出審計(jì)報(bào)告,對(duì)接權(quán)限系統(tǒng)管控?cái)?shù)據(jù)權(quán)限奔则。
圖11 審計(jì)系統(tǒng)架構(gòu)

如圖11所示:審計(jì)數(shù)據(jù)模型層支持自動(dòng)擴(kuò)展:

  • 每個(gè)應(yīng)用對(duì)應(yīng)一個(gè)appkey蛮寂,每個(gè)appkey按照模板分日期自動(dòng)創(chuàng)建一個(gè)索引,支持自動(dòng)擴(kuò)展易茬。
  • 每種類(lèi)型的審計(jì)日志對(duì)應(yīng)Elasticsearch索引中的一個(gè)type酬蹋,新增一種操作日志時(shí),type自動(dòng)創(chuàng)建抽莱。
  • 審計(jì)日志中的字段對(duì)應(yīng)type中的字段范抓,新增字段時(shí)自動(dòng)擴(kuò)展。

保證系統(tǒng)高可用

微服務(wù)架構(gòu)服務(wù)分離

隨著系統(tǒng)的模塊功能越來(lái)越多食铐,單一架構(gòu)模式已不再適合敏捷開(kāi)發(fā)匕垫,模塊越來(lái)越大系統(tǒng)啟動(dòng)則越慢,任一模塊出錯(cuò)則整個(gè)系統(tǒng)的服務(wù)都不可用虐呻。

為了保證服務(wù)的高可用和擴(kuò)展性年缎,于是以微服務(wù)架構(gòu)把模塊進(jìn)行拆分,并把核心與非核心服務(wù)進(jìn)行分離铃慷。

圖12 微服務(wù)架構(gòu)

如圖12所示:

  • 前端接入層通過(guò)HTTP接入,BA認(rèn)證校驗(yàn)請(qǐng)求合法性蜕该,通過(guò)Nginx負(fù)載均衡犁柜。
  • 管理控制臺(tái),通過(guò)調(diào)用服務(wù)層的各個(gè)服務(wù)實(shí)現(xiàn)統(tǒng)一管理堂淡。
  • 服務(wù)層馋缅,抽象系統(tǒng)各個(gè)模塊,每個(gè)模塊都是一個(gè)微服務(wù)绢淀,每一個(gè)微服務(wù)都獨(dú)立部署萤悴,可以根據(jù)每個(gè)服務(wù)的規(guī)模按需部署。
  • Client層皆的,對(duì)外提供統(tǒng)一的Pigeon(美團(tuán)內(nèi)部分布式服務(wù)RPC通信框架)接口覆履,通過(guò)POM引入調(diào)用服務(wù)層各個(gè)服務(wù)。

權(quán)限繼承

由于資源支持多層級(jí),設(shè)計(jì)權(quán)限模型時(shí)支持權(quán)限繼承硝全,當(dāng)賦權(quán)時(shí)開(kāi)啟繼承栖雾,則用戶默認(rèn)擁有該資源以及下面所有資源的全部權(quán)限,數(shù)據(jù)存儲(chǔ)時(shí)只需要存儲(chǔ)祖先資源與用戶之間的關(guān)系伟众。大大減少了權(quán)限矩陣大小析藕。

圖13 權(quán)限繼承

權(quán)限數(shù)據(jù)存儲(chǔ)

接入的系統(tǒng)越多,則資源和用戶就越多凳厢。隨著系統(tǒng)運(yùn)行越久账胧,對(duì)應(yīng)的權(quán)限數(shù)據(jù)也會(huì)隨之快速增長(zhǎng)。如何在數(shù)據(jù)增長(zhǎng)的同時(shí)保證接口的性能和高可用先紫。

權(quán)限備份與恢復(fù)

參照HBase的版本號(hào)和MySQL的Binlog的設(shè)計(jì)思路治泥,賦權(quán)時(shí)權(quán)限只存儲(chǔ)當(dāng)前用戶最新權(quán)限數(shù)據(jù),歷史權(quán)限數(shù)據(jù)和操作記錄用版本號(hào)的方式存儲(chǔ)到Elasticsearch中泡孩。用戶鑒權(quán)時(shí)只需要查詢(xún)MySQL的權(quán)限數(shù)據(jù)即可车摄,保證鑒權(quán)接口的高效性。

圖14 權(quán)限備份與恢復(fù)

如圖14所示:

  • 賦權(quán)操作時(shí)仑鸥,通過(guò)版本號(hào)管理權(quán)限數(shù)據(jù)吮播,每次操作后版本號(hào)加1,MySQL和Redis中只存儲(chǔ)最新的權(quán)限數(shù)據(jù)眼俊。
  • 歷史權(quán)限數(shù)據(jù)通過(guò)版本號(hào)的方式存儲(chǔ)到Elasticsearch中意狠,每次查看歷史操作記錄或恢復(fù)權(quán)限數(shù)據(jù)時(shí),根據(jù)版本號(hào)回溯即可疮胖。

權(quán)限過(guò)期清理

  • 通過(guò)Crane定時(shí)調(diào)度环戈,根據(jù)配置的通知規(guī)則,掃描即將過(guò)期的權(quán)限數(shù)據(jù)澎灸,發(fā)送消息通知用戶進(jìn)行權(quán)限續(xù)期璃搜。
  • 掃描已過(guò)期的權(quán)限數(shù)據(jù)米同,清理MySQL和Redis中的過(guò)期權(quán)限數(shù)據(jù),并轉(zhuǎn)儲(chǔ)到Elasticsearch中保存,已備后續(xù)的權(quán)限審計(jì)香璃。

數(shù)據(jù)讀寫(xiě)分離会涎、緩存熊榛、備份以及服務(wù)熔斷降級(jí)

各個(gè)服務(wù)使用MySQL分庫(kù)存儲(chǔ)讼昆,使用Zebra(美團(tuán)數(shù)據(jù)庫(kù)訪問(wèn)層中間件)進(jìn)行讀寫(xiě)分離;合理使用數(shù)據(jù)緩存與備份其兴,并支持服務(wù)的熔斷降級(jí)顶瞒,以保證服務(wù)的高可用。

圖15 數(shù)據(jù)讀寫(xiě)分離元旬、緩存榴徐、備份以及服務(wù)熔斷降級(jí)

如圖15所示:

  • 各個(gè)服務(wù)使用MySQL分庫(kù)存儲(chǔ)守问;核心服務(wù)與非核心服務(wù)分離,服務(wù)和數(shù)據(jù)庫(kù)支持按需彈性拓展箕速。

  • 角色酪碘、資源等熱點(diǎn)數(shù)據(jù)使用Redis做緩存,并在Redis緩存不可用時(shí)自動(dòng)下沉到MySQL進(jìn)行查詢(xún)盐茎。

  • 操作記錄和歷史數(shù)據(jù)等不活躍數(shù)據(jù)落地到Elasticsearch兴垦,以便審計(jì)和數(shù)據(jù)恢復(fù)。

  • 服務(wù)不可用時(shí)支持熔斷降級(jí)字柠,以保證核心服務(wù)的可用性探越。

合理使用消息隊(duì)列、任務(wù)調(diào)度窑业、線程池钦幔、分布式鎖

使用消息隊(duì)列、任務(wù)調(diào)度常柄、線程池進(jìn)行異步鲤氢、削峰、解耦合西潘,減少服務(wù)響應(yīng)時(shí)間卷玉,提升用戶體驗(yàn)。并使用分布式鎖保證數(shù)據(jù)一致性喷市。

圖16 提高服務(wù)響應(yīng)速度

如圖16所示:

  • 使用消息隊(duì)列處理用戶請(qǐng)求相种,實(shí)時(shí)返回操作成功,后臺(tái)根據(jù)接受到的MQ消息異步進(jìn)行處理并修改狀態(tài)品姓,頁(yè)面輪詢(xún)狀態(tài)展示最終結(jié)果或發(fā)送大象(美團(tuán)內(nèi)部通訊工具)消息進(jìn)行最終結(jié)果推送寝并。
  • 需要定時(shí)同步的任務(wù)通過(guò)Crane分布式任務(wù)調(diào)度平臺(tái)進(jìn)行定時(shí)調(diào)度執(zhí)行。
  • 審批回調(diào)時(shí)使用線程池處理審批結(jié)果回調(diào)與失敗重試腹备,較少創(chuàng)建銷(xiāo)毀線程的開(kāi)銷(xiāo)衬潦。
  • 分布式鎖,保證同一個(gè)方法在同一操作上只能被一臺(tái)機(jī)器上的一個(gè)線程執(zhí)行植酥,避免用戶重復(fù)提交或者多機(jī)器重復(fù)處理導(dǎo)致的數(shù)據(jù)不一致别渔。

展望

作為一個(gè)通用的數(shù)據(jù)安全平臺(tái),各個(gè)業(yè)務(wù)線的各種定制需求不可能都滿足惧互。目前在系統(tǒng)架構(gòu)上已支持提供多個(gè)可插拔的Plugin服務(wù),在通用服務(wù)的基礎(chǔ)上實(shí)現(xiàn)定制的權(quán)限管控喇伯。后續(xù)將軍令將針對(duì)權(quán)限喊儡、審批、審計(jì)提供Plugin開(kāi)發(fā)規(guī)范稻据,支持接入的系統(tǒng)在現(xiàn)有的基礎(chǔ)上進(jìn)行定制開(kāi)發(fā)艾猜。

圖17 總體架構(gòu)與展望

如圖17所示:

  • 后續(xù)將對(duì)外提供統(tǒng)一的Plugin開(kāi)發(fā)規(guī)范买喧,支持各個(gè)接入方系統(tǒng)以Plugin服務(wù)的形式在平臺(tái)基礎(chǔ)服務(wù)之上進(jìn)行定制開(kāi)發(fā),以滿足各自的特殊權(quán)限管控要求匆赃。從而實(shí)現(xiàn)數(shù)據(jù)產(chǎn)品權(quán)限集中管控確保數(shù)據(jù)安全淤毛。
  • 把將軍令中的規(guī)則從現(xiàn)有的服務(wù)中分離出來(lái),抽象出一個(gè)通用的規(guī)則引擎服務(wù)算柳,實(shí)現(xiàn)規(guī)則靈活可配置低淡。

作者簡(jiǎn)介

  • 夷山,美團(tuán)點(diǎn)評(píng)技術(shù)專(zhuān)家瞬项,現(xiàn)任TechClub-Java俱樂(lè)部主席蔗蹋,2006年畢業(yè)于武漢大學(xué),先后就職于IBM囱淋、用友猪杭、風(fēng)行以及阿里。2014年加入美團(tuán)妥衣,長(zhǎng)期致力于BI工具皂吮、數(shù)據(jù)安全與數(shù)據(jù)質(zhì)量工作等方向。
  • 中華税手,美團(tuán)點(diǎn)評(píng)數(shù)據(jù)系統(tǒng)研發(fā)工程師蜂筹,2017年加入美團(tuán)點(diǎn)評(píng)數(shù)據(jù)中心,長(zhǎng)期從事于BI工具冈止、數(shù)據(jù)安全相關(guān)工作狂票。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市熙暴,隨后出現(xiàn)的幾起案子闺属,更是在濱河造成了極大的恐慌,老刑警劉巖周霉,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂器,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俱箱,警方通過(guò)查閱死者的電腦和手機(jī)国瓮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狞谱,“玉大人乃摹,你說(shuō)我怎么就攤上這事「疲” “怎么了孵睬?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)伶跷。 經(jīng)常有香客問(wèn)我掰读,道長(zhǎng)秘狞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任蹈集,我火速辦了婚禮烁试,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拢肆。我一直安慰自己减响,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布善榛。 她就那樣靜靜地躺著辩蛋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪移盆。 梳的紋絲不亂的頭發(fā)上悼院,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音咒循,去河邊找鬼据途。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叙甸,可吹牛的內(nèi)容都是我干的颖医。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼裆蒸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熔萧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起僚祷,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤佛致,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后辙谜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體俺榆,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年装哆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了罐脊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜕琴,死狀恐怖萍桌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凌简,我是刑警寧澤上炎,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站号醉,受9級(jí)特大地震影響反症,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜畔派,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一铅碍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧线椰,春花似錦胞谈、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至配紫,卻和暖如春径密,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躺孝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工享扔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人植袍。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓惧眠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親于个。 傳聞我的和親對(duì)象是個(gè)殘疾皇子氛魁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,844評(píng)論 0 5
  • 今年的4月20日乏苦,是二十四節(jié)氣中的谷雨 “雨生百谷株扛,清凈明潔”谷雨以此得名 作為春季的最后一個(gè)節(jié)氣 谷雨象征著暮春...
    簡(jiǎn)單的1212閱讀 405評(píng)論 0 0
  • 今天晚上,吃完晚飯后汇荐,我的好朋友同同來(lái)找我玩兒洞就,剛下樓,我就看見(jiàn)一輛很古老的三輪車(chē)掀淘,我問(wèn):“這是誰(shuí)的旬蟋?”同...
    屈炫宇閱讀 250評(píng)論 0 2
  • 十六號(hào)早上寫(xiě)十五號(hào)的日記 昨晚睡的實(shí)在太早 昨天早上開(kāi)始學(xué)習(xí) 雖然沒(méi)學(xué)多久 因?yàn)槿コ匈I(mǎi)筆耽誤了一些時(shí)間 后來(lái)同學(xué)...
    QICAN閱讀 176評(píng)論 0 0
  • 四酒后亂? 第二天一早革娄,張京京懶懶地在床上蠕動(dòng)倾贰,還大剌剌伸了個(gè)懶腰冕碟,沒(méi)有工作壓力就是好,連覺(jué)都睡這么香匆浙,正舒服地不...
    蘇小六Six閱讀 443評(píng)論 0 0