热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分布式ID业界解决方案

分布式ID业界解决方案分布式ID分布式ID唯一身份标识类比身份证,引出分布式ID:AtomicIntegerAtomicLong线程对外看是唯一的

 

分布式ID业界解决方案

 

分布式ID


  • 分布式
  • ID 唯一身份标识

在这里插入图片描述
类比身份证,引出分布式ID:
在这里插入图片描述

AtomicInteger / AtomicLong 线程对外看是唯一的

资源征用的场景如何保证唯一:锁
乐观锁 / 悲观锁

解决目标

缓存+锁细粒度化+无锁,保证全局唯一即可

下面方法基本都是互相借鉴的
在这里插入图片描述
基于UUID生成唯一ID
逻辑主键、物理主键:id是int自增主键,uuid是普通的varchar列
名字空间:国家-地区
不能使用IP代替MAC(局域网可以,广域网不行:NAT)
可以使用NAT转换IP地址
在这里插入图片描述
UUID生成策略
UID是用户ID,GID是用户组 / 线程组ID
随机数算法:数论当中的线性同余,保证每个值的概率分布接近同一个值,不是真正的随机数
在这里插入图片描述
Java的UUID生成策略,用的是下图中的 version 4
在这里插入图片描述
在这里插入图片描述

NAT 网络地址转换

NAT名字很准确,网络地址转换,就是替换IP报文头部的地址信息。NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力。
必须先建立路由表,然后进行转发
用来进行IP地址不够用的问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单机版主键自增方案

现在没人用了,Redis都比这个方法好
在这里插入图片描述
每台机器设置不同的初始值,且步长和机器数相等。
此方法想想都觉得难受…而且拓展性不好
在这里插入图片描述
两台机器同时申请号段的时候,怎么保证号段唯一?用乐观锁
在这里插入图片描述
用redis实现分布式id,性能比用db的方案好很多
可以和上面号段的方法结合使用
存在异步复制的问题,如果业务不能够容忍,去修改redis源码,改成同步复制,但是性能会下降
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  •  

推荐阅读
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 高效的JavaScript异步资源加载解决方案
    本文探讨了如何通过异步加载技术处理网页中大型第三方插件的加载问题,避免将大文件打包进主JS文件中导致的加载时间过长,介绍了实现异步加载的具体方法及其优化。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何将个人经历,特别是非传统的职业路径,转化为职业生涯中的优势。通过作者的亲身经历,展示了舞蹈生涯对商业思维的影响。 ... [详细]
  • 本文详细介绍了PostgreSQL与MySQL在SQL语法上的主要区别,包括如何使用COALESCE替代IFNULL、金额格式化的方法、别名处理以及日期处理等关键点。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
author-avatar
瓜妞妹妹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有