摘要:
依赖倒置原则(DIP) , , 依赖倒置原则 依赖倒置原则的定义 原始定义:高层模块不要依赖低层模块,两种都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。 核心思想是: 要面向接口编程,不要面向实现编程 。 依赖倒置原则的作用 1. 降低类之间的耦合性 2. 提高系统的稳定性 3. 减少并行开 阅读全文
摘要:
里式替换原则(LSP) , , 里氏替换原则 里氏替换原则的定义 里式替换阐述了继承的原则,可描述为:子类可以扩展父类的功能,但是不能改变父类原有的功能。 "https://zhuanlan.zhihu.com/p/268574641" 里式替换的作用 1. 里式替换是实现开闭原则的重要方式之一。 阅读全文
摘要:
接口隔离原则(ISP) , 接口隔离原则 接口隔离原则的定义 将接口拆分成更小更具体的接口,让接口中只包含用户感兴趣的方法。 接口隔离和单一职责都是为了高类聚、低耦合,体现了封装思想。两者区别: 1. 单一职责注重的是职责,接口隔离注重对接口依赖的隔离 2. 单一职责主要约束类,针对的是程序中的实现 阅读全文
摘要:
单一职责原则(SRP) , 单一职责原则 单一职责原则的定义 单一职责又称单一功能,职责指的是变化的原因,单一职责规定 一个类有且仅有一个引起他变化的原因 ,否则应该被拆分。 对象不应该承担太多职责,如果一个对象承担太多职责,至少有两个缺点: 1. 一个职责的变化可能削弱或者抑制其他的职责的能力。 阅读全文
摘要:
本文介绍了一个良好的可扩展性的架构需要遵守的原则。 <! more 架构设计基本原则 2022/04/16 校对完成 文章更新历史 2022/04/16 初稿。 开闭原则(OCP) , 开闭原则 开闭原则的定义 开闭原则:软件实体应该对扩展开放,对修改关闭 软件实体包含几个部分 1. 项目中划分出来 阅读全文
摘要:
服务链路追踪 什么是服务链路追踪 分布式微服务架构上是通过业务来划分服务的,通过Rest调用对外暴露一个接口,可能需要很多服务协同才能完成这个接口的功能。 如果链路上任何一个服务出现问题或者出现网络超时,都会导致接口调用失败。随着业务的扩张,接口调用会越来越复杂。 极端情况: 分布式链路追踪(Dis 阅读全文
摘要:
服务限流 什么是服务限流 限流就是为了提供稳定的服务,限制使用人数。 限流的目的是通过对并发请求进行限速,或者对一个时间窗口内的请求数量进行限速来保护系统。 一旦达到限制速率可以拒绝服务、排队或者等待。 多维度进行限流 请求到达服务接口时,可以采用多维度限流策略。 限流算法 1. 限流算法 计数器( 阅读全文
摘要:
服务熔断 什么是服务熔断 牺牲局部,保存整体的措施叫做熔断。 不采取熔断的后果,例子: 一旦下游服务C变的不可用,积压了大量请求,服务B的请求也会随之阻塞。 线程资源逐渐耗尽,使得服务B也变的不可用。紧接着,服务A也会变得不可用,整个服务链路被拖垮。 这种调用链路的连锁故障,叫做雪崩。 熔断机制 可 阅读全文
摘要:
服务降级 什么是服务降级 在服务器压力剧增的情况下,对一些服务和页面进行有策略的不处理或者换种简单的方式处理,从而释放服务器资源以保证核心服务正常运作或者高效运作。 当架构整体的负载超过了预设的上线阈值,或者即将到来的流量预计将会超过预设的阈值时,为了保证重要的基本服务能够正常运行,可以将一些不重要 阅读全文
摘要:
服务削峰 为什么要进行服务削峰 为了应对瞬间高并发的流量。 流量削峰的方案 1. 消息队列解决削峰 用消息队列缓存瞬时流量,把同步的直接调用转换为异步的间接推送,中间通过队列在一端承接瞬时流量洪峰,在另一端将消息平滑的推送出去。 消息队列中间件主要解决应用耦合,异步消息,流量削峰等问题。 常见的队列 阅读全文
摘要:
分布式服务治理 服务协调 分布式协调主要用来解决分布式环境中多个进程之间的同步,让他们有序的去访问临界资源,防止造成脏数据的后果。 分布式锁是分布式协调技术的核心内容。 分布式锁的实现方式 1. 基于缓存(redis)实现分布式锁 获取锁的时候,使用 加锁,并使用 命令为锁添加一个超时时间,超过该时 阅读全文
摘要:
分布式架构服务调用 服务调用 和传统单体架构相比,分布式多了一个远程服务之间的通信,不管soa还是微服务,本质都是对业务服务的提炼和复用。 远程服务之间的调用,才是实现分布式的关键因素。 实现方式 HTTP通信协议的框架 1. HttpURLConnection "https://docs.orac 阅读全文
摘要:
负载均衡 使用多台服务器共同分担计算任务,将网络请求与计算分配到集群可用的不同服务器节点上,从而达到高可用性以及良好的操作体验。 Client1、Client2、Client3通过负载均衡分配到不同的节点上。 负载均衡有硬件解决方案,也有软件解决方案。硬件解决方案有著名的F5,软件有LVS、HAPr 阅读全文
摘要:
容错性 容错就是IT系统对错误的包容能力。 容错处理保障了分布式系统环境下相应系统高可用和健壮性。 常见的案例是对于 问题的解决方案。 解决办法 1. 临时存放null值 2. 使用布隆过滤器 "https://baike.baidu.com/item/%E5%B8%83%E9%9A%86%E8%B 阅读全文
摘要:
高可用 高可用HA设计 高可用(Hign Availability)是系统架构中必须考虑的因素之一,指的是,经过设计来减少系统不能提供服务的时间。 系统高可用性的设计模式通常有三种:主备(master slave)、互备(active active)和集群(cluster)。 1. 主备模式 主备模 阅读全文