架构爬坑记——从0开始学习分布式锁

锁的概述

1、为什么要用锁

  • 多任务环境中才需要
  • 任务都需要对同一共享资源进行写操作;
  • 对资源的访问是互斥的 Tips: 任务通过竞争获取锁才能对该资源进行操作(①竞争锁); 当有一个任务在对资源进行更新时(②占有锁), 其他任务都不可以对这个资源进行操作(③任务阻塞), 直到该任务完成更新(④释放锁);

2、锁是什么

3、JDK锁的那些事

JVM锁解决不了分布式环境多任务对共享资源竞争的协同操作问题!

4、分布式锁方案比较

  • 利用mysql的实现
  • 利用redis的实现
  • 利用zookeeper的实现

5、模板方法模式

——在父类中编排主流程,将步骤实现延迟到子类去实现。

1、定义锁的接口Lock 2、在AbstractLock模板锁里面实现getLock方法,实现通用的逻辑。 3、不能确实的步骤,作为虚拟方法,甩锅给子类实现。 4、子类只需要聚焦自己的小步骤逻辑,实现tryLock,waitLock,unLock方法。

Zookeeper

1、zookeeper简介

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务

2、Zookeeper 数据结构

  • ZooKeeper数据结构类似Linux
  • 每一个节点都有值

zookeeper在底层其实只提供了两个功能

  • 管理(存储,读取)用户程序提交的数据;
  • 并为用户程序提供数据节点监听服务;

3、zookeeper 节点类型

有四种类型的znode:

  1. PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在
  2. PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是 Zookeeper给该节点名称 进行顺序编号
  3. EPHEMERAL-临时目录节点 客户端与zookeeper断开连接后,该节点被删除
  4. EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

watcher(观察者模式)

观察者模式要素:

  • 目标 — 店铺老板(事件源 )
  • 观察者 — 客户(事件消费者 )
  • 事件 — 电话响了

watcher机制图示

基于Zookpper分布式锁

1、zookeeper 基于同名节点的分布式锁

2、zookeeper相互监听的分布式锁

总结

这篇关于Zookpper分布式锁视频的简述就到这里结束了,当然仅仅看这里的图文,有些人可能摸不着头脑,我这边为大家准备了完整的视频。有需要的朋友可以需要的都可以加入合作Q群Java进阶之路:908676731,免费获取。 还有一些Java架构视频讲解,需要获取Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术视频教程资料,架构思维导图,和BATJ面试题及答案的,都是免费分享的。

另外,如果想提升自己的技术,这一点是远远不够的。我这里还是把之前那位大佬分享给我的Java架构思维路线知识点分享给大家。 一、阅读源码

阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。在阿里面试中,MyBatis,Spring等框架的底层原理是经常会被问到的

开源框架解析.png

二、分布式架构

阿里巴巴有很多大团队,这种大团队里有很多小团队,到小团队之后,做的业务都不相同,如果想立足成为一线互联网公司中的万能选手,最主流的分布式架构中有很多知识都是必须要去了解与学习的。并且在阿里面试过程中,面试官会问到实际应用场景的问题:比如微服务化、用户量、并发量、业务复杂度以及可扩展程度等,这里不多赘述。本屌提供一个分布式架构的学习思路也是自己目前还在学习中的体系:

高性能架构专题.png

三、微服务架构

微服务是现在互联网架构技术中最火热的话题之一,也是本屌目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术,小编给自己制定了一个微服务技术的学习计划:

微服务架构专题.png

四、并发编程

并发编程几乎是所有互联网公司面试必问问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。目前网上没有系统的全面的并发编程学习大纲,我搜集了很多资料总结出来一个最全面的学习大纲:

并发编程.png

五、性能优化

性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环,本屌在性能优化这一块虽然不能算专家,也可以自信的说是精通了(注意:自己的简历上一定不要写精通xxxx,要不然面试官会怼死你。好在本屌这一块还算自信)

性能优化.jpg

六.设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

设计模式.png

一名开发人员必须有适合自己的兵器,也就是工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。下列是我自己常用的开发工具:

  • Maven的,项目管理
  • Jenkins,持续集成
  • sonar,代码质量管理
  • Git的,版本管理 以上是大佬收集总结的Java架构技术图谱,自己因为比较喜欢技术,所以收集了一些Java高并发、分布式、JVM、spring、源码分析和kafka等架构技术资料,如果你也对技术感兴趣可以来关注我,到裙里来下载这些资料,欢迎大家进裙讨论与学习。

资料领取方式: 这只是一部分,我就不全发上去了,这些资料给了我很大的帮助,现在免费分享给大家!大家可以关注我后加java进阶之路:908676731免费获取 喜欢的朋友可以关注下专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券