为什么需要分布式锁 Martin Kleppmann是英国剑桥大学的分布式系统的研究员,Martin认为一般我们使用分布式锁有两个场景: 效率:使用分布式锁可以避免不同节点重复相同的工作,这些工作会浪费资源.比如用户付了钱之后有可能不同节点会发出多封短信. 正确性:加分布式锁同样可以避免破坏正确性的发生,如果两个节点在同一条数据上面操作,比如多个节点机器对同一个订单操作不同的流程有可能会导致该笔订单最后状态出现错误,造成损失.[1] 分布式锁的基本要求 通常应用场景,分布式锁应具有如下要求: 1…
分布式的特点 1. 分布式 2. 对等性 3. 并发性 4. 缺乏全局时钟 5. 故障总是会发生 分布式环境的问题 1. 网络不可靠 2. 网络分区 3. 节点故障 CAP理论 一致性 可用性 分区容错性 BASE理论 两阶段提交 阶段1 提交事务请求 1. 事务询问 2. 写事务日志 3. 各参与者向协调者反馈事务询问的响应 阶段2 执行事务commit 1. 发送提交请求 2. 事务提交 3. 反馈事务提交结果 存在问题 1. 同步阻塞 参与者在等待其他参与者响应请求的过程中,不能进行其他操…
利用redis可以实现分布式锁,demo如下: /** * 保存每个线程独有的token */ private static ThreadLocal<String> tokenMap = new ThreadLocal<>(); /** * redis实现分布式可重入锁,并不保证在过期时间内完成锁定内的任务,需根据业务逻辑合理分配seconds * * @param lock * 锁的名称 * @param seconds * 锁定时间,单位 秒 * token * 对于同一个lo…
梳理fabric e2e_cli 测试程序的具体步骤 作者在 hyperledger fabric 1.0.5 分布式部署 (一)中给读者们介绍了如何从零开始部署一个测试的 demo 环境,如果细心的读者可能会留意到,在启动fabric 的服务时,是直接执行network_setup.sh 脚本命令启动服务的. 如果我们打开 network_setup.sh 脚本查看,会发现启动的关键代码如下 function networkUp () { if [ -f "./crypto-config&qu…
一.前言 我们在实现使用Redis实现分布式锁,最开始一般使用SET resource-name anystring NX EX max-lock-time进行加锁,使用Lua脚本保证原子性进行实现释放锁.这样手动实现比较麻烦,对此Redis官网也明确说Java版使用Redisson来实现.小编也是看了官网慢慢的摸索清楚,特写此记录一下.从官网到整合Springboot到源码解读,以单节点为例,小编的理解都在注释里,希望可以帮助到大家!! 二.为什么使用Redisson 1. 我们打开官网 re…
环境是centos6.4-32,hadoop2.2.0 伪分布式文档:http://pan.baidu.com/s/1kTrAcWB 完全分布式文档:http://pan.baidu.com/s/1sjK4gkl 和1.x.0.x有些不同,特别是yarn. 这里面有个小插曲,在完全分布式模式配置yarn的时候必须指定ResourceManager的地址 这个地址在伪分布式模式上不用指定,因为默认地址是0.0.0.0,也就是本地 但是完全分布式模式必须指定,因为不指定slave就不知道哪台是Res…
hadoop+hive-0.10.0完全分布式安装方法 1.jdk版本:jdk-7u60-linux-x64.tar.gz http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260.html 2.hive版本:hive-0.10.0.tar.gz https://archive.apache.org/dist/hive/hive-0.10.0/ 3.hadoop版本:hadoop-2.2.0…
hadoop-2.6.0为分布式安装 伪分布模式集群规划(单节点)------------------------------------------------------------------------------------------------------------------------------------------------------------------------    host        -    ip                -    soft …
基于Hadoop2.2.0版本号分布式云盘的设计与实现 一.前言 在学习了hadoop2.2一个月以来,我重点是在学习hadoop2.2的HDFS.即是hadoop的分布式系统,看了非常久的源代码看的我真的想吐啊,感觉看源代码还是没什么劲,于是心血来潮看到可百度的网盘挺有意思(事实上我一直都在用百度的网盘)对里面的功能的实现非常好奇,于是我就突发奇想,能不能用hadoop来做个呢?答案是肯定的.于是我就開始了,可是实际中,没有人用hadoop来做网盘,由于hadoop不适合存放小文件.当然办法总…
1.选取三台服务器(CentOS系统64位) 114.55.246.88 主节点 114.55.246.77 从节点 114.55.246.93 从节点 之后的操作如果是用普通用户操作的话也必须知道root用户的密码,因为有些操作是得用root用户操作.如果是用root用户操作的话就不存在以上问题. 我是用root用户操作的. 2.修改hosts文件 修改三台服务器的hosts文件. vi /etc/hosts 在原文件的基础最后面加上: 114.55.246.88 Master 114.55.…