java-lock

java版本的用Zookeeper实现的分布式锁

代码已经测过,可以直接使用!

#业务场景

在分布式情况,生成全局订单号ID

生成订单号方案

使用时间戳

使用UUID

推特 (Twitter) 的 Snowflake 算法——用于生成唯一 ID

#产生问题

在分布式(集群)环境下,每台JVM不能实现同步,在分布式场景下使用时间戳生成订单号可能会重复

#分布式情况下,怎么解决订单号生成不重复

使用分布式锁

提前生成好,订单号,存放在redis取。获取订单号,直接从redis中取。

#使用分布式锁生成订单号技术

1.使用数据库实现分布式锁

缺点:性能差、线程出现异常时,容易出现死锁

2.使用redis实现分布式锁

缺点:锁的失效时间难控制、容易产生死锁、非阻塞式、不可重入

3.使用zookeeper实现分布式锁

实现相对简单、可靠性强、使用临时节点,失效时间容易控制

什么是分布式锁

分布式锁一般用在分布式系统或者多个应用中,用来控制同一任务是否执行或者任务的执行顺序。在项目中,部署了多个tomcat应用,在执行定时任务时就会遇到同一任

务可能执行多次的情况,我们可以借助分布式锁,保证在同一时间只有一个tomcat应用执行了定时任务

#使用Zookeeper实现分布式锁

#Zookeeper实现分布式锁原理

使用zookeeper创建临时序列节点来实现分布式锁,适用于顺序执行的程序,大体思路就是创建临时序列节点,找出最小的序列节点,获取分布式锁,程序执行完成之后此序列节点消失,通过watch来监控节点的变化,从剩下的节点的找到最小的序列节点,获取分布式锁,执行相应处理,依次类推……

zookeeper java版本号_GitHub - anlijie/java-lock: java版本的用Zookeeper实现的分布式锁相关推荐

  1. java就_GitHub - IammyselfYBX/This_is_how_Java_should_be_learned: 《Java就应该这样学》

    Java就该这么学 说明 这里使用 centos7 的openjdk,不是Oracle的JDK yum search java|grep jdk yum install java-1.8.0-open ...

  2. java 拼音_GitHub - promeG/TinyPinyin: 适用于Java和Android的快速、低内存占用的汉字转拼音库。...

    TinyPinyin 适用于Java和Android的快速.低内存占用的汉字转拼音库. 当前稳定版本:2.0.3 特性 生成的拼音不包含声调,均为大写: 支持自定义词典,支持简体中文.繁体中文: 执行 ...

  3. java仪表盘_GitHub - Jensenczx/Dashboard: 通过Java实现的仪表盘

    #README ###JAVA Dashboard ####Support Type: 线性仪表 扇形仪表 圆形仪表 中间刻度仪表盘 Function: 表盘颜色设置 表盘尺寸大小 表盘单位显示 表盘 ...

  4. java录音机_GitHub - wylGeorge/RuphyRecorder: 基于Java的录音机(使用基于Rest API的页面操作,方便远程控制)...

    RuphyRecorder 配置文件src/main/resources/application.properties server.port=8080 download.passwd=123... ...

  5. java设计前期工作基础和存在的困难_Java秒杀系统实战系列-基于Redisson的分布式锁优化秒杀逻辑...

    本文是"Java秒杀系统实战系列文章"的第十五篇,本文我们将借助综合中间件Redisson优化"秒杀系统中秒杀的核心业务逻辑",解决Redis的原子操作在优化秒 ...

  6. Zookeeper系列四:Zookeeper实现分布式锁、Zookeeper实现配置中心

    一.Zookeeper实现分布式锁 分布式锁主要用于在分布式环境中保证数据的一致性. 包括跨进程.跨机器.跨网络导致共享资源不一致的问题. 1. 分布式锁的实现思路 说明: 这种实现会有一个缺点,即当 ...

  7. 【Zookeeper】基于Zookeeper实现分布式锁

    1.概述 转载:基于Zookeeper实现分布式锁 1.1 为什么使用分布式锁 我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,我们往往采用synchronized或者Lock ...

  8. 分布式锁(一) Zookeeper分布式锁

    什么是Zookeeper? Zookeeper(业界简称zk)是一种提供配置管理.分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而 ...

  9. 基于Zookeeper的分布式锁

    实现分布式锁目前有三种流行方案,分别为基于数据库.Redis.Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开.我们来看下使用Zookeeper如何实现分布式锁. 什么是 ...

最新文章

  1. 《HTML5与CSS3实战指南》——2.5 构建The HTML5 Herald
  2. php mysql找不到文件,php – 在MySQL中找不到outfile创建的文件
  3. 2010年5月21日 下雨了
  4. 如何在敏捷框架下做好工作交接
  5. 为Visual C++ 6.0添加批量注释和取消批量注释功能
  6. 双循环格局对话国际农民丰收节交易会 谋定农业贸易高质量
  7. 怎样搭建Android开发平台(转)
  8. 二本院校女毕业生,想去北漂,求建议
  9. Linux MPLS功能详解
  10. 11个好用的黑科技资源搜索网站
  11. 前馈控制与反馈控制对比
  12. wps转html乱码,wps转换成word后乱码
  13. Arduino ESP8266 AP Web 服务器示例程序
  14. 如何使用gitee(码云)提交,拉取管理项目代码
  15. 给在读研究生+未来要读研同学们的一封受益匪浅的信
  16. 详解磁盘配额的设置方法
  17. iscroll4升级到iscroll5全攻略笔记
  18. 思科 计算机网络 第6章测试考试 答案
  19. LOGO设计中出现文字背后的意义
  20. Redis_学习笔记

热门文章

  1. ElasticSearch CRUL操作
  2. threejs 绘制地球、飞机、轨迹
  3. OBS在双显卡笔记本上捕获不到显示器(窗口黑屏)
  4. java 狼捉羊游戏背景_Js 写了一个 “狼吃羊” 小游戏。
  5. 用计算机术语赞美老师,关于老师的好句子 关于歌颂老师的句子
  6. 域名解析文件异常如何解决?
  7. Linux 搭建Kafka集群,最新教程,细到极致
  8. 查看Ubuntu版本号和内存等信息
  9. 网络安全漏洞分析与漏洞复现
  10. 漏洞分析——二进制漏洞