当前位置:网站首页>架构设计三原则
架构设计三原则
2022-07-02 06:24:00 【软件开发随心记】
合适原则
简单原则
- 复杂的系统
组件之间的关联多
组件数量庞大
结构复杂性带来的问题
组件越多,某个组件出现故障的概率越高
假设组件的故障率是 10%(有 10% 的时间不可用),那么有 3 个组件的系统可用性是(1-10%)×(1-10%)×(1-10%)= 72.9%,有 5 个组件的系统可用性是(1-10%)×(1-10%)×(1-10%)×(1-10%)×(1-10%)=59%,两者的可用性相差 13%。
某一组件的变动可能会对所有关联的组件产生影响。而这些影响可能会顺着关联链路扩散出去,对更多的组件产生影响。
组件 A 修改或者异常时,会影响组件 B/C/E,D 又会影响 E。这个问题会影响整个系统的开发效率,因为一旦变更涉及外部系统,需要协调各方统一进行方案评估、资源协调、上线配合。
要在一个复杂的系统中对一个问题进行定位会变得非常困难。
组件越多,每个组件都有可能产生问题,需要一个个进行排查。组件间的关系复杂,有可能某一个足见的表现出故障,但问题的根源并不是这个足见。
- 架构复杂性。
演化原则
架构设计与生物相似,也需要通过演化发展来适应外部环境(业务变化),物竞天择,适者生存。
其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。
第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等(类似生物体内的基因)却可以在新架构中延续。
演化原则非常重要,在做架构设计时需要时刻牢记。快速落地以满足需求,在后续发展中不断完善整体架构,跟随业务发展而不断演化。
边栏推荐
- Oracle EBS数据库监控-Zabbix+zabbix-agent2+orabbix
- JS create a custom JSON array
- [daily question] - Huawei machine test 01
- SQL注入闭合判断
- Sqli-labs customs clearance (less18-less20)
- 2021-07-17C#/CAD二次开发创建圆(5)
- Changes in foreign currency bookkeeping and revaluation general ledger balance table (Part 2)
- js判断对象是否为空
- DNS攻击详解
- Oracle EBS interface development - quick generation of JSON format data
猜你喜欢
随机推荐
mapreduce概念和案例(尚硅谷学习笔记)
The boss said: whoever wants to use double to define the amount of goods, just pack up and go
TCP攻击
SSM实验室设备管理
Build FRP for intranet penetration
pm2简单使用和守护进程
JS create a custom JSON array
Laravel8中的find_in_set、upsert的使用方法
MapReduce与YARN原理解析
JS to determine whether there is a value in the object in the array
JS countdown case
2021-07-05C#/CAD二次开发创建圆弧(4)
js判断对象是否为空
Oracle 11.2.0.3 handles the problem of continuous growth of sysaux table space without downtime
Oracle rman半自动恢复脚本-restore阶段
MySQL index
ORACLE APEX 21.2安装及一键部署
ORACLE APEX 21.2安裝及一鍵部署
外币记账及重估总账余额表变化(下)
Use of interrupt()