itswuanran / enode

DDD 框架
MIT License
207 stars 55 forks source link

整体架构上手成本太高,如何更好的在项目中落地 #162

Closed itswuanran closed 1 year ago

itswuanran commented 1 year ago
  1. CommandBus完全分布式,事件处理和发送Command可能完全不是在同一台机器,当事件处理完成通知回来时没有好的交互机制
  2. 引入了数据库和分布式消息队列,提高了接入复杂度
  3. 引入topic过多,可缩减
Brother-Simon commented 1 year ago

楼主在使用约束中规定:“一个命令一次只能修改一个聚合根“ 实际上如果是多个聚合根的事务类型操作,例如用户余额下单,不仅仅要修改订单聚合根,还要修改用户余额、写入余额日志等,这些整体更可能在一个事务中,而且在一个事务中也不适合使用事件,即便有事件编排,如果后面的事件不成功,还要回滚前面的事件,因此我觉得命令更适合的是处理多个聚合根的事务操作,将一些列的事务操作看成一个整体,例如下单操作,整体可能会发出下单成功的事件

itswuanran commented 1 year ago

你描述的这种情况更适合使用sagas来处理吧,“用户余额下单”我理解是一次业务请求,这种情况可以拆分为多命令,分别处理不同的聚合根。“一个命令一次只能修改一个聚合根” 这个限制是为了让同一个聚合根的写操作尽量路由到同一台机器做的权衡

Brother-Simon commented 1 year ago

用saga肯定可以实现,而且明显的好处就是微服务啊,分布式也方便,缺点也是麻烦点。加qq群了 有时间一起讨论 但是qq群好像没加成功,满人了