![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式基础知识
文章平均质量分 89
carroll18
你想要拥有你从未有过的东西,你必须去做你从未做过的事情。
展开
-
分布式技术之故障恢复技术
假设,从 Slave 1、Slave 2 和 Slave 3 中选举出 Slave 2 作为新的 Master,则 Slave 2 需要承担原来 Master 的职责,继续为用户提供服务,因此当用户 A 再次访问集群时,提供服务的是新选出的 Master,也就是 Slave 2。节点故障和网络故障也有交叉的地方,比如网络故障产生的原因可能是节点故障,即因为节点故障导致节点间无法通信,而不是纯粹的网络链路问题。对于时延不太敏感的场景,k 或 T 可以设置得大一些,降低误判率,但却会增加发现故障的时间。原创 2023-12-31 10:00:47 · 640 阅读 · 0 评论 -
分布式技术之故障隔离技术
故障隔离就是,把故障通过某种方式与其他正常模块进行隔离,以保证某一模块出现故障后,不会影响其他模块。分布式系统,故障隔离,就是采用一定的策略,以实现当某个模块故障时,不会影响其他模块继续提供服务,以保证整个系统的可用性。所以说,故障隔离,可以避免分布式系统出现大规模的故障,甚至是瘫痪,降低损失。在分布式系统中,要实现故障隔离,通常需要在进行系统设计时,提前对可能出现的故障进行预防,以使得在出现故障后能实现故障隔离。此外,由于是提前设计预防的,因此故障隔离还可以帮助快速定位故障点。原创 2023-12-31 10:00:16 · 1009 阅读 · 0 评论 -
分布式技术之流量控制技术
流量控制,如果学过计算机网络的话,第一反应肯定是网络传输中的流量控制。网络传输中的流量控制,就是让发送方发送数据的速率不要太快,让接收方来得及接收数据,具体的实现方法就是滑动窗口。简单来讲,滑动窗口指的是,在任意时刻,发送方都维持一个连续的允许发送的数据大小,称为发送窗口;接收方也会维持一个连续的允许接收的数据大小,称为接收窗口。每次发送方给接收方发送数据后,必须收到接收方返回的确认消息,发送窗口才可向后移动,发送新的数据。通过一个简单的例子,来看看滑动窗口在网络流量控制中,是如何发挥作用的吧。原创 2023-12-31 09:59:42 · 1054 阅读 · 0 评论 -
分布式技术之负载均衡技术
通常情况下,负载均衡可以分为两种:一种是请求负载均衡,即将用户的请求均衡地分发到不同的服务器进行处理;另一种是数据负载均衡,即将用户更新的数据分发到不同的存储服务器。分布式系统中,服务请求的负载均衡是指,当处理大量用户请求时,请求应尽量均衡地分配到多台服务器进行处理,每台服务器处理其中一部分而不是所有的用户请求,以完成高并发的请求处理,避免因单机处理能力的上限,导致系统崩溃而无法提供服务的问题。比如,有 N 个请求、M 个节点,负载均衡就是将 N 个请求,均衡地转发到这 M 个节点进行处理。原创 2023-12-31 09:59:06 · 971 阅读 · 0 评论 -
分布式技术之缓存技术
在计算机领域,缓存技术一般是指,用一个更快的存储设备存储一些经常用到的数据,供用户快速访问。用户不需要每次都与慢设备去做交互,因此可以提高访问效率。分布式缓存就是指在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,并尽量存储到更快的设备,以减少远程数据传输的延迟,让用户和应用可以很快访问到想要的数据。我们通常说的分布式数据缓存,属于计算机应用中的缓存的一种。而计算机应用中的缓存,一般指内存,即内存存储了用户经常访问的数据,用户或应用不再需要到磁盘中去获取相应的数据,大幅提高访问速度。原创 2023-12-31 09:58:49 · 923 阅读 · 0 评论 -
分布式技术之数据复制技术
数据复制是一种实现数据备份的技术。数据复制技术,可以保证存储在不同节点上的同一份数据是一致的。这样当一个节点故障后,可以从其他存储该数据的节点获取数据,避免数据丢失,进而提高了系统的可靠性。比如,现在有节点 1 和节点 2,节点 1 上存储了 10M 用户数据,直观地说,数据复制技术就是将节点 1 上的这 10M 数据拷贝到节点 2 上,以使得节点 1 和节点 2 上存储了相同的数据,也就是节点 2 对节点 1 的数据进行了备份。原创 2023-12-31 09:58:19 · 982 阅读 · 0 评论 -
分布式技术之数据分布方式
假设,我们采用最简单的哈希方法,用户 id% 节点总数 (3) 进行哈希映射,id%3 = 0 的所有用户信息存储到节点 1 的 Partition1, id%3=1 的所有用户信息存储到节点 2 的 Partition2,id%3=2 的所有用户信息存储到节点 3 的 Partition3。数据分片是从数据的维度进行划分,是指将一个数据集合按照一定的方式划分为多个数据子集,不同的数据子集存在不同的存储块上,而这些存储块可以在不同的节点上,也可以在同一节点上。知识扩展:数据分片和数据分区,有何区别?原创 2023-12-30 09:53:41 · 1162 阅读 · 0 评论 -
分布式技术之分布式数据存储系统
分布式存储系统的核心逻辑,就是将用户需要存储的数据根据某种规则存储到不同的机器上,当用户想要获取指定数据时,再按照规则到存储数据的机器里获取。如下图所示,当用户(即应用程序)想要访问数据 D,分布式操作引擎通过一些映射方式,比如 Hash、一致性 Hash、数据范围分类等,将用户引导至数据 D 所属的存储节点获取数据。获取数据的整个过程与商店购物的过程是不是有些类似呢?顾客到商店购物时,导购会根据顾客想要购买的商品引导顾客到相应的货架,然后顾客从这个货架上获取要购买的商品,完成购物。这里的。原创 2023-12-30 09:52:33 · 881 阅读 · 0 评论 -
分布式技术之CAP理论
结合电商的例子,带你理解 CAP 的含义。假设某电商,在北京、杭州、上海三个城市建立了仓库,同时建立了对应的服务器{A, B, C}用于存储商品信息。比如,某电吹风在北京仓库有 20 个,在杭州仓库有 10 个,在上海仓库有 30 个。那么,CAP 这三个字母在这个例子中分别代表什么呢?C 代表 Consistency,一致性,是指所有节点在同一时刻的数据是相同的,即更新操作执行结束并响应用户完成后,所有节点存储的数据会保持相同。原创 2023-12-30 09:51:59 · 860 阅读 · 0 评论 -
分布式技术之分布式消息队列通信
队列是一种具有先进先出特点的数据结构,消息队列是基于队列实现的,存储具有特定格式的消息数据,比如定义一个包含消息类型、标志消息唯一性的 ID、消息内容的一个结构体作为消息数据的特定格式。消息以特定格式放入这个队列的尾部后可以直接返回,并不需要系统马上处理,之后会有其他进程从队列头部开始读取消息,按照消息放入的顺序逐一处理。引入消息队列的好处是,提高响应速度,以及实现组件间的解耦。原创 2023-12-30 09:51:17 · 872 阅读 · 0 评论 -
分布式技术之分布式发布订阅通信
发布订阅的三要素是生产者、消费者和消息中心,生产者负责产生数据放到消息中心,消费者向消息中心订阅自己感兴趣的消息,当发布者推送数据到消息中心后,消息中心根据消费者订阅情况将相关数据推送给对应的订阅者。原创 2023-12-30 09:50:34 · 865 阅读 · 0 评论 -
分布式技术之分布式远程调用通信
本地调用通常指的是,进程内函数之间的相互调用;而远程调用,是进程间函数的相互调用,是进程间通信 IPC(Inter-Process Communication)的一种方式。在分布式领域中,一个系统由很多服务组成,不同的服务由各自的进程单独负责。因此,远程调用在分布式通信中尤为重要。原创 2023-12-30 09:50:02 · 924 阅读 · 0 评论 -
PanGu,常用各类型的公共模块-微组件
常用的公共模块-微组件通过沉淀下来的微组件,可以实现通用能力的沉淀,共享,复用。使用各种设计模式和代码规范,借鉴开源框架中好的代码实现,帮助自我沉淀与总结。项目Git地址:https://gitee.com/carroll18/pangu.git。原创 2023-12-29 10:32:20 · 1137 阅读 · 0 评论 -
分布式技术之分布式计算流水线模式
分布式领域的流水线计算模式,就是参考了工业生产中的流水作业模式,将一个任务分为多个步骤执行,使得不同任务可以并行执行。此外,你肯定还会想到计算机技术中的流水线计算吧。计算机中的**流水线(Pipeline)**技术是一种将每条指令拆分为多个步骤,多条指令的不同步骤重叠操作,从而实现几条指令并行处理的技术。现代 CPU 指令采用了流水线设计,将一条 CPU 指令分为取指(IF)、译码(ID)、执行(EX)、访存(MEM)、回写(WB)五级流水线来执行。原创 2023-12-29 09:37:41 · 945 阅读 · 0 评论 -
分布式技术之分布式计算Actor模式
Actor 模型又是什么呢?Actor 模型,代表一种分布式并行计算模型。这种模型有自己的一套规则,规定了 Actor 的内部计算逻辑,以及多个 Actor 之间的通信规则。在 Actor 模型里,每个 Actor 相当于系统中的一个组件,都是基本的计算单元。Actor 模型的计算方式与传统面向对象编程模型(Object-Oriented Programming,OOP)类似,一个对象接收到一个方法的调用请求(类似于一个消息),从而去执行该方法。原创 2023-12-29 09:37:08 · 1264 阅读 · 0 评论 -
分布式技术之分布式计算Stream模式
近年来,由于网络监控、传感监测、AR/VR 等实时性应用的兴起,一类需要处理流数据的业务发展了起来。比如各种直播平台中,我们需要处理直播产生的音视频数据流等。这种如流水般持续涌现,且需要实时处理的数据,我们称之为流数据。总结来讲,流数据的特征主要包括以下 4 点:数据如流水般持续、快速地到达;海量数据规模,数据量可达到 TB 级甚至 PB 级;对实时性要求高,随着时间流逝,数据的价值会大幅降低;数据顺序无法保证,也就是说系统无法控制将要处理的数据元素的顺序。原创 2023-12-29 09:35:54 · 915 阅读 · 0 评论 -
分布式技术之分布式计算MR模式
分而治之(Divide-and-Conquer),是计算机处理问题的一个很重要的思想,简称为分治法。顾名思义,分治法就是将一个复杂的、难以直接解决的大问题,分割成一些规模较小的、可以比较简单的或直接求解的子问题,这些子问题之间相互独立且与原问题形式相同,递归地求解这些子问题,然后将子问题的解合并得到原问题的解。在分布式领域,适合分治法的问题具有哪些特征吧。问题规模比较大或复杂,且问题可以分解为几个规模较小的、简单的同类型问题进行求解;子问题之间相互独立,不包含公共子问题;原创 2023-12-29 09:35:02 · 1070 阅读 · 0 评论 -
分布式技术之分布式共享状态调度架构
集群中需要管理的对象主要包括两种:一是,资源的分配和使用状态;二是,任务的调度和执行状态;在单体调度中,这两种对象都是由单体调度器管理的,因此可以比较容易地保证全局状态的一致性,但问题是可扩展性较差(支持业务类型受限),且存在单点瓶颈问题。而在两层调度中,这两种对象分别由第一层中央调度器和第二层 Framework 调度器管理,由于 Framwork 调度器只能看到部分资源,因此不能保证全局状态的一致性,也不容易实现全局最优的调度。为了解决这些问题,一种新的调度器架构被设计了出来。原创 2023-12-28 09:36:43 · 992 阅读 · 0 评论 -
分布式技术之分布式两层调度架构
两层调度结构对应的就是两层调度器,资源的使用状态同时由中央调度器和第二层调度器管理,中央调度器从整体上进行资源的管理与分配,将资源分配到第二层调度器;再由第二层调度器负责将资源与具体的任务配对,因此第二层调度可以有多个调度器,以支持不同的任务类型。如下图所示,Scheduler-1 表示第一层调度,负责收集和管理集群中的资源信息;原创 2023-12-28 09:35:48 · 907 阅读 · 0 评论 -
分布式技术之分布式单体调度架构
分布式系统中的单体调度是指,一个集群中只有一个节点运行调度进程,该节点对集群中的其他节点具有访问权限,可以搜集其他节点的资源信息、节点状态等进行统一管理,同时根据用户下发的任务对资源的需求,在调度器中进行任务与资源匹配,然后根据匹配结果将任务指派给其他节点。单体调度器拥有全局资源视图和全局任务,可以很容易地实现对任务的约束并实施全局性的调度策略。目前很多集群管理系统采用了单体调度设计,比如Google Borg、Kubernetes 等。如下图所示,图中展示了一个典型的单体调度框架。原创 2023-12-28 09:34:46 · 1041 阅读 · 0 评论 -
分布式技术之分布式非集中式结构
在非集中式结构中,服务的执行和数据的存储被分散到不同的服务器集群,服务器集群间通过消息传递进行通信和协调。在非集中式结构中,没有中央服务器和节点服务器之分,所有的服务器地位都是平等(对等)的,也就是我们常说的“众生平等”。这样一来,相比于集中式结构,非集中式结构就降低了某一个或者某一簇计算机集群的压力,在解决了单点瓶颈和单点故障问题的同时,还提升了系统的并发度,比较适合大规模集群的管理。原创 2023-12-27 09:31:04 · 834 阅读 · 0 评论 -
分布式技术之分布式集中式结构
集中式结构就是,由一台或多台服务器组成中央服务器,系统内的所有数据都存储在中央服务器中,系统内所有的业务也均先由中央服务器处理。多个节点服务器与中央服务器连接,并将自己的信息汇报给中央服务器,由中央服务器统一进行资源和任务调度:中央服务器根据这些信息,将任务下达给节点服务器;节点服务器执行任务,并将结果反馈给中央服务器。集中式结构最大的特点,就是部署结构简单。原创 2023-12-27 09:30:10 · 1257 阅读 · 0 评论 -
分布式核心技术之分布式锁
数据库对共享资源做了唯一性约束,如果有多个请求被同时提交到数据库的话,数据库会保证只有一个操作可以成功,操作成功的那个线程就获得了访问共享资源的锁,可以进行操作。虽然 ZooKeeper 实现的分布式锁,几乎能涵盖所有分布式锁的特性,且易于实现,但需要频繁地添加和删除节点,所以性能不如基于缓存实现的分布式锁。例如,用户 B 也想要买吹风机,但在他之前,用户 C 想看看吹风机的库存量。基于数据库实现分布式锁比较简单,绝招在于创建一张锁表,为申请者在锁表里建立一条记录,记录建立成功则获得锁,消除记录则释放锁。原创 2023-12-26 09:40:24 · 1289 阅读 · 0 评论 -
分布式核心技术之分布式事务
事务,其实是包含一系列操作的、一个有边界的工作序列,有明确的开始和结束标志,且要么被完全执行,要么完全失败,即 all or nothing。通常情况下,我们所说的事务指的都是本地事务,也就是在单机上的事务。而分布式事务,就是在分布式系统中运行的事务,由多个本地事务组合而成。在分布式场景下,对事务的处理操作可能来自不同的机器,甚至是来自不同的操作系统。要深入理解分布式事务,我们首先需要了解它的特征。原创 2023-12-26 09:39:43 · 1329 阅读 · 0 评论 -
分布式核心技术之分布式共识
假设,现在有 5 台服务器,分散在美国华盛顿、英国伦敦、法国巴黎、中国北京、中国上海,分别对应着用户{A,B,C,D,E}。现在,用户 A 给用户 B 转了 100 元。在传统方法中,我们通过银行进行转账并记录该笔交易。但分布式在线记账方法中,没有银行这样的一个集中方,而是由上述 5 台服务器来记录该笔交易。但是,这 5 台服务器均是有各自想法的个体,都可以自主操作或记录,那么如何保证记录的交易是一致的呢?这,就是分布式共识技术要解决的问题。原创 2023-12-24 15:37:22 · 1015 阅读 · 0 评论 -
分布式核心技术之分布式选举
这是一个技术活儿,目前常见的选主方法有基于序号选举的算法( 比如,Bully 算法)、多数派算法(比如,Raft 算法、ZAB 算法)等。答案是,在这种情况下,无法选出主,必须重新投票选举。因此,多数派选主算法通常采用奇数节点。多数派选主算法的核心是少数服从多数,获得投票多的节点胜出。想象一下,如果现在采用偶数节点集群,当两个节点均获得一半投票时,到底应该选谁为主呢?这,也是大家通常看到 ZooKeeper、 etcd、Kubernetes 等开源软件选主均采用奇数节点的一个关键原因。原创 2023-12-24 15:36:47 · 972 阅读 · 0 评论 -
分布式技术之协调与同步
如果有程序使用完资源,则通知协调者,协调者从“排号”的队列里取出排在最前面的请求,并给它发送授权消息。在可靠性和性能有一定保障的情况下,比如中央服务器计算能力强、性能高、故障率低,或者中央服务器进行了主备备份,主故障后备可以立马升为主,且数据可恢复的情况下,集中式算法可以适用于比较广泛的应用场景。集中式算法的优点在于直观、简单、信息交互量少、易于实现,并且所有程序只需和协调者通信,程序之间无需通信。,也可以叫做中央服务器算法。因此,在使用集中式算法的时候,一定要选择性能好、可靠性高的服务器来运行协调者。原创 2023-12-18 09:48:00 · 73 阅读 · 0 评论 -
分布式技术之基础知识
分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。原创 2023-12-18 09:45:51 · 158 阅读 · 0 评论 -
Linux安装Docker和docker-compose
【代码】Linux安装Docker和docker-compose。原创 2022-12-28 12:12:12 · 208 阅读 · 0 评论 -
Linux安装Redis
【代码】Linux安装Redis。原创 2022-12-28 12:10:08 · 134 阅读 · 0 评论 -
K8s基础入门及实战
Pod 是 k8s 系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在 k8s 上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展 Pod 对象功能的,比如控制器对象是用来管控 Pod 对象的,Service 或者Ingress 资源对象是用来暴露 Pod 引用对象的,PersistentVolume 资源对象是用来为Pod提供存储等等,k8s 不会直接处理容器,而是 Pod,Pod 是由一个或多个container 组成。原创 2022-09-03 22:29:30 · 576 阅读 · 0 评论 -
Docker工作中常用知识总结(持续补充中...)
docker镜像实际上是由一层一层的系统文件组成,这种层级的文件系统被称为UnionFS( Union file system 统一文件系统),镜像可以基于dockerfile构建,dockerfile是一个描述文件,里面包含了若干条密令,每条命令都会对基础文件系统创建新的层次结构。在Docker的生命周期中,最核心的两个部分,一个是镜像 Images,一个是容器 Containers。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。简单来说,镜像是文件,容器是进程。.原创 2022-08-15 10:58:45 · 391 阅读 · 0 评论 -
Nginx的常用方法与技巧---附实例
Nginx 是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。原创 2022-08-12 14:53:31 · 256 阅读 · 0 评论 -
Spring 项目统一接口响应和统一异常处理方案
代码】Spring项目统一接口响应和统一异常处理方案。原创 2022-07-23 17:48:39 · 532 阅读 · 2 评论 -
Spring项目整合 RabbitMQ消息队列,动态创建队列与交换机
RabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的,它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求。,初始默认用户名/密码guest/guest。至此,RabbitMQ的安装和配置完成。......原创 2022-07-17 10:05:18 · 7154 阅读 · 7 评论 -
Spring Cloud OpenFeign远程调用不能传递请求头(Header)解决方法
方案二:通过实现 OpenFeign的 接口将从上下文中获取到的请求头信息循环设置到 OpenFeign 请求头中。通过 指定OpenFeign的配置你知道的越多,你不知道的越多。原创 2022-07-10 21:37:27 · 3082 阅读 · 0 评论 -
Spring项目整合 Seata分布式事务解决方案
将resources目录文件拷出的临时容器拷出后,修改,然后有以下两种解决方案:Seata 注册中心和配置中心配置支持 file,nacos, consul, apollo, zk, etcd3 等,可以参考从容器拷贝下来的 官方yaml配置文档,下面是配置nacos的application.yml参考:至此,Seata服务端(TC)已经配置并启动成功了。查看Seata启动日志:配置Seata客户端(TM和RM)引入依赖()undo_log建表、配置参数(仅AT模原创 2022-07-06 18:44:07 · 1661 阅读 · 0 评论 -
Spring项目整合 XXL-JOB分布式任务调度平台
下载项目源码并解压,获取 “调度中心数据库初始化SQL脚本” ()并执行即可。:统一管理任务调度平台上调度任务,负责触发调度执行,并且提供任务管理平台。docker run 会创建一个新的容器并运行一个命令。docker容器启动成功后,访问调度中心访问地址: ,默认用户名:admin和密码:123456。登录成功,如图:至此“调度中心”项目已经部署成功。项目配置部署“执行器”引入对应依赖添加配置类测试xxl-job:BEAN模式(方法形式)Bean模式任务,支持基于原创 2022-07-06 00:05:02 · 1109 阅读 · 2 评论 -
常见的几种主流分布式定时任务
文章目录单点定时任务JDK原生Spring Task基于 Redis 实现通过ZSet的方式**键空间通知的方式分布式定时任务quartzelastic-job-liteLTSxxl-job总结单点定时任务JDK原生自从JDK1.5之后,提供了ScheduledExecutorService代替TimerTask来执行定时任务,提供了不错的可靠性。ScheduledExecutorService继承于ExecutorService,所以本身支持线程池的所有功能。额外还提供了4种方法。/**原创 2022-04-12 14:41:12 · 497 阅读 · 0 评论 -
消息队列之 RabbitMQ(三)
RabbitMQ死信队列死信的概念死信的来源死信实战延时队列什么是延时队列延时队列使用场景RabbitMQ 中的 TTL如何利用RabbitMQ实现延时队列延时队列实战延时队列优化Rabbitmq 插件实现延迟队列总结原创 2021-12-01 09:15:15 · 254 阅读 · 0 评论