400-616-5551

您所在位置: 首页> 学习课程> java培训 | java架构师爬坑记——从0开始学习分布式锁

java培训 | java架构师爬坑记——从0开始学习分布式锁

发布百知教育 来源:学习课程 2019-09-28

锁的概述


1、为什么要用锁


多任务环境中才需要

任务都需要对同一共享资源进行写操作;

对资源的访问是互斥的

Tips:

任务通过竞争获取锁才能对该资源进行操作(①竞争锁);

当有一个任务在对资源进行更新时(②占有锁),

其他任务都不可以对这个资源进行操作(③任务阻塞),

直到该任务完成更新(④释放锁);


2、锁是什么


3、JDK锁的那些事


5.png


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


java培训


4、分布式锁方案比较


利用mysql的实现

利用redis的实现

利用zookeeper的实现


9.png


5、模板方法模式


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


1、定义锁的接口Lock


2、在AbstractLock模板锁里面实现getLock方法,实现通用的逻辑。


3、不能确实的步骤,作为虚拟方法,甩锅给子类实现。


4、子类只需要聚焦自己的小步骤逻辑,实现tryLock,waitLock,unLock方法。


Zookeeper


1、zookeeper简介


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


2、Zookeeper 数据结构


ZooKeeper数据结构类似Linux


每一个节点都有值


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

管理(存储,读取)用户程序提交的数据;

并为用户程序提供数据节点监听服务;

3、zookeeper 节点类型


有四种类型的znode:


PERSISTENT-持久化目录节点

客户端与zookeeper断开连接后,该节点依旧存在

PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点

客户端与zookeeper断开连接后,该节点依旧存在,只是 Zookeeper给该节点名称 进行顺序编号

EPHEMERAL-临时目录节点

客户端与zookeeper断开连接后,该节点被删除

EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点

客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

watcher(观察者模式)


java培训

观察者模式要素:目标 — 店铺老板(事件源 )

观察者 — 客户(事件消费者 )

事件 — 电话响了


java培训



watcher机制图示


基于Zookpper分布式锁


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


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


总结


这篇关于Zookpper分布式锁视频的简述就到这里结束了,当然仅仅看这里的图文,有些人可能摸不着头脑,我这边为大家准备了完整的视频。有需要的朋友可以需要的都可以关注我后台私信回复“架构资料”获取。


还有一些Java架构视频讲解,需要获取Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术视频教程资料,架构思维导图,和BATJ面试题及答案的,都是免费分享的。


给大家推荐一个程序员学习交流秋秋群:856443934。群里有分享的视频,还有思维导图群公告有视频,都是干货的,你可以下载来看。


一、阅读源码


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


二、分布式架构


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


三、微服务架构


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


四、并发编程


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


五、性能优化


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


六.设计模式


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


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


Maven的,项目管理

Jenkins,持续集成

sonar,代码质量管理

Git的,版本管理


java培训班:http://www.baizhiedu.com/java2019

上一篇:java培训 | 面试官问我:谈谈对Java GC的了解?

下一篇:应届生去公司找个Java程序员的职位需要什么技能?

相关推荐

www.baizhiedu.com

有位老师想和您聊一聊

关闭

立即申请