常用设计原则和理论

文章目录

  • 分布式理论
    • ACID
    • SLA
    • CAP
    • BASE
  • 开发原则
    • SOLID
    • KISS
    • YANGNI
    • DRY
    • SMART
  • 设计模型
    • DDD
    • TDD

分布式理论

ACID

事务原则,保障CAP中的C

名称描述
原子性(Atomicity)事务内操作不可分割,要么都发生,要么都不发生。
一致性(Consistency)事务前后数据的完整性必须保持一致。
隔离性(Isolation)多个事务之间要相互隔离,不干扰。
持久性(Durability)事务提交持久化后,不可逆

SLA

sla(service level agreement)是量化软件服务质量的协定,保障CAP中A详细介绍SLA

可用性分类可用水平(%)一年不可用时间
容错可用性99.9999<1 min
极高可用性99.999<5 min
具有故障自动恢复能力的可用性99.99<53 min
高可用性99.9<8.8h
商品可用性99<43.8 min

CAP

分布式重要指导理论,分布式系统是要保障P,所以一般是AP或者CP

名称描述
C(consistency)强一致性多副本数据一致
A(Availability)可用性提供稳定持续服务能力
P(Partition Tolerance)分区容错性多副本不一致情况下,服务可用
  • CA: 不属于分布式系统 不允许分区数据不一致,例如:mysql oracle

  • CP: 同步时间不限,不保证可用,例如:redis mongoDB zookeeper

  • AP:每个节点数据不一致,需要BASE做补充,例如:cassandra

BASE

不能同时满足CAP,CA,CP,AP下使用BASE理论满足分布式系统高可用

名称描述
BA(Basically Available) 基本可用响应时间妥协,强一致性高实时场景降级
S(Soft state) 软状态与原子性(硬状态)相反,即允许节点存在数据同步状态延迟
E(Eventually consistent) 最终一致性不是实时一致,一致的过程中不影响使用

https://www.kancloud.cn/aceld/golang/1958321

开发原则

SOLID

开发设计准者,设计高内聚低耦合以及鲁棒性代码

名称描述
S 单一职责原则(SRP)职责单一,高内聚低耦合设计基础
O 开闭原则(OCP)扩展,不影响原有功能,设计终极目标,实现功能稳定
L 里氏替换原则(LSP)类的继承需要谨慎且保证子类正常替换父类,辅助实现O
I 接口隔离原则(ISP)接口摒弃大而全,尽量小而明确,辅助实现L,体现S
D 依赖倒置原则(DIP)将依赖实现转位依赖接口,通过多态实现类松耦合,指导I设计

在这里插入图片描述

KISS

keep it simple and stupid
keep it simple and short
keep it simple and straightforward
keep it simple and smart
keep it simple and small
keep it strictly simple

翻译为保持设计简单直接有效,意在保持系统整洁没有不必要的负担

1.糟糕的设计或没有必要的设计
2.编程风格混乱
3.杀鸡用牛刀
4.重复遭轮子
5.狗屁膏药/打补丁
6.过度优化

奥卡姆剃刀定律: 切勿浪费较多的东西去做,用较少的东西同样可以做好,即简单有效原理
在这里插入图片描述

eg  举个例子,肥皂厂出现肥皂盒空包问题?
方案一 顾一个人检查空包  
方案二 装一台风扇吹空盒掉入其他地方。
方案三 x光透视来鉴别
你们觉得那个方案最好呢?

YANGNI

You Ain’t Gonna Need It  

翻译为你不会需要它。意为不要去设计当前用不到的功能,让精力聚焦达到效率最大化。即不要过度设计

1. 不必要引入不需要的依赖
2. 不必要引入不需要的代码
3. 不必要实现不需要的功能,可以基于扩展性预留必要的设计
4. 不必要在不太可能的场景大作文章

YANGNI是做不做的理论指导,KISS是怎么做的理论指导

DRY

Don’t Repeat Yourself

翻译为不要重复。意为不要设计重复或相似的方法实现同一功能逻辑,即无冗余设计

1. 不要重复逻辑。可以用单一职责/接口隔离原则进行甄别
2. 不要重复语义。减少不必要的同功能方法去维护
3. 不要重复执行。减少不必要的的for

DRY是KISS原则的辅助,保持系统的整洁

SMART

目标设计规划原则,量化目标并有效推进完成目标。帮助制定准确的OKR KPI

名称描述
S (specific)具体/明确目标需要有明确的含义,不存在歧义并且能定性
M (measure)可衡量目标可以定量分析目标的完成情况,完成质量好坏 ,便于追踪跟进
A (attainable)可实现目标是合理有意义的,优先资源成本下可以达成的,过低没有意义
R (relwvant)相关性目标与完成目标的人必须相关,目标与最终目的正相关
T (time-bound)时限性目标是达成是可细化时间节点,有时间限制的

在这里插入图片描述

设计模型

DDD

TDD

待续


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部