热门关键词:CQ9电子  
微服务架构谈(4) plus:DDD 分层架构如何推动架构演进
2021-07-01 [42838]
本文摘要:

综合上面的解说相信你对 DDD 分层架构的优势有了一定相识。

综合上面的解说相信你对 DDD 分层架构的优势有了一定相识。这里我们不妨总结一下 DDD 分层架构最重要的两点优势。

这就是服务演进的历程。它们会随着业务和应用的生长而不停演进和沉淀。

最后你会发现你的领域模型变得越来越精炼微服务也越来越能够适应需求的快速变化了。

CQ9电子

在业务生长到一定阶段以后你发现微服务 3 的领域模型有了变化聚合 d 更适合放到微服务 1 的领域模型中。这时你就可以将聚合 d 的代码整体搬迁到微服务 1 中。

如果你在微服务设计时已经提前界说好了聚合之间的代码界限那这个代码搬迁的历程就不会太庞大也不会花太多时间。

图 10-3基于聚合的领域模型和微服务演进

我们再来看一下数据会见层的变化。这个变化主要发生在数据会见层和基础层之间。三层架构数据会见接纳 DAO 方式而 DDD 分层架构对数据库等基础资源会见时接纳了仓储设计模式领域层可以通过仓储接口会见基础资源的实现逻辑。

这样通过依赖倒置实现了各层对基础资源的解耦。原来三层架构的第三方工具包、驱动、Common、Utility、Config 等通用的、公共的基础资源统一放到了基础层。

我们看一下图 10-4。

领域层通常只提供一些原子服务好比领域服务 a、b、c。在服务设计时你并纷歧定能预测到这些服务会被几多个上层服务组装。但随着系统功效增强和外部接入越来越多应用服务会不停富厚。

有一天你发现领域服务 b 和 c 同时多次被应用层的应用服务 A 和 B 组装和挪用了在 A 和 B 内它们的业务执行逻辑也基本一致。这时你就可以思量将领域服务 b 和 c 的功效合并并将合并后的功效下沉到领域层演进为新的领域服务(b+c)。这样既淘汰了领域服务的数量又降低了上层应用服务组合和编排的庞大度。

微服务内服务的演进

最后我们发现在履历领域模型和微服务架构演进后微服务 1 已经从最初包罗聚合a、b、c演进为包罗聚合 b、c、d 的新微服务了而微服务 1 中的聚合 a 也已经独立成微服务 2 了。

包罗大量设计案例和代码实现手把手教你完成中台和微服务的协同设计。

《中台架构与实现:基于DDD 和微服务》

综合我的履历为了服务挪用的可治理我建议你接纳严格分层架构详细原因会在17.1 节详细先容。

三层架构如何演进到 DDD 分层架构

点击二维码购置↓

点击“阅读原文”相识更多数字化转型好书!

传统企业应用大多是单体架构而单体架构大多接纳三层架构。三层架构可以部门解决法式内代码间挪用庞大、代码职责不清的问题但这种分层是逻辑观点在物理上它仍然是中心化的集中式架构所以并不适合漫衍式微服务架构。

当你发现微服务 1 中聚合 a 的业务功效经常被高频会见以致拖累整个微服务 1 的性能时可以将聚合 a 的代码整体从微服务 1 中剥离出来独立为微服务 2。这样微服务 2 就可轻松应对高性能需求的业务场景了。

你可能还在想怎样实现聚合代码的快速重组呢?别急我会在第 14 章详细解说。

凭据耦合的精密水平可以分为两种架构模式:严格分层架构和松散分层架构。

DDD 分层架构也是微服务代码模型设计的主要参考依据。这种架构的分层既体现了微服务设计和架构演进的需求又很好地融入了领域模型的观点二者无缝联合相信能够给你的微服务设计带来纷歧样的体验。

严格分层架构是指任何层只能对位于其直接下方的层发生依赖而松散分层架构则允许某层与其任意下方的层发生依赖。

从图 10-1 我们可以看出优化后的 DDD 分层架构模型就属于严格分层架构而传统的 DDD 分层架构则属于松散分层架构。

业务和技术都不是一成稳定的领域模型也会随着业务生长不停变化和演进而领域模型的演进又会直接影响微服务的功效和界限。那如何实现领域模型和微服务的同步演进呢?下面我们将从两方面展开详细分析。

另外DDD 分层架构在用户接口层引入了 DTO 和 facade 接口可以给前端应用提供更灵活的数据和。


本文关键词:CQ9电子

本文来源:CQ9电子-www.ct-ais.com