摘要: 架构的演进历程 分布式理论 CAP理论 正常情况,写入A1,同步到A2,这样的话,A1和A2都能读取到最新的数据。 但是网络如果不可靠 A1和A2会变成两个子网 保证A和P 保证C和P redis属于AP 实际应该考虑的是数据同步测时延。 PACELC理论 BASE理论 微服务不适合ZK Eurek 阅读全文
posted @ 2022-05-04 22:58 灯塔下的守望者 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 架构设计基本原则知识扩展 SOLID原则 前五种统一称为SOLID原则 SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。 当这些原则被一起应用时,它们使得一个程序员开发一个容 阅读全文
posted @ 2022-05-04 22:57 灯塔下的守望者 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 依赖倒置原则(DIP) , , 依赖倒置原则 依赖倒置原则的定义 原始定义:高层模块不要依赖低层模块,两种都应该依赖抽象。抽象不应该依赖细节,细节应该依赖抽象。 核心思想是: 要面向接口编程,不要面向实现编程 。 依赖倒置原则的作用 1. 降低类之间的耦合性 2. 提高系统的稳定性 3. 减少并行开 阅读全文
posted @ 2022-05-04 22:56 灯塔下的守望者 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 里式替换原则(LSP) , , 里氏替换原则 里氏替换原则的定义 里式替换阐述了继承的原则,可描述为:子类可以扩展父类的功能,但是不能改变父类原有的功能。 "https://zhuanlan.zhihu.com/p/268574641" 里式替换的作用 1. 里式替换是实现开闭原则的重要方式之一。 阅读全文
posted @ 2022-05-04 22:55 灯塔下的守望者 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 接口隔离原则(ISP) , 接口隔离原则 接口隔离原则的定义 将接口拆分成更小更具体的接口,让接口中只包含用户感兴趣的方法。 接口隔离和单一职责都是为了高类聚、低耦合,体现了封装思想。两者区别: 1. 单一职责注重的是职责,接口隔离注重对接口依赖的隔离 2. 单一职责主要约束类,针对的是程序中的实现 阅读全文
posted @ 2022-05-04 22:54 灯塔下的守望者 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则(SRP) , 单一职责原则 单一职责原则的定义 单一职责又称单一功能,职责指的是变化的原因,单一职责规定 一个类有且仅有一个引起他变化的原因 ,否则应该被拆分。 对象不应该承担太多职责,如果一个对象承担太多职责,至少有两个缺点: 1. 一个职责的变化可能削弱或者抑制其他的职责的能力。 阅读全文
posted @ 2022-05-04 22:53 灯塔下的守望者 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 本文介绍了一个良好的可扩展性的架构需要遵守的原则。 <! more 架构设计基本原则 2022/04/16 校对完成 文章更新历史 2022/04/16 初稿。 开闭原则(OCP) , 开闭原则 开闭原则的定义 开闭原则:软件实体应该对扩展开放,对修改关闭 软件实体包含几个部分 1. 项目中划分出来 阅读全文
posted @ 2022-05-04 22:52 灯塔下的守望者 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 服务链路追踪 什么是服务链路追踪 分布式微服务架构上是通过业务来划分服务的,通过Rest调用对外暴露一个接口,可能需要很多服务协同才能完成这个接口的功能。 如果链路上任何一个服务出现问题或者出现网络超时,都会导致接口调用失败。随着业务的扩张,接口调用会越来越复杂。 极端情况: 分布式链路追踪(Dis 阅读全文
posted @ 2022-05-04 22:51 灯塔下的守望者 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 服务限流 什么是服务限流 限流就是为了提供稳定的服务,限制使用人数。 限流的目的是通过对并发请求进行限速,或者对一个时间窗口内的请求数量进行限速来保护系统。 一旦达到限制速率可以拒绝服务、排队或者等待。 多维度进行限流 请求到达服务接口时,可以采用多维度限流策略。 限流算法 1. 限流算法 计数器( 阅读全文
posted @ 2022-05-04 22:49 灯塔下的守望者 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 服务熔断 什么是服务熔断 牺牲局部,保存整体的措施叫做熔断。 不采取熔断的后果,例子: 一旦下游服务C变的不可用,积压了大量请求,服务B的请求也会随之阻塞。 线程资源逐渐耗尽,使得服务B也变的不可用。紧接着,服务A也会变得不可用,整个服务链路被拖垮。 这种调用链路的连锁故障,叫做雪崩。 熔断机制 可 阅读全文
posted @ 2022-05-04 22:49 灯塔下的守望者 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 服务降级 什么是服务降级 在服务器压力剧增的情况下,对一些服务和页面进行有策略的不处理或者换种简单的方式处理,从而释放服务器资源以保证核心服务正常运作或者高效运作。 当架构整体的负载超过了预设的上线阈值,或者即将到来的流量预计将会超过预设的阈值时,为了保证重要的基本服务能够正常运行,可以将一些不重要 阅读全文
posted @ 2022-05-04 22:48 灯塔下的守望者 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 服务削峰 为什么要进行服务削峰 为了应对瞬间高并发的流量。 流量削峰的方案 1. 消息队列解决削峰 用消息队列缓存瞬时流量,把同步的直接调用转换为异步的间接推送,中间通过队列在一端承接瞬时流量洪峰,在另一端将消息平滑的推送出去。 消息队列中间件主要解决应用耦合,异步消息,流量削峰等问题。 常见的队列 阅读全文
posted @ 2022-05-04 22:47 灯塔下的守望者 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 分布式服务治理 服务协调 分布式协调主要用来解决分布式环境中多个进程之间的同步,让他们有序的去访问临界资源,防止造成脏数据的后果。 分布式锁是分布式协调技术的核心内容。 分布式锁的实现方式 1. 基于缓存(redis)实现分布式锁 获取锁的时候,使用 加锁,并使用 命令为锁添加一个超时时间,超过该时 阅读全文
posted @ 2022-05-04 22:46 灯塔下的守望者 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 分布式架构服务调用 服务调用 和传统单体架构相比,分布式多了一个远程服务之间的通信,不管soa还是微服务,本质都是对业务服务的提炼和复用。 远程服务之间的调用,才是实现分布式的关键因素。 实现方式 HTTP通信协议的框架 1. HttpURLConnection "https://docs.orac 阅读全文
posted @ 2022-05-04 22:45 灯塔下的守望者 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 负载均衡 使用多台服务器共同分担计算任务,将网络请求与计算分配到集群可用的不同服务器节点上,从而达到高可用性以及良好的操作体验。 Client1、Client2、Client3通过负载均衡分配到不同的节点上。 负载均衡有硬件解决方案,也有软件解决方案。硬件解决方案有著名的F5,软件有LVS、HAPr 阅读全文
posted @ 2022-05-04 22:44 灯塔下的守望者 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 容错性 容错就是IT系统对错误的包容能力。 容错处理保障了分布式系统环境下相应系统高可用和健壮性。 常见的案例是对于 问题的解决方案。 解决办法 1. 临时存放null值 2. 使用布隆过滤器 "https://baike.baidu.com/item/%E5%B8%83%E9%9A%86%E8%B 阅读全文
posted @ 2022-05-04 22:43 灯塔下的守望者 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 高可用 高可用HA设计 高可用(Hign Availability)是系统架构中必须考虑的因素之一,指的是,经过设计来减少系统不能提供服务的时间。 系统高可用性的设计模式通常有三种:主备(master slave)、互备(active active)和集群(cluster)。 1. 主备模式 主备模 阅读全文
posted @ 2022-05-04 22:42 灯塔下的守望者 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 本文阐述了分布式系统中常见的设计策略。 <! more 分布式系统设计策略 2022/03/01 校对完成 文章更新历史 2022/03/01 初稿。 分布式系统中需要解决的问题 1. 如何检测当前节点是否存活? 2. 如何保障高可用 3. 容错处理 4. 负载均衡 心跳检测 检测节点故障的通用手段 阅读全文
posted @ 2022-05-04 22:41 灯塔下的守望者 阅读(90) 评论(0) 推荐(0) 编辑
摘要: Lease机制 什么是Lease机制 Lease机制,就是租约机制,是一种在分布式协议中常用的协议,是维护分布式系统中数据一致性的常用工具。 Lease机制的特点: Lease是颁发者对一段时间内数据一致性的承诺 颁发者发出Lease后,不管是否被接受,只要Lease不过期,颁发者都会按照协议,遵守 阅读全文
posted @ 2022-05-04 22:40 灯塔下的守望者 阅读(65) 评论(0) 推荐(0) 编辑
摘要: Raft协议 什么是Raft协议 Paxos论证了一致性协议的可行性,但是不好懂,缺少必要的细节,工程实现难度高。广为人知的实现目前只zk的zab协议。 Paxos的出现为分布式的强一致性提供了很好的理论基础,但是paxos协议本身理解起来困难,实现复杂。 斯坦福大学的RamCloud项目中提出了易 阅读全文
posted @ 2022-05-04 22:38 灯塔下的守望者 阅读(96) 评论(0) 推荐(0) 编辑