一文揭秘DDD到底解决了什么问题 世界微资讯
1000万云上开发者,全栈云产品0元试用:点击 免费试用 ,即刻开启云上实践之旅!
(资料图片仅供参考)
DDD作为架构设计思想帮助微服务控制规模复杂度,那它是怎么做到的呢?
作者 | 王轩宇(昭运)
来源 | 阿里开发者公众号
一、架构设计是为了解决系统复杂度
谈到架构,相信每个技术人员都是耳熟能详,但如果深入探讨一下,“为何要做架构设计?”或者“架构设计目的是什么?”类似的问题,大部分人可能从来没有思考过,或者即使有思考,也没有太明确可信的答案。
1.1 架构设计的误区
1.1.1 每个系统都要做架构设计/公司流程要求有架构设计
知其然更要知其所以然,不能仅仅因为其他公司都在做架构设计而盲目跟从,而应该深入理解架构设计的目的和必要性,根据实际需求进行合理的设计。如果架构师或设计师只是为了找点事做而进行架构设计,不仅会浪费时间和人力,还会拖慢整体开发进度。此外,其他公司的架构设计并不一定适用于当前项目,如果强行引入,很可能会导致架构水土不服、运行不流畅等问题,最终需要不断重构或者推倒重来。因此,架构师或设计师应该深刻理解为何要进行架构设计,避免生搬硬套,针对具体需求进行合理的设计,才能保证项目的顺利进行。
1.1.2 架构设计是为了追求高性能、高可用、可扩展性等单一目标
持有这类观点的人看似具备一定架构经验或基础,但实际上他们无论面对什么系统或业务,都会不顾一切地追求这些目标,导致架构设计变得复杂、项目实施时间拖延、团队内部不和等问题的出现。这些问题使得整个项目进展缓慢,系统稳定性差,出现问题难以解决,甚至加入新功能也需要花费大量时间。这些情况不是危言耸听,而是广泛出现的现象。因此,架构师或设计师必须深入了解系统和业务需求,根据实际需要合理设计,不可盲目追求“高XX”目标,才能确保项目开发进度和系统的稳定性。
1.2 架构设计的真正目的
整个软件技术发展的历史,其实就是一部与“复杂度”斗争的历史。架构也是为了应对软件系统复杂度而提出的一个解决方案,其主要目的是为了解决软件系统复杂度带来的问题。
那到底什么是复杂度呢?John Ousterhout教授在 A Philosophy of Software Design 书中提到,复杂度就是 任何使得软件难于理解和修改的因素 。
复杂的系统有一些非常明显的特征,John教授将它抽象为变更放大(Change amplification)、认知负荷(Cognitive load)与未知的未知(Unknown unknowns)这3类。
变更放大 (Change amplification)指得是看似简单的变更需要在许多不同地方进行代码修改。系统开发者之前没有及时重构代码,提取公共逻辑,而是省时间Ctrl-C,Ctrl-V式代码开发(这样做不会影响已有的稳定模块,不需要做比较多的回归测试,上线风险小)。当需求变化时,需要改动多处代码。
认知负荷 (Cognitive load)是指系统的学习与理解成本高,开发人员的研发效率大大降低。
未知的未知 (Unknown unknowns)是指不知道修改哪些代码才能使系统功能正确的运行,也不知道这行代码的改动是否会引发线上问题。这一项是复杂性中最糟糕的一个表现形式。
1.3 系统复杂度的六个来源及通用解法
本段参考 参考5
1.高性能 2.高可用 3.可扩展性 4.低成本 5.安全 6.规模
1.3.1 高性能
软件系统中高性能带来的复杂度主要体现在两方面:
1.一方面是单台计算机 内部 为了高性能带来的复杂度;
2.另一方面是多台计算机 集群 为了高性能带来的复杂度。
1.3.1.1 单机复杂度
计算机内部复杂度最关键的地方就是操作系统,计算机性能的发展本质上是由硬件发展驱动的,尤其是 CPU 的性能发展。而将硬件性能充分发挥出来的关键就是操作系统,所以操作系统本身也是随硬件的发展而发展的,操作系统是软件系统的运行环境,操作系统的复杂度直接决定了软件系统的复杂度。
操作系统和性能最相关的就是进程和线程。
进程:用进程来对应一个操作系统执行的任务,每个任务都有自己独立的内存空间,进程间互不相关,由操作系统来进行调度。 多进程:为了达到多进程并行运行的目的,采取了分时的方式,即把 CPU 的时间分成很多片段,每个片段只能执行某个进程中的指令。 进程间通信:为了解决进程在运行时相互通信的问题,人们设计了各种进程间通信,包括管道、消息队列、信号量、共享存储等。 多线程:多进程让多任务能够并行处理任务,但本身还有缺点,单个进程内部只能串行处理,而实际上很多进程内部的子任务并不要求是严格按照时间顺序来执行的,也需要并行处理。为了解决这个问题发明了线程,线程是进程内部的子任务,但这些子任务都共享同一份进程数据。为了保证数据的正确性,又发明了互斥锁机制。有了多线程后,操作系统调度的最小单位就变成了线程,而进程变成了操作系统分配资源的最小单位。操作系统发展到现在,如果要完成一个高性能的软件系统,需要考虑如多进程、多线程、进程间通信、多线程并发等技术点,而且这些技术并不是最新的就是最好的,也不是非此即彼的选择。
在做架构设计的时候,需要花费很大的精力来结合业务进行分析、判断、选择、组合,这个过程同样很复杂。例如,下面的系统都实现了高性能,但是内部实现差异很大:
Nginx 可以用多进程也可以用多线程 JBoss 采用的是多线程 Redis 采用的是单进程 Memcache 采用的是多线程1.3.1.2 集群复杂度
让多台机器配合起来达到高性能的目的,是一个复杂的任务,常见的方式有:
任务可以指完整的业务处理,也可以指某个具体的任务。
1.任务分配:每台机器都可以处理完整的业务任务,不同的任务分配到不同的机器上执行。
2.任务分解:业务越来越复杂,单台机器处理的性能会越来越低。为了能够继续提升性能,采用任务分解。
剩余60%,完整内容请点击下方链接查看:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
标签:
精彩推送
钱江水利: 钱江水利开发股份有限公司关于修订《公司董事、监事、高级管理人员持有公司股份及其变动管理制度》部分条款的公告 每日快播
钱江水利:钱江水利开发股份有限公司关于修订《公司董事、监事、高级管理人员持有公司股份及其变动管理制度
新闻快讯
新闻快讯
- 一文揭秘DDD到底解决了什么问题 世界微资讯
- 辽宁理工学院学费宿舍_辽宁理工学院学费_每日头条
- 四川:水权水价改革加速蹚路!已确立“3+8”试点示范框架
- 今热点:逆来顺受的比喻意思_逆来顺受的意思
- 毛囊炎症状图片展_毛囊炎症状图片|即时看
- 钱江水利: 钱江水利开发股份有限公司关于修订《公司董事、监事、高级管理人员持有公司股份及其变动管理制度》部分条款的公告 每日快播
- 阳角收边条_阳角
- 世界热文:V观财报|商誉减值测试是否合理?海王生物收问询函
- 正平股份:全资子公司中标3.45亿元项目
- 全球新资讯:跨境通:公司目前未开展互联网金融业务
- 公司问答 | 绿岛风:江苏绿岛风和河南绿岛风均已取得不动产权证(土地)以及施工许可证-全球通讯
- 世界简讯:“保姆式”服务擦亮玉门营商环境名片
- 每日热文:中消协发布汽车消费四大问题 点名电池故障、虚假宣传等投诉热点
- 一字多义的三年级句子(一字多义)
- 现在我变心了|微动态
- 万科将全额赎回“20万科05”债券|微资讯
- 牡丹花开引游人-今日热闻
- 忍者殺手人物介紹:破壞・鐵雄(バスター・テツオ)
- 有哪些古诗少 13首字最少的古诗_今日精选
- 四川华新现代职业学院官网快递_四川华新现代职业学院官网
- 考生忘带身份证 户籍民警“马上办”
- iPhone 14拉胯!苹果十年口碑崩了
- 世界信息:阿联酋旅游业强势复苏
- 热点聚焦:糖尿病的症状有哪些先兆_糖尿病的症状
- 星童进校园 融合进行时
- 天天快资讯:培养土帅,变“培养腐败”!国足之后,山东泰山开启“弃土迎洋”
- 星云有客与贴身衣物品牌有棵树达成合作
- 郑州高新区:商品房契税缴纳若符合条件 按契税总额20%给予补贴
- 环球头条:荆门公积金贷款额度最高是多少 规定如下
- 【播资讯】提前退休,你信吗?我不信
- 盛蕾调研挂钩联系重点产业 聚力突破关键技术引育创新人才 为新能源产业发展注入强劲动能|世界滚动
- 动态焦点:拜登将与麦卡锡在白宫会谈,美国两党角力“债务危机”
- 我国新型城际市域智能列车问世-每日快播
- 魔术师:湖人国度 今天是对身体和心理坚韧性的双重考验! 实时
- 今亮点!足协罚单:河南队外援舒尼奇被禁赛5场罚款5万,此前河南队曾申诉,国安提交情况说明盼重视暴力行为
- 资讯推荐:爱宝热敏打印机官网售后(爱宝热敏打印机官网)
- 广州:“疫苗防病”接受度增加,非免疫规划苗接种量已超免疫规划苗
- 株洲小伙捐献造血干细胞配型成功,手写信鼓励“亲”妹妹_视焦点讯
- 历史新高!全球央妈一季度继续抢黄金|当前速看
- 【独家】鲁智深倒拔垂杨柳故事分析评价_鲁智深倒拔垂杨柳故事
- 25斤梨才能熬出1斤的秋梨膏,每天喝一点,嗓子好舒服|前沿资讯
- 银蚕怎么养殖 多肉银蚕如何种植
- 环球观焦点:韩氏整形医院业务电话_韩式整形医院
- 硕世生物: 江苏硕世生物科技股份有限公司关于召开2022年度暨2023年第一季度业绩说明会的公告 世界时讯
- 环球看热讯:固镇县2023年幼儿园教师绘画基本功比赛活动在示范幼儿园瓦坊府邸分园举行
- 戈壁滩如何成为“聚宝盆”? 当前热闻
- 茂名深茂铁路投资有限公司_关于茂名深茂铁路投资有限公司的简介-新消息
- 詹超音:会讲究,能将就 焦点信息
- 白卡纸商品报价动态(2023-05-08)
- 2023云阳小升初怎么择校的?-当前通讯