九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
利用Spring Cloud實現(xiàn)微服務(wù)(三)

虛擬一家類似于XX打車的創(chuàng)業(yè)公司,要開展業(yè)務(wù),首先要開發(fā)一套網(wǎng)上叫車的系統(tǒng)。使用DDD的思想進行設(shè)計,并用SpringCloud框架進行開發(fā)。本節(jié)主要講如何通過業(yè)務(wù)領(lǐng)域驅(qū)動微服務(wù)的設(shè)計

公司名稱:打車易公司

公司愿景:讓天下沒有難打的車

一、業(yè)務(wù)領(lǐng)域

1. 業(yè)務(wù)子域

通過與公司核心團隊一番交談,我們了解到了主要需求是:客戶在網(wǎng)上叫車,系統(tǒng)自動分配離客戶最近的車。公司的核心競爭力是讓客戶以最快的速度叫到車。

和公司業(yè)務(wù)人員調(diào)研后,我們把公司業(yè)務(wù)分成三個子域:(用戶/司機)身份認證子領(lǐng)域、打車管理子域及報表子域。

打車管理子域是核心子域,我們以打車管理子域為例提取網(wǎng)上叫車的業(yè)務(wù)術(shù)語。

2. 業(yè)務(wù)術(shù)語表

業(yè)務(wù)規(guī)則:

打車:經(jīng)認證的用戶,打開叫車應(yīng)用,首先會定位,會在地圖上顯示附近的汽車。用戶發(fā)起叫車后,系統(tǒng)會自動通知離客戶最近的司機。用戶到達目的地后,系統(tǒng)自動從用戶關(guān)聯(lián)的賬戶扣款。

分配司機:系統(tǒng)為用戶分配一個最近的司機

計費:系統(tǒng)根據(jù)用戶所乘車的當前位置進行計費

扣款申請:用戶到達目的地后,系統(tǒng)根據(jù)路程的長遠向用戶的銀行賬戶發(fā)送扣款申請

打車管理子域依賴于身份認證子領(lǐng)域。只用經(jīng)過認證的用戶和司機才可以使用打車管理App,只有有足夠信用額度的用戶才可以打車。運營報表依賴于打車管理子領(lǐng)域,運營報表目前僅需要從打車管理里提取用戶的消費記錄,后面估計還會有其它需求。

角色和對象:

以打車管理限界上下文,分析參與者

在打車管理限界上下文里,有兩個明顯的角色:用戶和司機

用戶:在打車App有有效的賬號,有足夠的信用,叫車時要有精確的位置

司機:需要在打車App上注冊的,有有效的身份證明和駕駛證,無不良記錄。收到用戶的訂單后,將用戶從起始點安全地送到目的地。

細致分析后,我們發(fā)現(xiàn)還有一個隱式的對象:訂單。從業(yè)務(wù)來看,最終的目的還是為了多拿訂單,從這個角度來看,訂單是比比用戶和司機都重要的業(yè)務(wù)對象。

業(yè)務(wù)狀態(tài):

以打車管理限界上下文,分析業(yè)務(wù)狀態(tài)

用戶已叫車、用戶已上車、用戶已到達

二、模型空間

1. 戰(zhàn)略建模:

身份認證限界上下文、打車管理限界上下文、運營報表限界上下文



2. 戰(zhàn)術(shù)建模:

聚合:

訂單:是業(yè)務(wù)的真正關(guān)注點。訂單的根實體是訂單本身、本次計費總額,值對象為用戶的路途(起始位置、終止位置),關(guān)聯(lián)的實體包括用戶和司機。

用戶:對于用戶,在打車管理這個限界上下文里,我們只關(guān)注用戶的ID、銀行賬戶。根實體是用戶,關(guān)聯(lián)實體是銀行賬戶,包括賬號、銀行名稱。用戶會發(fā)起叫車的事件。

司機:在打車管理限界上下文里,我們關(guān)注的是司機的id,車牌號及司機當前位置。司機當前位置為值對象。用戶上車后,司機會發(fā)出用戶已上車的信號。到達終點時,司機會發(fā)起已到達的事件

領(lǐng)域服務(wù):

用戶定位服務(wù):用戶打開打車App時,會自動啟動定位服務(wù),并顯示周圍的司機

分配司機服務(wù):收到用戶叫車的消息后,為用戶分配一個最近的司機

計費管理服務(wù):用戶上車后,會實時搜集司機當前位置,并實時計費。當收到已到達終點的信號時,自動向用戶管理賬號發(fā)起扣款申請。

領(lǐng)域事件:

用戶已叫車事件:由用戶發(fā)起

用戶已上車事件:由司機發(fā)起

用戶已到達事件:由司機發(fā)起

三、微服務(wù)設(shè)計

1. 打車管理微服務(wù)的設(shè)計

微服務(wù)里的微并不是越小越好。微服務(wù)和分布式架構(gòu)是相關(guān)聯(lián)的。分布式架構(gòu)第一原則是能不做分布式就不要分布式,對于微服務(wù),是在能滿足業(yè)務(wù)需求的情況下,盡可能的不微。所以,對于新的需求,微服務(wù)的粒度可以和限界上下文一對一映射。當需求逐漸明晰了后,如果業(yè)務(wù)需要,微服務(wù)的最小粒度可以放到聚合的級別。

因為是創(chuàng)業(yè)公司,對很對需求了解都還不夠細,我們微服務(wù)粒度和限界上下文對應(yīng),現(xiàn)有的版本是V1.0


2. 聚合的設(shè)計


3. 領(lǐng)域服務(wù)的設(shè)計



4. 領(lǐng)域事件



5. 資源庫

定義訂單資源庫類OrderRepository。OrderReporsitory接口目前定義一種方法:findByUserID,返回和該ID相關(guān)聯(lián)的用戶的所有訂單

OrderRepository基于Repository接口。在Repository接口里定義三種方法:add、remove、update。用來增加、刪除、更新訂單


四、總結(jié)

DDD并不是一個新的架構(gòu)方法,它在微服務(wù)概念提出之前就已經(jīng)出現(xiàn)了。微服務(wù)概念提出后,大家都認為很好,但是對于如何設(shè)計微服務(wù)當時沒有給出一個很好的方法,后來,大家套用了DDD的理念來設(shè)計微服務(wù),發(fā)現(xiàn)這種方法是可行的,DDD的很多理念也和微服務(wù)是一致的。

本文中的舉例,對業(yè)務(wù)的理解不一定到位,我也相信會有更好的模型,領(lǐng)域事件的設(shè)計也偷懶了,請大家多多指教。

下一節(jié),我們會基于目前的設(shè)計,利用Spring Cloud框架開發(fā)叫車管理微服務(wù)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用 DDD 指導(dǎo)微服務(wù)拆分的邏輯
領(lǐng)域驅(qū)動設(shè)計在重構(gòu)業(yè)務(wù)系統(tǒng)中的實踐
使用DDD指導(dǎo)業(yè)務(wù)設(shè)計的一點思考
領(lǐng)域驅(qū)動設(shè)計(DDD)架構(gòu)演進和DDD的幾種典型架構(gòu)介紹(圖文詳解)
CQRS之旅——旅程2(分解領(lǐng)域)
插圖版:領(lǐng)域驅(qū)動的微服務(wù)架構(gòu)設(shè)計工作坊實施步驟
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服