Domain driven design 学习DDD和CQRS
我是DDD和CQRS的新手,我正计划构建一个简单的应用程序来提高我的技能。 我计划做的是一个简单的出租车公司应用程序 要求:Domain driven design 学习DDD和CQRS,domain-driven-design,microservices,cqrs,bounded-contexts,Domain Driven Design,Microservices,Cqrs,Bounded Contexts,我是DDD和CQRS的新手,我正计划构建一个简单的应用程序来提高我的技能。 我计划做的是一个简单的出租车公司应用程序 要求: 客户点了一辆出租车 客户一次只能有一个订单 司机点菜 驱动程序一次只能有一个订单 驱动程序转到客户端 客户进入驾驶室 课程开始了 课程结束 客户购买,司机付款 等等 我可以看到可以有三个聚合:客户机、订单和驱动程序。我想把它们分成不同的微服务。你认为这是个好主意还是我应该从一个微服务开始 我现在专注于叫出租车。首先,我需要检查客户是否还没有指定课程,然后我可以创建订单。创
因此,首先关注领域,从Monoloyth开始。从微服务设计开始,即使以错误的方式,您也可以更好地了解所需的体系结构。因为微服务架构设计中的问题很快就会显现出来
-
< li> >客户端和驱动程序都是系统的用户,有一定的共性,可以将它们视为一个域,一个微服务。
- 考虑一个order manager微服务,通过其ID为客户机和驾驶员分配行程。订单数据库可能包括trips表,该表具有两个用于驱动程序id和客户端id的id键,以及一些用于不同状态的列。完成每次行程后,您可以将其从行程表中删除,并将其插入存档表中。另外,您可以将它留在那里,每天对表进行分区,以保持数据库的高性能
- 考虑一个用于保存付款和交易的会计微型服务。如果您选择在其他微服务中使用NoSql数据库,这是可以的,但是在事务中使用SQL数据库
- 您可能需要另一个用于报告和仪表板的微服务。在新数据库中镜像其他数据库以进行报告
- 您还需要一个API网关来将请求路由到微服务或进行身份验证
您的流程是一组事件。当然,您以后会扩展系统,可能会有一些长期运行的任务,最好有一个消息代理,并使用事件源之类的模式将您的流实现为事件/任务流。从微服务设计开始,即使以错误的方式,您也可以更好地了解所需的体系结构。因为微服务架构设计中的问题很快就会显现出来
-
< li> >客户端和驱动程序都是系统的用户,有一定的共性,可以将它们视为一个域,一个微服务。
- 考虑一个order manager微服务,通过其ID为客户机和驾驶员分配行程。订单数据库可能包括trips表,该表具有两个用于驱动程序id和客户端id的id键,以及一些用于不同状态的列。完成每次行程后,您可以将其从行程表中删除,并将其插入存档表中。另外,您可以将它留在那里,每天对表进行分区,以保持数据库的高性能
- 考虑一个用于保存付款和交易的会计微型服务。如果您选择在其他微服务中使用NoSql数据库,这是可以的,但是在事务中使用SQL数据库
- 您可能需要另一个用于报告和仪表板的微服务。在新数据库中镜像其他数据库以进行报告
- 您还需要一个API网关来将请求路由到微服务或进行身份验证