领域驱动设计之聚合与聚合根实例二

这个实例主要说明一个论坛发帖与回复的场景。

一般大家的理解是回复必须依赖与帖子,并且回复是没有单独存在的必要,并且帖子与回复通常具有一些不变性约束规则,比如发布一个回复,在帖子中同时增加一次回复次数;回复过的帖子就不再允许删除等,所以一般理解是帖子与回复属于一个聚合,帖子是聚合根,回复是聚合中的一个实体。如下:

虽然满足了聚合与聚合根的划分的基本要求,但是还应该从两个方面来考虑:

1.性能:如果帖子与回复同属一个聚合,如果要对一个帖子添加回复,必须从聚合根帖子进行操作,并且同时保存整个聚合。如果一个帖子被多个人回复,那就存在并发的问题,性能会比较差。

2.场景:发布帖子与发布回复应该是两个独立的场景,也就是发布一个帖子后可以没有回复,回复可以是后期任意时刻的一个操作。

鉴于此,建议的聚合与聚合根的划分如下:

为了保证规则的一致性,可以通过领域服务或应用层服务协调来保证。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linyb极客之路

微服务之网关入门

2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

20720
来自专栏木子昭的博客

python脚本批量修改文件名前言1.批量添加前缀功能2.(扩展)添加移除前缀功能:

我曾以为,写脚本是很难的,直到我遇到了Python 前言 随着国内版权意识的跟进,很多影视音乐资源开始收费,而且度盘又经常随意封杀各种资源,所以,为了保护资源...

515100
来自专栏IT笔记

支付宝扫码支付和微信扫码支付业务场景及问题记录

这段时间一直在捣鼓扫码支付的功能,项目中使用了支付宝扫码支付和微信扫码支付。中间遇到了很多坑,由于我们系统是分别支持这两种方式的,并且可以随时切换支付方式,特此...

40670
来自专栏架构师之路

DNS在架构设计中的巧用

一、缘起 一个http请求从客户端到服务端,整个执行流程是怎么样的呢? ? 一个典型流程如上: (1)客户端通过域名daojia.com请求dns-serve...

41140
来自专栏企鹅号快讯

浅谈几种SLB技术的实现

今天小普和大家分享下,在最近的学习过程中,关于几个负载均衡技术的理解,以及几个实现的原理和关键点,希望对各位读者朋友有收获。 1 http重定向协议实现负载均衡...

1.3K50
来自专栏张伟博客

windows 内外网都能ping通却无法上网的解决方法

20160
来自专栏性能与架构

Redis 应用案例 - 在问题中不断成长

本文翻译整理自 Andy Grunwald 发布的一篇文章,写的是作者所在公司使用 Redis 时遇到的问题,以及处理过程,在不断解决调整中积累了很多 Redi...

39890
来自专栏Java技术栈

推荐一个实用的 .gitignore 文件

常用的版本控制工具,不管是使用 git 还是 svn,我们都需要排除一些与程序代码无关的文件,如像 eclipse/ intellij idea 等 IDE 工...

13610
来自专栏服务端技术杂谈

进程内缓存使用技术方案

进程内缓存可以采用带锁的Map或者第三方库,或者自己实现进程内缓存管理,如ConcurrentHashMap,ThreadLocal,guava cache等。

27330
来自专栏hotqin888的专栏

onlyoffice document server实时文档协作的部署与开发细节

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

15610

扫码关注云+社区

领取腾讯云代金券