架构设计之学新而知故

2024-05-13 07:52
文章标签 架构设计 之学 知故

本文主要是介绍架构设计之学新而知故,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

缘由

因为一些特殊的机缘,接触到洋葱架构等一些新架构设计概念。

尝试理解了一段时间,就想简单梳理下对它们的理解,以达到学新而知故 😃

信息增益

以前计算机专业并不设置通信领域的信息论的专业课程,但是,信息论的知识,应该是每个计算机从业者必知必会的概念。

区别信息之间的相同与差别,找出相同和不同,才能将掌握的信息量增加,以达到学新而知故!

  • 集中精神、注意观察、多试几次!

多试几次这步,信息量的增加是核心要诀,不然,都是无效的徒劳

所以,我总在信息量不增加的情况下,宁肯抱残守缺,并不选择继续重试,必须在找到新方法、新工具、新视角情况下,展开下一次尝试!

以前积累的架构设计

  • 分层设计
  • MVC设计

新学习的架构

  • 六边形架构
  • 洋葱架构

架构设计更高层面的哲学

  • 高内聚、低耦合
  • 单一职责
  • 依赖倒置,利用稳定接口将变化隔离
  • 稳定之锚必须存在,不然,无法建构一个系统,犹如在沙滩上搭建房子一般
  • 即使是依赖倒置这种场景,也有稳定的部分和变化的部分

分层设计

分层设计,层次之间拥有稳定的接口,但层次与层次之间在细节上无关的,代表着高内聚和低耦合、单一职责设计原则指导下的隔离。

其典型代表是网络协议栈

当协议栈处理网络层IP协议时,并不需要关心传输层TCP/UDP层的具体报文,而仅仅将其看成有效载荷,进行无差别的处理而已。

在这里插入图片描述

  • 另外,分层设计需要注意自举能力,通过功能分解,最终完成大功能的自举过程

MVC设计

MVC设计,按照职责进行分割系统,如以用户为视角,从前端View,到中台Controller,再到数据后端Model。

在这里插入图片描述
从结构上来看,与分层设计并无太大区别,但是,具有新意,在WEB系统场景,使得对于理解和实践分层设计很有帮助。

六边形架构和洋葱架构

两种新的架构,着重于依赖倒置原则,将依赖外悬进行适配,或分出不同的圈层进行隔离,以利于核心业务层的稳定。

如果说,分层设计对上层的依赖仅为有效载荷的假设,六边形架构和洋葱架构,则允许更多的假设,
但采用依赖倒置的办法,在外层圈层将这些依赖固化后,而在核心层可以进行无差别的接口假设进行执行。

六边形架构和洋葱架构,退化来看,也是一种分层设计,但还是有所着重。在适应的场景,用其进行建构更方便,用其长处!

当分层演变为多边形

在这里插入图片描述

当简单的分层设计出现比较严重跨层的耦合时,例如,途中红色的线,实际上出现多边形结构。

这时看是否设计上向六边形架构和洋葱架构靠拢。

六边形架构

在这里插入图片描述

洋葱架构

在这里插入图片描述

树形架构

以前刚毕业时,自己也曾有:在枝叶处确定细节,在主干区无差别地进行共同处理

此种无名气的设计思想,是否也可以理解为,在六边形架构和洋葱架构之外,另外一重诠释呢?

设计的稳定之锚

纵观各种架构设计,居于内层的领域模型,必须是稳定之锚。

然后,合理地区分变化和稳定的关系,迭代、重构开发,谁也无法提前理解全部,哈哈

这篇关于架构设计之学新而知故的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985110

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

[Linux Kernel Block Layer第一篇] block layer架构设计

目录 1. single queue架构 2. multi-queue架构(blk-mq)  3. 问题 随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然

系统架构师考试学习笔记第三篇——架构设计高级知识(19)嵌入式系统架构设计理论与实践

本章考点:         第19课时主要学习嵌入式系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分)。在历年考试中,案例题对该部分内容都有固定考查,综合知识选择题目中有固定分值的考查。本课时内容侧重于对知识点的记忆、理解和应用,按照以往的出题规律,嵌入式系统架构设计基础知识点基本来源于教材内。本课时知识架构如图19.1所示。 一、嵌入式系统发展历程

系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践

本章考点:         第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。         本课时知识架构如图18.1所示。 一、SOA的相关概念 (

首次揭秘,面向核心业务的全闪分布式存储架构设计与实践

当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 IO 性能也持续增长。 机械盘本身的 IOPS 一直徘徊在数百的级别,为了提高传统存储的性能,有些存储厂商加了缓存层,然而目前应用正由单一走向多元化,导致 IO 特征无法预测,缓存也难以发挥作用。 机械盘依赖盘片的旋转和机械臂的移动进行 IO,目前转速基本达到物理极限,所以机械盘性能一直徘徊不前,无法满足企业核心业务对于存储性能的要求

Apache Hudi 架构设计和基本概念

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! Apache Hudi是一个Data Lakes的开源方案,Hudi是Hadoop Updates and Incrementals的简写,它是由Uber开发并开源的Data Lakes解决方案。Hudi具有如下基本特性/能力

胖哥的经验 | 一款普适的实时数仓架构设计

什么?胖哥的经验,没错这是来自我们大数据成神之路小伙伴的经验。有什么问题,欢迎大家加群讨论,公众号回复【加群】。 一、实时数仓的架构背景 首先我们来聊一聊实时数仓是怎么诞生的,在离线数仓的时候数据是T+1的也就是隔一天才能看到昨天的数据,这种形式持续了很久的时间,但是有些场景真的只有实时的数据才有用武之地。例如推荐、风控、考核等。那么这个时候实时指标也就应运而生,在最开始的时候,采用flink\

「Apache Hudi系列」核心概念与架构设计总结

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 简介 Apache Hudi依赖 HDFS 做底层的存储,所以可以支撑非常大规模的数据存储。同时基于下面两个原语,Hudi可以解决流批一体的存储问题。 提供了在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语: Update/Delete 记录:Hudi 支持更新/删除记录,使用文件/记录级别索引,同时对写操作提供事务保

《论面向服务架构设计及其应用》写作框架,软考高级系统架构设计师

论文真题 面向服务架构(Service-Oriented Architecture, SOA) 是一种应用框架,将日常的业务应用划分为单独的业务功能服务和流程,通过采用良好定义的接口和标准协议将这些服务关联起来。通过实施基于SOA的系统架构,用户可以构建、部署和整合服务,无需依赖应用程序及其运行平台,从而提高业务流程的灵活性,帮助企业加快发展速度,降低企业开发成本,改善企业业务流程的组织和资

台球助教系统的架构设计与实现

随着科技的进步和人们对体育运动兴趣的增长,台球助教系统的需求日益凸显。台球助教系统不仅仅是一款软件,更是连接教练与学员之间的桥梁。台球助教系统旨在提供一个全面、专业的平台,帮助用户提高台球技艺,无论是初学者还是专业选手都能从中受益。 为了打造一个高效、稳定的台球助教系统,我们需要从架构设计上入手。       首先,台球助教系统的核心是用户界面友好,这意味着我们需要投入大量精力来设计一个