突破Java面试(42) - Redis & ZooKeeper两种分布式锁实现的优劣
0 Github
1 面试题
一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?
2 考点分析
一般先问问你zk,然后过渡到zk关联的一些问题,比如分布式锁.
因为在分布式系统开发中,分布式锁的使用场景还是很常见的~
3 Redis分布式锁
官方叫做RedLock算法,是Redis官方支持的分布式锁算法.
这个分布式锁有3个重要的考量点
- 互斥(只能有一个客户端获取锁)
- 不能死锁
- 容错(大部分Redis节点或者这个锁就可以加可以释放)
3.1 最普通的实现方式
创建一个key
SET my:lock 随机值 NX PX 30000
- NX : 只有key不存在的时候才会设置成功
- PX 30000 : 30秒后锁自动释放。别人创建的时候如果发现已经有了就不能加锁了.
释放锁就是删除key
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Aliyun Serverless VSCode Extension 上架并开源
Aliyun Serverless VSCode Extension Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件是结合了函数计算 Fun 工具以及函数计算 SDK ,为用户提供 VSCode 图形化开发调试函数计算以及操作函数计算资源的工具。 通过该插件,您可以: 快速地在本地初始化项目、创建函数 运行、调试本地函数(调试功能目前支持 nodejs、python、php) 拉取云端的服务函数列表,执行云端函数 部署服务函数至云端,并更新相关配置 前置需求 如果您期望使用 Aliyun Serverless VSCode Extension 的所有功能,那么您需要确保系统中有以下组件: VSCode:在 Visu
- 下一篇
突破Java面试(43)-分布式Session方案的实现
0 Github 1 面试题 集群部署时的分布式session如何实现? 2 Session简介 浏览器有个cookie,在一段时间内这个cookie都存在,然后每次发请求过来都带上一个特殊的jsessionid cookie,就根据这个东西,在服务端可以维护一个对应的session域,里面可以放点儿数据。 一般只要你没关掉浏览器,cookie还在,那么对应的那个session就在,但是cookie没了,session就没了。常见于什么购物车之类的东西,还有登录状态保存之类的。 你单块系统的时候这么玩儿session没问题啊,但是你要是分布式系统了呢,那么多的服务,session状态在哪儿维护啊? 其实方法很多,但是常见常用的是两种: 3 实现方案 3.1 Tomcat + Redis 这个其实还挺方便的,就是使用session的代码跟以前一样,
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程