需求为一个简化的外卖平台,包括下订单、支付、取消、商家接单、准备、派送等功能。
采用领域驱动设计方法进行问题空间分析及解空间设计。划分顾客、商家、骑手、订单、通知五个限界上下文,每个上下文成为一个微服务。服务内部采用分层架构。服务之间以开放主机服务及事件驱动架构。数据库逻辑隔离,通过事件机制保证最终一致性。
识别业务服务规约中的名词
识别业务服务规约中的动词,判断动词对应的领域行为是否产生了过程数据,如果有,则将该过程数据识别为领域概念
针对有定语修饰的领域概念进行归纳和抽象
确定领域概念之间的关系
bounded-context
事件风暴方法分析命令、领域事件及聚合:
domain-event
events
mapping
package
以上两张图片引自 《解构领域驱动设计》
order
:订单consumer
:顾客merchant
:商家courier
:骑手notification
:通知com.neusoft.hackathon.order.north
:北向网关,包括本地和远程调用;相当于领域模型对其他限界上下文暴露的接口;前后端接口的适配也可以在这个包里完成,如 north.controller
com.neusoft.hackathon.order.domain
:领域模型,尽量保持稳定,需求不变领域模型尽量不变com.neusoft.hackathon.order.south
:南向网关,包括端口和适配器,用来调用其他限界上下文接口以及资源库