架构设计基本原则知识扩展

架构设计基本原则知识扩展

SOLID原则

前五种统一称为SOLID原则

SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。 当这些原则被一起应用时,它们使得一个程序员开发一个容易进行软件维护和扩展的系统变得更加可能。

https://en.wikipedia.org/wiki/SOLID


Terwer...大约 4 分钟后端开发分布式archdesginlodcrpcompositereuse
架构设计基本原则之依赖倒置原则(DIP)

依赖倒置原则(DIP)

DIP, Dependence Inversion Principle , 依赖倒置原则

依赖倒置原则的定义

原始定义:高层模块不要依赖低层模块,两种都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。

核心思想是:要面向接口编程,不要面向实现编程

依赖倒置原则的作用

  1. 降低类之间的耦合性
  2. 提高系统的稳定性
  3. 减少并行开发引起的风险
  4. 提高代码的可读性和可维护性

Terwer...大约 1 分钟后端开发分布式archdesgindip
架构设计基本原则之接口隔离原则(ISP)

接口隔离原则(ISP)

ISP, Interface Segregation Principles 接口隔离原则

接口隔离原则的定义

将接口拆分成更小更具体的接口,让接口中只包含用户感兴趣的方法。

接口隔离和单一职责都是为了高类聚、低耦合,体现了封装思想。两者区别:

  1. 单一职责注重的是职责,接口隔离注重对接口依赖的隔离
  2. 单一职责主要约束类,针对的是程序中的实现和细节,接口隔离主要约束接口,主要针对抽象和程序整体框架的构建。

Terwer...大约 2 分钟后端开发分布式archdesginisp
架构设计基本原则之单一职责原则(SRP)

单一职责原则(SRP)

SRP , Single Responsibility Principle 单一职责原则

单一职责原则的定义

单一职责又称单一功能,职责指的是变化的原因,单一职责规定一个类有且仅有一个引起他变化的原因,否则应该被拆分。

对象不应该承担太多职责,如果一个对象承担太多职责,至少有两个缺点:

  1. 一个职责的变化可能削弱或者抑制其他的职责的能力。
  2. 当客户端需要这个类的某一个职责时,不得不将他不需要的职责包含进来,造成冗余代码或者代码的浪费。

Terwer...大约 1 分钟后端开发分布式archdesginsrp
分布式服务治理之服务链路追踪

服务链路追踪

什么是服务链路追踪

分布式微服务架构上是通过业务来划分服务的,通过Rest调用对外暴露一个接口,可能需要很多服务协同才能完成这个接口的功能。

如果链路上任何一个服务出现问题或者出现网络超时,都会导致接口调用失败。随着业务的扩张,接口调用会越来越复杂。

image-20220412151845220
image-20220412151845220

Terwer...大约 4 分钟后端开发分布式rpcservicelinktracking
分布式服务治理之服务熔断

服务熔断

什么是服务熔断

牺牲局部,保存整体的措施叫做熔断。

不采取熔断的后果,例子:

image-20220412134933476
image-20220412134933476

一旦下游服务C变的不可用,积压了大量请求,服务B的请求也会随之阻塞。


Terwer...大约 3 分钟后端开发分布式rpcservicefusing
分布式服务治理之服务限流

服务限流

什么是服务限流

限流就是为了提供稳定的服务,限制使用人数。

限流的目的是通过对并发请求进行限速,或者对一个时间窗口内的请求数量进行限速来保护系统。

一旦达到限制速率可以拒绝服务、排队或者等待。

image-20220412105549096
image-20220412105549096

Terwer...大约 2 分钟后端开发分布式rpcserviceflowlimitation
分布式服务治理之服务降级

服务降级

什么是服务降级

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

image-20220412102051842
image-20220412102051842

当架构整体的负载超过了预设的上线阈值,或者即将到来的流量预计将会超过预设的阈值时,为了保证重要的基本服务能够正常运行,可以将一些不重要或者不紧急的服务或任务进行延迟使用或者暂停使用。


Terwer...大约 2 分钟后端开发分布式rpcservicedegradation
分布式服务治理之服务削峰

服务削峰

为什么要进行服务削峰

为了应对瞬间高并发的流量。

流量削峰的方案

  1. 消息队列解决削峰

    用消息队列缓存瞬时流量,把同步的直接调用转换为异步的间接推送,中间通过队列在一端承接瞬时流量洪峰,在另一端将消息平滑的推送出去。

    image-20220412094841286
    image-20220412094841286

Terwer...大约 1 分钟后端开发分布式rpcservicepeak
2
3
4
5