架构训练营笔记系列:面向复杂度的设计

news2024/11/18 7:40:30

面向复杂度的设计

  DDD 是可扩展架构的设计技巧,不是架构方法论。不关注高性能、高可靠。

架构本质:为了降低软件系统复杂度

怎么做架构设计 ?思路是分析系统需求找到系统复杂的地方,然后设计方案。

复杂度相关有哪些?高性能、高可用,可扩展、安全、成本。。。

降低软件复杂度方式?分库分表、缓存、集群、分片、微服务、DDD。。。

通常流程 

如何做好架构设计?

架构设计三原则

合适原则: 

   合适由于业内领先 。

    资源:将军不打无准备之仗

   时间:罗马不是一天建成的

   业务:业务发展带来技术发展

简单原则:

简单优于复杂,相关:奥卡姆剃刀:若无必要,勿增实体

  可靠性 :越复杂越不可靠

  可扩展:越复杂越难以扩展

  故障处理效率:越复杂越难处理。

演化原则:

 演化由于一步到位,演进目的:传承基因,适应变化。

创造:满足 当下业务需求

迭代优化:修改去留

重构:量变引起质变

架构设计原则 应用:

  1设计出来的架构要满足当时的业务需要,符合团队和技术的能力水平(合适原则)

  2先按照简单的方式来设计架构,然后不断地在实际应用过程中迭代优化(简单原则)

  3 当业务发生变化时,架构要扩展、重构,甚至重写(演化原则)

常见判断维度

   业务

1.业务当前的量级 2.业务发展速度 3.业务的发展形态

 团队:

  1.团队规模 2.团队能力水平  3.投入的资源

技术:

  1.已有技术体系2.当前技术能力3.技术成熟度

    小结:

    李老师还把经历的一些失败的架构案例,做了分析。不务实,各种 高大上目标,难以落地,或者坑太多填不过来。实际上复杂业务系统的重构困难重重,不是每次都能成功。牵扯的相关方多,沟通困难,要把相关的需求方,产品,研发等反复沟通。总有些历史逻辑无人知晓,评审发现不了,开发才发现。

    结合郭东白老师的课,有些系统边界不清晰,比如有的订单冗余了非订单关注的太多属性,其他系统全靠从订单获取,那么你在维护订单的数据一致性成本就很高,看着没啥用,那你一改别的系统就出问题。还要现实考虑这种重构与业务需求优先级,平衡这个关系。所以老师这些列举的考量的点,真正落地还得面对现实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity的PostProcessing后处理使用介绍

大家好,我是阿赵。 上一篇文章说了Unity的PostProcessing后处理有bug并提供了解决办法,这里顺便介绍一下PostProcessing的用法。 一、安装 打开PackageManager,然后搜索Post,应该就能看到左边出现搜索结果,选择&…

一个人的面相能直接反映其个性与命运

中国传统文化,博大精深,面相学只是其中一种。 在古代,面相学却是一门非常实用的学科, 尤其是经过了一代代人的发展,面相学得到了完善之后,他的准确性往往会超过现代人的预料。相由心生,面相是对…

用户端App 测试方法与技术

目录: app测试体系app项目测试流程app结构讲解app测试设计思路app常见bug解析常用模拟器使用android开发者选项安装mumu模拟器adb命令介绍adb环境搭建与配置adb与设备交互adb安装卸载应用adb命令启动页面adb命令清缓存adb文件传输adb日志操作adb命令操作Android设备…

DRF+Vue.JS前后端分离项目实例(下) --- Vue.js 前端实现代码

本文上篇请 点击阅读 1. 需求说明 本文以学生信息查询功能为例,采用前后端分离架构,后端提供RESTFul 接口,前端代码用Vue.js Bottstrap实现。 1.1 本例要求提供如下查询功能: 列表查询、单条查询 添加学生信息 更改学生信息 删…

在线试用Stable Diffusion生成可爱的图片

文章目录 一、 Stable Diffusion 模型在线使用地址:二、模型相关版本和参数配置:三、图片生成提示词与反向提示词:提示词1提示词2提示词3提示词4提示词5 一、 Stable Diffusion 模型在线使用地址: https://inscode.csdn.net/insc…

python 读取npy文件

import numpy as np test np.load("I:/软件/mask.npy") print(test) 如下图所示:

Web3 智能合约通过数组方式存储更多学生数据

之前的文章 Web3 在Truffle项目中编写出自己的第一个solidity智能合约带大家写了一个相对捡漏的智能合约 这样 每次 我们set 后 都会将原来的数据覆盖掉了 那么 有些人可能会想 那我们弄个数组 将新的数据全部加到数组里不就行了吗? 这个想法其实就很不错 我们可以…

数据结构与算法--javascript(持续更新中...)

一. 概论 1. 数据结构 队列:一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。(例如:去食堂排队打饭,排在前…

JsonView下载安装

文章目录 一、JsonView概述二、JsonView下载三、JsonView安装四、JsonView测试 一、JsonView概述 SONView是一款非常好用的Json格式查看器。在日常开发调试中经常会遇到Json格式的数据需要解析阅读,但Json格式数据阅读性极差,JSONView可以帮我们解决Jso…

基于协同过滤算法的智能推荐点餐系统小程序/基于微信小程序的点餐系统

摘 要 在社会的发展和科学技术的进步,现在我们所生活的世纪是一个集信息高度数字化,网络化,信息化的,以网络为核心的社会。随着移动互联网的飞速发展,微信客户端的应用也逐渐广泛起来。与此同时,我国每个人…

上手CUDA编程

上手CUDA编程 文章目录 上手CUDA编程矩阵加法例子编译 查看本机GPU信息内存管理函数专门二维数组拷贝函数 Reference>>>>> 欢迎关注公众号【三戒纪元】 <<<<< 矩阵加法例子 编写 CUDA C 程序时&#xff0c; 要将文件命名为 *.cu&#xff0c;cu文…

新版危险废物标签二维码制作教程

生态环境部发布的《危险废物识别标志设置技术规范》已经在2023年7月1日正式实施&#xff0c;除了对危废标签格式、内容的规范&#xff0c;明确规定新版危废标签需要包含数字识别码和二维码&#xff0c;实现危险废物“一物一码”管理。 其中危险废物标签中的二维码部分&#xff…

【SuperPoint】语义SLAM深度学习用于特征提取

1. 概况 作者的写作思路很清晰&#xff0c;把各个技术点这么做的原因写的很清楚&#xff0c;一共三篇&#xff0c;另外两篇分别是2016年和2017年发表的&#xff0c;这三篇文章通读下来&#xff0c;可以看清作者在使用深度学习进行位姿估计这一方法上的思路演变过程&#xff0c…

IDEA中 jps+jmap+jconsole命令查看堆内存情况

结论 1.获取进程idjps2.jmap 某个时刻堆内存的情况jdk8之前jmap -heap pid 15876jdk8之后jhsdb jmap --heap --pid 158763.jconsole 动态查看堆内存情况&#xff0c;直接jconsole ,然后弹出可视化窗口jconsole其中12 要结合使用&#xff0c;且是静态的查看&#xff1b;3可以单…

【c++报错】无法打开自己的工程项目(C++ 无法打开文件“xxx.lib”)

问题&#xff1a; C 无法打开文件“xxx.lib” 问题分析&#xff1a; 在进行单个生成的时候&#xff0c;可以生成成功&#xff0c;也可以运行程序。但是点击全部重新生成时&#xff0c;就显示无法打开文件“xxx.lib”。 观察生成顺序&#xff0c;发现exe的程序&#xff08;调用…

基于”Python+”多技术融合在蒸散发与植被总初级生产力估算中的实践

熟悉蒸散发ET及其组分&#xff08;植被蒸腾Ec、土壤蒸发Es、冠层截留Ei&#xff09;、植被总初级生产力GPP的概念和碳水耦合的基本原理&#xff1b;掌握利用Python与ArcGIS工具进行课程相关的操作&#xff1b;熟练掌握国际上流行的Penman-Monteith模型&#xff0c;并能够应用该…

yarn 无法加载文件 CUsersAdministratorAppDataRoamingnpmyarn.ps1,因为在此系统上禁止运行脚本。的解决方案

yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本。 1、问题描述 执行yarn相关命令时报错&#xff1a; yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1&#xff0c;因为在此系统…

PHP 学生信息管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 学生信息管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88027229https://down…

7 个顶级免费网站在线图像压缩工具!

在将图像上传到网站之前对其进行压缩是缩短网站加载时间的最简单、最有效的方法之一&#xff0c;从而改善访问者的网站体验并提高搜索排名。 大图像会显着降低网站的性能&#xff0c;这总体来说是个坏消息。幸运的是&#xff0c;您可以使用一些很棒的工具来帮助您轻松优化图像…

实现windows系统文件传输到Linux系统中的工具

1、实现windows系统文件传输到Linux系统中的工具 yum -y install lrzsz然后就可以将windows中的文件&#xff0c;直接拖到Xshell窗口即可。