日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

發(fā)布時(shí)間:2023/12/13 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java生鮮電商平臺(tái)-SpringCloud微服務(wù)開(kāi)發(fā)中的數(shù)據(jù)架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)精講

?

Java生鮮電商平臺(tái):? ?微服務(wù)是當(dāng)前非常流行的技術(shù)框架,通過(guò)服務(wù)的小型化、原子化以及分布式架構(gòu)的彈性伸縮和高可用性,可以實(shí)現(xiàn)業(yè)務(wù)之間的松耦合、業(yè)務(wù)的靈活調(diào)整組合以及系統(tǒng)的高可用性。為業(yè)務(wù)創(chuàng)新和業(yè)務(wù)持續(xù)提供了一個(gè)良好的基礎(chǔ)平臺(tái)。本文包括下面若干內(nèi)容。

1.微服務(wù)技術(shù)框架中的多層數(shù)據(jù)架構(gòu)設(shè)計(jì)

2.數(shù)據(jù)架構(gòu)設(shè)計(jì)中的要點(diǎn)

3.要點(diǎn)1:數(shù)據(jù)易用性

4.要點(diǎn)2:主、副數(shù)據(jù)及數(shù)據(jù)解耦

5.要點(diǎn)3:分庫(kù)分表

6.要點(diǎn)4:多源數(shù)據(jù)適配

7.要點(diǎn)5:多源數(shù)據(jù)緩存

8.要點(diǎn)6:數(shù)據(jù)集市

為了容易理解,本文用一個(gè)簡(jiǎn)化的銷售模型來(lái)闡述,如下圖。圖1顯示了客戶、賣家、商品、定價(jià)、訂單的關(guān)系(這里省略支付、物流等其他元素)。

圖1 銷售模型

在這個(gè)銷售模型中,賣家提供商品、制定價(jià)格,客戶選擇產(chǎn)品購(gòu)買、形成銷售訂單。根據(jù)微服務(wù)的理念設(shè)計(jì),可以劃分為客戶服務(wù)、賣家服務(wù)、商品服務(wù)、定價(jià)服務(wù)、訂單服務(wù),以及公共服務(wù)(比如認(rèn)證、權(quán)限、通知等),如圖2所示。

圖2 微服務(wù)功能

微服務(wù)架構(gòu)中的多層數(shù)據(jù)架構(gòu)設(shè)計(jì)

分布式架構(gòu)一般把系統(tǒng)分為 Saas(Software-as-a-Service)、Paas(Platform-as-a-Service)、Iaas(Infrastructure as a Service )三層。其中 Saas 層負(fù)責(zé)對(duì)外部提供業(yè)務(wù)服務(wù),Paas 層提供基礎(chǔ)應(yīng)用平臺(tái),Iaas 層提供基礎(chǔ)設(shè)施。微服務(wù)垂直嵌入這三層服務(wù)之中,相互獨(dú)立。因此數(shù)據(jù)架構(gòu)設(shè)計(jì)時(shí)需要考慮三層服務(wù)對(duì)數(shù)據(jù)的關(guān)注點(diǎn),又要考慮微服務(wù)的獨(dú)立性。

數(shù)據(jù)架構(gòu)的分層設(shè)計(jì)

圖3 微服務(wù)技術(shù)框架

如圖3所示,Iaas 層提供程序運(yùn)行的物理基礎(chǔ)環(huán)境(這邊涉及很多硬件·網(wǎng)絡(luò)內(nèi)容,在本文中省略)。Pass 層細(xì)分為三層,基礎(chǔ)服務(wù)層,主要負(fù)責(zé)數(shù)據(jù)存儲(chǔ)處理;事務(wù)框架層,主要負(fù)責(zé)微服務(wù)的注冊(cè)·調(diào)度管理、分布式事務(wù)處理;應(yīng)用服務(wù)層、主要實(shí)現(xiàn)各個(gè)微服務(wù)的 API,供其它微服務(wù)直接調(diào)用以及 Saas 層的服務(wù)調(diào)用。

Saas 服務(wù)就是公開(kāi)對(duì)外提供的業(yè)務(wù)服務(wù).

數(shù)據(jù)架構(gòu)自下向上相應(yīng)的分為 Raw Data 層、Logic Data(inner)層和 Logic Data(outer)層(Iaas 中主要以基礎(chǔ)硬件環(huán)境為主,在本文中省略)。

Raw Data 層是基于數(shù)據(jù)庫(kù)、文件或者其他形式數(shù)據(jù)內(nèi)容。Logic Data(inner)層是微服務(wù) API 使用的邏輯數(shù)據(jù),比如客戶數(shù)據(jù)、訂單數(shù)據(jù)等等。

Logic Data(outer)層是對(duì)外服務(wù)提供數(shù)據(jù),比如客戶訂單數(shù)據(jù)。因此,我們的數(shù)據(jù)架構(gòu)的分層結(jié)果如圖4所示。

圖4 數(shù)據(jù)分層架構(gòu)

除此之外,很多情報(bào)會(huì)以畫面或報(bào)表的形式展現(xiàn)出來(lái)。因此在 Logic Data(outer) 之上,可以構(gòu)建 Information Block(常用的信息塊)、通過(guò) View type(顯示模式)的設(shè)定后,最終 View 展現(xiàn)出來(lái)。

如圖4所示,越靠近對(duì)外服務(wù)層,客戶對(duì)設(shè)計(jì)者的影響度越大,越需要從使用性、易用性、適用性等考慮。反之,越遠(yuǎn)離對(duì)外服務(wù)層,設(shè)計(jì)上更關(guān)心數(shù)據(jù)的存儲(chǔ)。

數(shù)據(jù)三層架構(gòu)的好處是實(shí)現(xiàn)數(shù)據(jù)從系統(tǒng)實(shí)現(xiàn)到業(yè)務(wù)實(shí)現(xiàn)的逐層過(guò)渡,實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)和系統(tǒng)數(shù)據(jù)間的松耦合。同時(shí)實(shí)現(xiàn)業(yè)務(wù)的靈活擴(kuò)展和系統(tǒng)的靈活擴(kuò)展

數(shù)據(jù)架構(gòu)設(shè)計(jì)中的要點(diǎn)

上面講述了數(shù)據(jù)架構(gòu)的分層設(shè)計(jì),下面講述數(shù)據(jù)架構(gòu)設(shè)計(jì)中的要點(diǎn)。

要點(diǎn)1:數(shù)據(jù)易用性

數(shù)據(jù)無(wú)論用什么方式實(shí)現(xiàn),其最終目的都是為業(yè)務(wù)(或者是客戶)使用的。因此,在對(duì)外提供服務(wù)的時(shí)候,數(shù)據(jù)的易用性非常關(guān)鍵。

圖5 數(shù)據(jù)易用性

如圖5所示,客戶信息在 Logic Data(inner) 層中為了數(shù)據(jù)的柔軟性和非冗余,把人員信息拆成若干子表來(lái)存儲(chǔ)。比如,人員地址表可以無(wú)限多的存儲(chǔ)客戶地址信息。這樣的好處在于每次人員地址更新時(shí),不用直接更新人員地址,而是生成一個(gè)新的地址數(shù)據(jù),原有的地址信息作為歷史數(shù)據(jù)得到保存,易于數(shù)據(jù)快速恢復(fù)和歷史信息追蹤。

但在 Logic Data(outer)層提供外部數(shù)據(jù)的時(shí)候,首先考慮的是一次性能提供足夠用的信息(畢竟查詢的操作大大高于修改的操作),減少業(yè)務(wù)場(chǎng)景中不需要的信息。比如對(duì)一般客戶只提供三個(gè)常用地址的時(shí)候,數(shù)據(jù)設(shè)計(jì)中地址1、地址2和地址3放在一張表中。

要點(diǎn)2:主、副數(shù)據(jù)及數(shù)據(jù)解耦

每個(gè)微服務(wù) API 的數(shù)據(jù)完全獨(dú)立是不太現(xiàn)實(shí)的,比如訂單中需要有商品、客戶(包括收貨者)、賣家以及價(jià)格等數(shù)據(jù)。如果這些數(shù)據(jù)都在訂單服務(wù) API 中管理,那么客戶情報(bào)的變更、價(jià)格調(diào)整等信息都要同步給訂單 API 中數(shù)據(jù),數(shù)據(jù)的耦合度就會(huì)變得非常高。

在數(shù)據(jù)設(shè)計(jì)的時(shí)候,需要考慮降低數(shù)據(jù)間的相互依賴性。因此,首先需要確定每個(gè)微服務(wù) API 的主數(shù)據(jù)和副數(shù)據(jù)。主數(shù)據(jù)指微服務(wù) API 的核心數(shù)據(jù),這種數(shù)據(jù)的增刪改主要集中在某個(gè)微服務(wù) API 中,比如訂單服務(wù) API 中的訂單數(shù)據(jù)。副數(shù)據(jù)指參照或者映射其他微服務(wù) API 的數(shù)據(jù),比如訂單服務(wù) API 中的商品數(shù)據(jù)、價(jià)格數(shù)據(jù)等。

其次,為了降低數(shù)據(jù)之間的耦合度,用數(shù)據(jù)關(guān)聯(lián)表來(lái)表征數(shù)據(jù)間的關(guān)系。如果想去掉數(shù)據(jù)間的關(guān)聯(lián)關(guān)系,直接去掉關(guān)聯(lián)表即可,對(duì)數(shù)據(jù)本身的沒(méi)有任何影響。具體如圖6所示。

圖6 主、副數(shù)據(jù)及數(shù)據(jù)解耦

要點(diǎn)3:分庫(kù)分表

隨著業(yè)務(wù)數(shù)據(jù)量不斷增加,單一數(shù)據(jù)庫(kù)或單一數(shù)據(jù)表中會(huì)積累大量的數(shù)據(jù),比如訂單數(shù)據(jù),隨著時(shí)間推移和客戶數(shù)量的增加,產(chǎn)生的訂單數(shù)據(jù)也會(huì)越來(lái)越多。當(dāng)數(shù)據(jù)累積到一定程度后,數(shù)據(jù)操作的性能會(huì)大幅下降,也就是我們常說(shuō)的數(shù)據(jù)庫(kù)“帶不動(dòng)了”。所以,在數(shù)據(jù)架構(gòu)設(shè)計(jì)階段就應(yīng)該考慮數(shù)據(jù)的分庫(kù)分表。

如圖7所示,分庫(kù),即我們把訂單數(shù)據(jù)分為當(dāng)前數(shù)據(jù)應(yīng)用庫(kù)、歷史數(shù)據(jù)庫(kù)、歷史歸檔數(shù)據(jù)庫(kù)。當(dāng)前數(shù)據(jù)應(yīng)用庫(kù)用來(lái)支持新訂單的生成以及執(zhí)行中訂單的增刪改查。歷史數(shù)據(jù)庫(kù)(這里舉例分為最近3個(gè)月和最近1年)當(dāng)客戶想看過(guò)往訂單的時(shí)候才使用。歷史歸檔數(shù)據(jù)(按年間歸檔)原則上不直接對(duì)客戶公開(kāi),用于備查、統(tǒng)計(jì)分析。

對(duì)于當(dāng)前數(shù)據(jù)應(yīng)用庫(kù),可以繼續(xù)再分庫(kù),按客戶號(hào)范圍來(lái)分庫(kù)。這樣每個(gè)數(shù)據(jù)庫(kù)的大小都能得到有效控制。分表,即把一條信息分別存儲(chǔ)在兩張或多張表中。比如把訂單信息按基本信息和詳細(xì)信息分表,就可以適用于訂單的基本信息查詢和訂單詳細(xì)信息查詢。總之,分庫(kù)分表的核心就是控制單一數(shù)據(jù)庫(kù)的負(fù)荷(數(shù)據(jù)量和數(shù)據(jù)信息量),通過(guò)多表多庫(kù)來(lái)應(yīng)對(duì)業(yè)務(wù)數(shù)據(jù)量的增長(zhǎng)。

圖7 分表分庫(kù)

要點(diǎn)4:多源數(shù)據(jù)適配

傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)之外,有多種多樣的數(shù)據(jù)源,比如圖像、聲音、視頻等多媒體數(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è)計(jì)的時(shí)候,需要給不同性質(zhì)的數(shù)據(jù)源配置相對(duì)應(yīng)的讀寫適配器,同時(shí)也需要有統(tǒng)一調(diào)度的地方,如圖8所示。

圖8 多源數(shù)據(jù)適配

要點(diǎn)5:多源數(shù)據(jù)緩存

數(shù)據(jù)處理的性能除了處理邏輯的復(fù)雜度以外,還有很大一部分是目標(biāo)數(shù)據(jù)的操作時(shí)長(zhǎng)(含對(duì)硬件磁盤設(shè)備的讀寫以及網(wǎng)絡(luò)的傳輸)。網(wǎng)絡(luò)速度特別是光纖的使用后已經(jīng)大幅度提高,但機(jī)器磁盤的讀寫效率并沒(méi)有顯著提高,因此減少磁盤讀寫是提高效率的一個(gè)重要途徑。

數(shù)據(jù)緩存就是把常用的數(shù)據(jù)(不會(huì)經(jīng)常更改的數(shù)據(jù))、最近使用數(shù)據(jù)放到內(nèi)存中。這樣就可以大幅降低系統(tǒng)對(duì)硬件磁盤設(shè)備的操作開(kāi)銷,提高整個(gè)數(shù)據(jù)系統(tǒng)的性能,如圖9所示。

圖9 數(shù)據(jù)緩存

要點(diǎn)6:數(shù)據(jù)集市

數(shù)據(jù)集市是一個(gè)很大的話題。當(dāng)現(xiàn)有的數(shù)據(jù)不能簡(jiǎn)單地通過(guò)幾個(gè)表數(shù)據(jù)關(guān)聯(lián)以及簡(jiǎn)單加工后就可以供業(yè)務(wù)使用的時(shí)候,就需要考慮構(gòu)建數(shù)據(jù)集市。數(shù)據(jù)集市以數(shù)據(jù)運(yùn)用的觀點(diǎn)來(lái)分析加工數(shù)據(jù),通過(guò)多源數(shù)據(jù)的導(dǎo)入、清洗、加工、視圖做成等一系列的數(shù)據(jù)操作后,為業(yè)務(wù)提供可用的、穩(wěn)定的數(shù)據(jù)源。

例如,對(duì)銷售分析中、什么樣的客戶喜歡什么樣的商品、價(jià)格對(duì)銷售金額的影響、銷售金額跟地區(qū)日期的關(guān)聯(lián)關(guān)系等多維度分析,就要用數(shù)據(jù)集市的概念,如圖10所示。

圖10 數(shù)據(jù)集市

數(shù)據(jù)承載著信息,好的數(shù)據(jù)架構(gòu)設(shè)計(jì)會(huì)使業(yè)務(wù)系統(tǒng)變得更加流暢、更加容易理解和維護(hù)。本文只是總結(jié)一些在實(shí)際工程中的體會(huì),供大家分享。如果有不足之處、也請(qǐng)大家補(bǔ)充、賜教。

如果有不太懂的地方,請(qǐng)加QQ群:793305035



轉(zhuǎn)載于:https://www.cnblogs.com/jurendage/p/11322065.html

總結(jié)

以上是生活随笔為你收集整理的Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。