架构设计基本原则知识扩展
SOLID原则
前五种统一称为SOLID原则
SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。 当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。
前五种统一称为SOLID原则
SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。 当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。
DIP,Dependence Inversion Principle, 依赖倒置原则
原始定义:高层模块不要依赖低层模块,两种都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。
核心思想是:要面向接口编程,不要面向实现编程。
LSP,Liskov Substitution Principle, 里氏替换原则
里式替换阐述了继承的原则,可描述为:子类可以扩展父类的功能,但是不能改变父类原有的功能。
ISP,Interface Segregation Principles接口隔离原则
将接口拆分成更小更具体的接口,让接口中只包含用户感兴趣的方法。
接口隔离和单一职责都是为了高类聚、低耦合,体现了封装思想。两者区别:
SRP , Single Responsibility Principle 单一职责原则
单一职责又称单一功能,职责指的是变化的原因,单一职责规定一个类有且仅有一个引起他变化的原因,否则应该被拆分。
对象不应该承担太多职责,如果一个对象承担太多职责,至少有两个缺点:
分布式微服务架构上是通过业务来划分服务的,通过Rest调用对外暴露一个接口,可能需要很多服务协同才能完成这个接口的功能。
如果链路上任何一个服务出现问题或者出现网络超时,都会导致接口调用失败。随着业务的扩张,接口调用会越来越复杂。

牺牲局部,保存整体的措施叫做熔断。
不采取熔断的后果,例子:

一旦下游服务C变的不可用,积压了大量请求,服务B的请求也会随之阻塞。
限流就是为了提供稳定的服务,限制使用人数。
限流的目的是通过对并发请求进行限速,或者对一个时间窗口内的请求数量进行限速来保护系统。
一旦达到限制速率可以拒绝服务、排队或者等待。

在服务器压力剧增的情况下,对一些服务和页面进行有策略的不处理或者换种简单的方式处理,从而释放服务器资源以保证核心服务正常运作或者高效运作。

当架构整体的负载超过了预设的上线阈值,或者即将到来的流量预计将会超过预设的阈值时,为了保证重要的基本服务能够正常运行,可以将一些不重要或者不紧急的服务或任务进行延迟使用或者暂停使用。
为了应对瞬间高并发的流量。
消息队列解决削峰
用消息队列缓存瞬时流量,把同步的直接调用转换为异步的间接推送,中间通过队列在一端承接瞬时流量洪峰,在另一端将消息平滑的推送出去。
