分布式
文章平均质量分 71
chuixue24
这个作者很懒,什么都没留下…
展开
-
怎么实现分布式锁
假如我们设置锁过期时间是6秒,正常情况下业务逻辑可以在6秒内处理完成,但是当JVM发生FullGC或者调用第三方服务出现网络延迟,业务逻辑还没处理完,锁已经过期,被删掉,然后被其他线程获取到锁,岂不是要出问题?获取锁的同时,启动一个异步任务,每当业务执行到三分之一时间,也就是6秒中的第2秒的时候,就自动延长锁过期时间,继续延长到6秒,这样就能保证业务逻辑处理完成之前锁不会过期。后面还可能有消息吗?使用Redis实现分布式锁,跟使用MySQL类似,也需要解决实现过程中遇到的各种问题,不过解决方案稍有不同。转载 2023-04-19 11:39:02 · 82 阅读 · 0 评论 -
Zookeeper原理
在了解Zookeeper之前,需要对分布式相关知识有一定了解,什么是分布式系统呢?通常情况下,单个物理节点很容易达到性能,计算或者容量的瓶颈,所以这个时候就需要多个物理节点来共同完成某项任务,一个分布式系统的本质是分布在不同网络或计算机上的程序组件,彼此通过信息传递来协同工作的系统,而Zookeeper正是一个分布式应用协调框架,在分布式系统架构中有广泛的应用场景。1. 什么是Zookeeper?官方文档上这么解释zookeeper,它是一个分布式协调框架,是Apache Hadoop 的一原创 2022-03-31 13:48:52 · 2496 阅读 · 0 评论 -
《分布式技术原理与算法解析》总结四:分布式通信技术
分布式的本质就是多进程协作,共同完成任务,彼此之间肯定需要通信1 远程调用不同机器中运行的进程之间的相互通信,常用的是RPC,这个大家应该都懂,不说了~大家可以看看dubbo,内部就是RPC+注册中心实现的2 发布订阅RPC进程之间是直接交互的,当进程比较多时,会导致进程维护通信的复杂度非常高,且一个进程通信接口改变,与其通信的进程都会受到影响;随着业务和分布式计算规模的逐渐增大和复杂化,出现了专门的异步通信模式,也就是消息发布订阅模式和消息队列模式,首先讲解发布订阅原理:生产者消转载 2022-03-16 14:14:27 · 548 阅读 · 0 评论 -
《分布式技术原理与算法解析》总结三:分布式计算技术
调度架构中的两层调度的第二层调度是由框架完成的,通常就是计算框架,比如 Hadoop、Spark 等;程序员基于这些计算框架,可以完成不同类型和规模的计算。分布式计算的本质就是在分布式环境下,多个进程协同完成一件复杂的事情;每个进程各司其职,完成自己的工作后,再交给其他进程去完成其他工作;对于没有依赖的工作,进程间是可以并行执行的。1 MapReduce核心思想:分而治之,JDK的Fork-Join也是此思想的框架步骤:1 分解原问题(Map):将原问题分解为若干个规模较小,相转载 2022-03-16 11:56:39 · 876 阅读 · 0 评论 -
《分布式技术原理与算法解析》二-二:分布式资源管理与负载调度之分布式调度架构
从2-1中可以晓得分布式体系结构的目的是将多个服务器资源管理起来,寻找合适的服务器去执行用户任务。那什么是合适的服务器呢?衡量一个服务器是否合适会涉及很多条件或约束,比如在一些场景下,任务存在优先级,当需要执行多个任务的时候,通常需要满足优先级高的任务优先执行的条件,但在这些条件中,服务器资源能够满足用户任务对资源的诉求是必须的。而为用户任务寻找合适的服务器这个过程,在分布式领域中叫作调度;在分布式体系结构中,调度器就是一个非常重要的组件,它通常会提供多种调度策略,负责完成具体的调度工作。1转载 2022-03-16 10:33:12 · 489 阅读 · 0 评论 -
《分布式技术原理与算法解析》二-一: 分布式资源管理与负载调度之分布式体系结构
云可以把多个服务器管理起来,作为一个统一的资源提供服务服务器如何组织,就是分布式体系结构的范畴1 集中式结构概念:由一台或多台服务器组成中央服务器,系统内的所有数据都存储在中央服务器中,系统内所有的业务也均先由中央服务器处理;多个节点服务器与中央服务器连接,并将自己的信息汇报给中央服务器,由中央服务器统一进行资源和任务调度:中央服务器根据这些信息,将任务下达给节点服务器;节点服务器执行任务,并将结果反馈给中央服务器。场景:Google Borg、K8S、MesosMas.转载 2022-03-16 09:43:18 · 128 阅读 · 0 评论 -
《分布式技术原理与算法解析》总结二:分布式协调与同步
1 分布式互斥对于同一共享资源,要求同一时刻只能有一个程序能够访问,防止出错1.1 集中式算法引入一个协调者程序,得到一个分布式互斥算法:每个程序在需要访问临界资源时,先给协调者发送一个请求;如果当前没有程序使用这个资源,协调者直接授权请求程序访问,否则,按照FIFO规则进行排队等待;如果有程序使用完资源,则通知协调者,协调者从队列里取出排在最前面的请求,并给它发送授权消息,拿到授权消息的程序,可以直接去访问临界资源一个程序完成一次临界资源访问,需要如下几个流程和消息交互(三次):转载 2022-03-14 18:27:42 · 603 阅读 · 0 评论 -
《分布式技术原理与算法解析》总结一:分布式技术总览
1 分布式体系如下图:分布式资源池化、分布式通信、分布式数据存储与管理、分布式计算四大体系的划分符合业务架构设计的一般规律:“在一定资源上,进行一定通信,通过一定计算,完成一定数据的加工和处理,从而对外提供特定的服务”而在分布式环境下,无论是资源、通信、数据还是计算,都需要去解决协同、调度、追踪高可用、部署的问题2 什么是分布式让我们从最原始的架构开始演变单机模式:穷逼模式(穷逼:???老子就那么点用户,花那么多钱干啥?概念:所有应用程序和数据均部署在一台电脑或服务器上,由一台计算转载 2022-03-14 17:26:14 · 903 阅读 · 0 评论 -
Zookeeper典型使用场景
1. Zookeeper 非公平锁/公平锁/共享锁 2. Leader 选举在分布式场景中的应用 3. Spring Cloud Zookeeper注册中心Zookeeper分布式锁Zookeeper 分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下,性能会下降的比较厉害,主要原因是,所有的连接 都在对同一个节点进行监听,当服务器检测到删除事件时,要通知所有的连接,所有的连接同时 收到事件,再次并发竞争,这就是羊群效应。这种加锁方式是非公平锁的具体实现:如何避免原创 2021-11-01 12:44:06 · 1044 阅读 · 0 评论 -
redission分布式锁续期流程
原创 2021-09-11 16:57:59 · 626 阅读 · 0 评论 -
raft协议
http://thesecretlivesofdata.com/raft/以上是关于raft协议介绍的一个动画,很便于理解。原创 2021-03-22 19:46:55 · 112 阅读 · 0 评论 -
浅析Zookeeper的一致性原理
zookeeper(简称zk),顾名思义,为动物园管理员的意思,动物对应服务节点,zk是这些节点的管理者。在分布式场景中,zk的应用非常广泛,如:数据发布/订阅、命名服务、配置中心、分布式锁、集群管理、选主与服务发现等等。这不仅得益于zk类文件系统的数据模型和基于Watcher机制的分布式事件通知,也得益于zk特殊的高容错数据一致性协议。这里的一致性,是指数据在多个副本之间保持一致的特性。分布式环境里,多个副本处于不同的节点上,如果对副本A的更新操作,未同步到副本B上,外界获取数据时,A与B的返回结...转载 2021-03-22 18:42:13 · 322 阅读 · 0 评论 -
redis分布式锁源码
public class DistributeLockByRedis implements DistributeLock { private static Logger log = LoggerFactory.getLogger(DistributeLockByRedis.class); private static final Long RELEASE_SUCCESS = 1L; private static final String RELEASE_SCRIPT = "if redis...原创 2020-12-16 18:00:09 · 177 阅读 · 0 评论 -
分布式定时框架对比(elastic-job , xxl-job ,quartz , saturn, opencron , antares)
1. 什么是分布式定时任务把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。2. 常见开源方案elastic-job,xxl-job ,quartz , saturn, opencron ,antareselastic-jobelastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Clou...转载 2020-11-27 11:52:07 · 1632 阅读 · 1 评论 -
dubbo协议下的单一长连接与多线程并发如何协同工作
在dubbo中描述消费者和提供者之间采用的是单一长连接,那么如果消费者端是高并发多线程模型的web应用,单一长连接如何解决多线程并发请求问题呢?其实如果不太了解socket或者多线程编程的相关知识,不太容易理解这个问题。传统的最简单的RPC方式,应该是为每次远程调用请求创建一个对应的线程,我们先不说这种方式的缺点。至少优点很明显,就是简单。简单体现在哪儿?通信双方一对一(相比NIO来说)。通俗点来说,socket通信的双方发送和接受数据不会被其它(线程)干扰,这种干扰不同于数数据包的“粘包问题转载 2020-08-26 12:58:52 · 857 阅读 · 0 评论 -
CAP理论中的P理解
分布式领域CAP理论, Consistency(一致性), 数据一致更新,所有数据变动都是同步的 Availability(可用性), 好的响应性能 Partition tolerance(分区容错性) 可靠性更具体一点说:1、一致性:读操作总能读取到之前完成的写操作,满足这个条件的系统称为强一致系统,这里的“之前”一般对同一个客户端而言。2、可用性:读写操作在单台机器发生故障的时候仍然能够进行,...转载 2018-05-15 16:00:27 · 1036 阅读 · 0 评论 -
Redis分布式锁的正确实现方式
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足...转载 2018-05-22 13:42:21 · 155 阅读 · 0 评论 -
分布式事务,解决方案
前言最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行CAP的下一阶段的开发工作,不过目前已经告一段落了。接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事...转载 2019-03-19 13:21:13 · 117 阅读 · 0 评论 -
Apache Curator之InterProcessMutex源码分析(四)
上篇文章通过秒购的例子对InterProcessMutex锁有了初步认识,本文将通过对源码进行分析带你进入分布式锁的世界。老规矩先上图,为了更清晰的了解获取锁,释放锁的过程,下图简化了一些细节,使整个流程更加通畅。下面将逐个方法去分析。InterProcessMutex.acquire() 1 @Override //获得分布式锁,阻塞 2 ...转载 2019-08-23 16:21:54 · 391 阅读 · 0 评论 -
Apache Curator之InterProcessMutex抢购案例(三)
上一节讲了Apache Curator之分布式锁原理(二),在分析InterProcessMutex源码之前,我们先通过一个简单的手机抢购案例更深入理解分布式锁的原理。废话不多说,先上代码:手机实体Bean类Phone.java:很简单,只有一个number字段,模拟手机库存数量。 1 package com.youguu.skill; 2 3 public class Pho...转载 2019-08-23 11:40:57 · 290 阅读 · 0 评论 -
cap理论
一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就...转载 2018-05-15 15:59:31 · 158 阅读 · 0 评论