版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、分布式微服務(wù)開發(fā)中的數(shù)據(jù)構(gòu)架設(shè)計陳偉榮=-刖言:分布式、微服務(wù)是當前非常流行的技術(shù)框架通過服務(wù)的小型化、 原子化以及分布式構(gòu)架的彈性伸縮和高可用性,可以實現(xiàn)業(yè)務(wù)之間的 松耦合、業(yè)務(wù)的靈活調(diào)整以及系統(tǒng)的高可用性。為業(yè)務(wù)創(chuàng)新和業(yè)務(wù)持 續(xù)提供了一個良好的基礎(chǔ)平臺。本文分享在這種技術(shù)構(gòu)架下的數(shù)據(jù)構(gòu) 架設(shè)計的設(shè)計想法和設(shè)計要點,本文包括下面若干內(nèi)容。分布式微服務(wù)構(gòu)架中的多層數(shù)據(jù)構(gòu)架設(shè)計數(shù)據(jù)架構(gòu)設(shè)計中的要點要點1:數(shù)據(jù)易用性要點2 :主、副數(shù)據(jù)及數(shù)據(jù)解耦要點3 :分庫分表要點4 :多源數(shù)據(jù)適配要點5 :多源數(shù)據(jù)緩存要點6 :數(shù)據(jù)集市為了容易理解,本文用一個簡化的銷售模型來闡述,如下圖。圖 一顯示了客戶、賣
2、家、商品、定價、訂單的關(guān)系(這里省略支付、物 流等其他元素B買、形成銷售訂單。根據(jù)微服務(wù)的理念設(shè)計為客戶服務(wù)、賣家服務(wù)、 商品服務(wù)、定價服務(wù)、訂單服務(wù),以及公共服務(wù)(比如認證、權(quán)限、 通知等),如圖二所示??蛻舴唵畏?wù)商品服務(wù)定價服務(wù)賣家服務(wù)公共服務(wù)、.客戶新增/修正客戶訂單做成/修正商品情報查詢定價規(guī)則制定/修正賣家新熠/修正認證服務(wù)客戶情報查詢客戶訂單查詢商品新增/修正.定價規(guī)則發(fā)布/廢棄賣家情報查詢權(quán)限管理客戶訂單取消商品上架/下架商品定價1 0 日志服務(wù)賣家訂單查詢商品賣家指定 0 LrL JJ1.K/圖二微服務(wù)功能一、分布式微服務(wù)構(gòu)架中的多層數(shù)據(jù)構(gòu)架設(shè)計分布式構(gòu)架一般把系統(tǒng)分為S
3、aas( Software-as-a-Service)、Paas(Platform-as-a-Service X Iaas( Infrastructure as a Service)三層。其中 Saas層負責對外部提供業(yè)務(wù)服務(wù),Paas層提供基礎(chǔ)應(yīng)用平臺,Iaas層 提供基礎(chǔ)設(shè)施。微服務(wù)垂直嵌入這三層服務(wù)之中,相互獨立。因此數(shù) 據(jù)構(gòu)架設(shè)計時需要考慮三層服務(wù)對數(shù)據(jù)的關(guān)注點,又要考慮微服務(wù)的獨立性。Logic Data(outer)!圖三分布式微服務(wù)構(gòu)架數(shù)據(jù)架構(gòu)的分層設(shè)計如圖三自下向上所示,Iaas層提供程序運行的物理基礎(chǔ)環(huán)境(這 邊涉及很多硬件網(wǎng)路內(nèi)容,在本文中省略。Pass層細分為三層: 基礎(chǔ)
4、服務(wù)層,主要負責數(shù)據(jù)存儲處理;事務(wù)框架層,主要負責微服務(wù) 的注冊調(diào)度管理、分布式事務(wù)處理;應(yīng)用服務(wù)層、主要實現(xiàn)各個微 服務(wù)的API ,供其它微服務(wù)直接調(diào)用以及Saas層的服務(wù)調(diào)用。Saas 服務(wù)就是公開對外提供的業(yè)務(wù)服務(wù)。數(shù)據(jù)架構(gòu)自下向上相應(yīng)的分為RawData層、LogicData( inner) 層和LogicData ( outer )層(Iaas中主要以基礎(chǔ)硬件環(huán)境為主,在 本文中省略* RawData層是基于數(shù)據(jù)庫、文件或者其他形式數(shù)據(jù)內(nèi) 容。LogicData ( inner)層是微服務(wù)API使用的邏輯數(shù)據(jù),比如客戶 數(shù)據(jù)、訂單數(shù)據(jù)等等。LogicData ( outer)層是對外
5、服務(wù)提供數(shù)據(jù), 比如客戶訂單數(shù)據(jù)。因此,我們的數(shù)據(jù)架構(gòu)的分層結(jié)果如圖四。強應(yīng)用Logic Data (inner)客戶影響度設(shè)計傾向圖四數(shù)據(jù)分層構(gòu)架除此之外,很多情報會以畫面或報表的形式展現(xiàn)出來。因此在 Logic Data(outer)之上,可以構(gòu)建InformationBlock(常用的信息塊)v 通過Viewtype (顯示模式)的設(shè)定后,最終View展現(xiàn)出來。如圖四所示,越靠近對外服務(wù)層,客戶對設(shè)計者的影響度越大, 越需要從使用性、易用性、適用性等考慮。反之,越遠離對外服務(wù)層, 設(shè)計上更關(guān)心數(shù)據(jù)的存儲。數(shù)據(jù)三層構(gòu)架的好處是實現(xiàn)數(shù)據(jù)從系統(tǒng)實現(xiàn)到業(yè)務(wù)實現(xiàn)的逐層 過渡,實現(xiàn)業(yè)務(wù)數(shù)據(jù)和系統(tǒng)數(shù)據(jù)
6、間的松耦合。同時實現(xiàn)業(yè)務(wù)的靈活擴 展和系統(tǒng)的靈活擴展。二、數(shù)據(jù)架構(gòu)設(shè)計中的要點上面講述了數(shù)據(jù)架構(gòu)的分層設(shè)計,下面講述數(shù)據(jù)構(gòu)架設(shè)計中的重要點。要點1:數(shù)據(jù)易用性數(shù)據(jù)無論用什么方式實現(xiàn),其最終目的都是為業(yè)務(wù)(或者是客戶)使用的。因此,在對外提供服務(wù)的時候,數(shù)據(jù)的易用性非常關(guān)鍵。圖五數(shù)據(jù)易用性如圖五所示,客戶信息在LogicData( inner)層中為了數(shù)據(jù)的 柔軟性和非冗余,把人員信息拆成若干子表來存儲。比如,人員地址 表可以無限多的存儲客戶地址信息。這樣的好處在于每次人員地址更 新時,不用直接更新人員地址,而是生成一個新的地址數(shù)據(jù),原有的 地址信息作為歷史數(shù)據(jù)得到保存,易于數(shù)據(jù)快速恢復(fù)和歷史信
7、息追蹤。 但在LogicData( outer)層提供外部數(shù)據(jù)的時候,首先考慮的是一次 性能提供足夠用的信息(畢竟查詢的操作大大高于修改的操作),減 少業(yè)務(wù)場景中不需要的信息。比如對一般客戶只提供三個常用地址的 時候,數(shù)據(jù)設(shè)計中地址1、地址2和地址3放在一張表中。要點2 :主、副數(shù)據(jù)及數(shù)據(jù)解耦每個微服務(wù)API的數(shù)據(jù)完全獨立是不太現(xiàn)實的比匕如訂單中需要 有商品、客戶(包括收貨者)、賣家以及價格等數(shù)據(jù)。如果這些數(shù)據(jù) 都在訂單服務(wù)API中管理,那么客戶情報的變更、價格調(diào)整等信息都 要同步給訂單API中數(shù)據(jù),數(shù)據(jù)的耦合度就會變得非常高。在數(shù)據(jù)設(shè) 計的時候,需要考慮降低數(shù)據(jù)間的相互依賴性。因此,首先需要
8、確定 每個微服務(wù)API的主數(shù)據(jù)和副數(shù)據(jù)。主數(shù)據(jù)指微服務(wù)API的核心數(shù) 據(jù),這種數(shù)據(jù)的增刪改主要集中在某個微服務(wù)API中,比如訂單服務(wù) API中的訂單數(shù)據(jù)。副數(shù)據(jù)指參照或者映射其他微服務(wù)API的數(shù)據(jù), 比如訂單服務(wù)API中的商品數(shù)據(jù)、價格數(shù)據(jù)等。其次,為了降低數(shù)據(jù) 之間的耦合度,用數(shù)據(jù)關(guān)聯(lián)表來表征數(shù)據(jù)間的關(guān)系。如果想去掉數(shù)據(jù) 間的關(guān)聯(lián)關(guān)系,直接去掉關(guān)聯(lián)表即可,對數(shù)據(jù)本身的沒有任何影響。 具體如圖六所示。圖六主、副數(shù)據(jù)及數(shù)據(jù)解耦要點3 :分庫分表隨著業(yè)務(wù)數(shù)據(jù)量不斷增加,單一數(shù)據(jù)庫或單一數(shù)據(jù)表中會積累大 量的數(shù)據(jù),比如訂單數(shù)據(jù),隨著時間推移和客戶數(shù)量的增加,產(chǎn)生的 訂單數(shù)據(jù)也會越來越多。當數(shù)據(jù)累積到
9、一定程度后,數(shù)據(jù)操作的性能 會大幅下降,也就是我們常說的數(shù)據(jù)庫“帶不動了”。所以,在數(shù)據(jù)構(gòu) 架設(shè)計階段就應(yīng)該考慮數(shù)據(jù)的分庫分表。如圖七所示,分庫:我們把 訂單數(shù)據(jù)分為當前數(shù)據(jù)應(yīng)用庫、歷史數(shù)據(jù)庫、歷史歸檔數(shù)據(jù)庫。當前 數(shù)據(jù)應(yīng)用庫用來支持新訂單的生成以及執(zhí)行中訂單的增刪改查。歷史 數(shù)據(jù)庫(這里舉例分為最近3個月和最近1年)當客戶想看過往訂單 的時候才使用。歷史歸檔數(shù)據(jù)(按年間歸檔)原則上不直接對客戶公 開,用于備查、統(tǒng)計分析。對于當前數(shù)據(jù)應(yīng)用庫,可以繼續(xù)再分庫, 按客戶號范圍來分庫。這樣每個數(shù)據(jù)庫的大小都能得到有效控制。分表:把一條信息分在存儲在兩張或多張表中。比如把訂單信息按基本信息和詳細信息分
10、表,就可以適用于訂單的基本信息查詢和訂單詳細 信息查詢??傊?,分庫分表的核心就是控制單一數(shù)據(jù)庫的負荷(數(shù)據(jù)量和數(shù)據(jù)信息量),通過多表多庫來應(yīng)對業(yè)務(wù)數(shù)據(jù)量的增長。分庫設(shè)計 分庫分表設(shè)計當前數(shù)據(jù)- - -一一 -執(zhí)行中的訂單當前數(shù)據(jù)歷史數(shù)據(jù)最近三個月商訂單客戶號訝0而0的訂單,表1訂單信息項目1-項目25訂單信息項目26-項目XXX歷史歸檔數(shù)據(jù)最近一年兩訂單訂單信息 項目1-項目25訂單信息 項目1-項目25訂單信息 項目26-項目XXX20001- 40000的訂單喜 )5號10001-20000的訂單圖七分表分庫要點4 :多源數(shù)據(jù)適配傳統(tǒng)的關(guān)系型數(shù)據(jù)庫之外,有多種多樣的數(shù)據(jù)源,比如圖像、聲 音
11、、視頻等多媒體數(shù)據(jù)文件或數(shù)據(jù)流,CSV、TXT、Doc、Excle、 PDF、XML等各種異構(gòu)數(shù)。這些數(shù)據(jù)都需要做相應(yīng)的處理,轉(zhuǎn)換成 可管理的數(shù)據(jù)信息。因此在數(shù)據(jù)架構(gòu)設(shè)計的時候,需要給不同性質(zhì)的 數(shù)據(jù)源配置相對應(yīng)的讀寫適配器,同時也需要有統(tǒng)一調(diào)度的地方,如圖八所示。圖八多源數(shù)據(jù)要點5 :多源數(shù)據(jù)緩存數(shù)據(jù)處理的性能除了處理邏輯的復(fù)雜度以外,還有很大一部分是 目標數(shù)據(jù)的操作時長(含對硬件磁盤設(shè)備的讀寫以及網(wǎng)絡(luò)的傳輸)。 網(wǎng)絡(luò)速度特別是光纖的使用后已經(jīng)大幅度提高,但機器磁盤的讀寫效 率并沒有顯著提高,因此減少磁盤讀寫是提高效率的一個重要途徑。 數(shù)據(jù)緩存就是把常用的數(shù)據(jù)(不會經(jīng)常更改的數(shù)據(jù))、最近使用數(shù)據(jù) 放到內(nèi)存中。這樣就可以大幅降低系統(tǒng)對硬件磁盤設(shè)備的操作開銷, 提高整個數(shù)據(jù)系統(tǒng)的性能。圖九數(shù)據(jù)緩存數(shù)據(jù)集市是一個很大的話題。當現(xiàn)有的數(shù)據(jù)不能簡單地通過幾個 表數(shù)據(jù)關(guān)聯(lián)以及簡單加工后就可以供業(yè)務(wù)使用的時候,就需要考慮構(gòu) 建數(shù)據(jù)集市。數(shù)據(jù)集市以數(shù)據(jù)運用的觀點來分析加工數(shù)據(jù),通過多源 數(shù)據(jù)的導(dǎo)入、清洗、加工、視圖做成等一系列的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 贛西科技職業(yè)學院《中學科技作品創(chuàng)作》2023-2024學年第一學期期末試卷
- 《護理管理制度培訓(xùn)》課件
- 勞動小學生課件六上浙教版
- 贛東學院《管理研究方法》2023-2024學年第一學期期末試卷
- 甘肅中醫(yī)藥大學《線描人物》2023-2024學年第一學期期末試卷
- 入礦培訓(xùn)課件
- 手指流血安全教育課件
- 安全理念課件標題撰寫
- 2021一建考試《建設(shè)工程項目管理》題庫試卷考點題庫及答案解析五
- 《企業(yè)并購管理》課件
- 慈溪市2024-2025學年四上數(shù)學期末教學質(zhì)量檢測模擬試題含解析
- 人教版小學一年級語文上冊全冊試卷全套含答案
- 2025年高考化學二、三輪復(fù)習策略講座
- 2022年高考數(shù)學試卷(上海)(秋考)(空白卷)
- 山東省濟南市語文小升初2024年模擬試題與參考答案
- 裝配式建筑復(fù)習試題及答案
- 空氣動力學仿真技術(shù):湍流模型:k-ε湍流模型原理與應(yīng)用
- EDI工程手冊中文
- 高中期末考試考風考紀及誠信教育
- 2025屆廣東省深圳市深圳外國語九年級物理第一學期期末經(jīng)典試題含解析
- 機械工程技術(shù)訓(xùn)練智慧樹知到期末考試答案章節(jié)答案2024年北京航空航天大學
評論
0/150
提交評論