菱形对称架构的表达力

简介: 菱形对称架构的表达力

在14年读《实现领域驱动设计》接触到六边形架构,感觉很受启发,每个限界上下文就对应一个六边形架构:


image.png

后来又学习了《架构整洁之道》里面的整洁架构,和六边形结合起来看,明白了其精华在于让业务内核稳定,基础设施处于外围作为技术实现手段,去依赖业务内核,架构模型体现为从外向里依赖。


image.png


我弄懂后,开始在团队内部进行推广,但是发现大家不容易理解记忆,什么时候用防腐层ACL,什么时候用开放主机服务OHS,大家还是习惯于传统分层架构的从上向下的依赖方向,感觉费了很大的劲才让大家明白。落地过程中,因为理解偏差,时不时发生这样那样的问题,最常见的问题是让领域层依赖了基础设施。


后来接触了张逸老师提出的菱形对称架构(Rhomboid Symmetric Architecture),咋一看不太对,怎么把资源库放在了领域层(domain)之下的接口层(菱形对称架构称之为端口层),后来仔细琢磨,其实和六边形架构本质一样,也符合整洁架构的模型。


image.png


既然本质一样,干嘛提出菱形对称架构呢?


经历过前面落地的艰难,才能体会到菱形的价值。


原来这种架构模型更加符合程序员的思维习惯。大多数程序员习惯“从上向下的”传统分层架构,典型的分层:

展现层 -> 业务层 -> 持久层 -> 数据库层


菱形也是“从上向下的”。分析一下对于限界上下文的一次典型调用的运行时过程,从北向网关的远程服务层 -> 应用服务层 -> 领域层 -> 南向网关端口层 -> 适配器层持久化到数据库,非常容易理解。


端口层是接口Interface,领域层(实际上是领域层内的领域服务)依赖端口层,适配器层实现端口层,这里需要依赖倒置。


明显可以看出:南向网关需要依赖倒置,充当防腐层ACL,而北向网关是不需要依赖倒置的,就是开放主机服务OHS。这样的分解要比六边形架构更好理解。总感觉六边形有点过于抽象,理解有些烧脑。


实践中,程序员们对南向网关作为防腐层ACL容易理解接受,当把资源库Repository从domain层转移到端口层和其它端口元素统一管理后,立刻感觉到整个代码结构非常的整齐划一、清晰易读,让DDD的理念落地的简单自然。


菱形对称架构典型(推荐)的代码模型如下图所示:


image.png


这样的代码结构是非常清晰的,只要团队遵循这一模式,就能形成一致的代码模型,便于理解和沟通。

相关文章
|
机器学习/深度学习 自然语言处理 物联网
NeurIPS 2024 Oral:小参数,大作为!揭秘非对称 LoRA 架构的高效性能
近期,一篇题为《\model~: 非对称LoRA架构实现高效微调》的论文被NeurIPS 2024接收为口头报告,该研究提出了一种创新的非对称LoRA架构,旨在解决大型语言模型(LLMs)在保持高性能的同时提高训练和部署效率的问题。通过引入共享A矩阵和多个B矩阵,\model~不仅提高了参数效率,还在多个数据集上展示了超越现有PEFT方法的性能,尤其是在多任务域和复杂数据集上的表现尤为突出。此架构还有效减少了训练能耗和延迟,为LLMs的高效应用提供了新思路。
360 4
|
JSON 前端开发 测试技术
菱形对称架构
菱形对称架构
菱形对称架构
|
3月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
6月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
317 0
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
366 3
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1177 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
9月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
490 12