当前位置:网站首页>架构设计三原则
架构设计三原则
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 apex 21.2 installation and one click deployment
- Redis -- cache breakdown, penetration, avalanche
- php中计算树状结构数据中的合计
- JS judge whether the object is empty
- SQL注入闭合判断
- RMAN incremental recovery example (1) - without unbacked archive logs
- 图解Kubernetes中的etcd的访问
- Sqli-labs customs clearance (less15-less17)
- SQLI-LABS通关(less15-less17)
- php中的数字金额转换大写数字
猜你喜欢
随机推荐
Sqli Labs clearance summary - page 2
Oracle段顾问、怎么处理行链接行迁移、降低高水位
在php的开发环境中如何调取WebService?
ssm人事管理系统
Differences between ts and JS
JSP智能小区物业管理系统
php中时间戳转换为毫秒以及格式化时间
Basic knowledge of software testing
[daily question] - Huawei machine test 01
Ceaspectuss shipping company shipping artificial intelligence products, anytime, anywhere container inspection and reporting to achieve cloud yard, shipping company intelligent digital container contr
CSRF攻击
工具种草福利帖
Date time API details
js判断数组中对象是否存在某个值
Explanation of suffix of Oracle EBS standard table
搭建frp进行内网穿透
Review of reflection topics
Sqli-labs customs clearance (less15-less17)
JS create a custom JSON array
ssm垃圾分类管理系统














