IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 分布式ID解决?案 -> 正文阅读

[大数据]分布式ID解决?案

为什么需要分布式ID(分布式集群环境下的全局唯?ID)

在这里插入图片描述

解决方案

  1. UUID(可以?)
    UUID 是指Universally Unique Identifier,翻译为中?是通?唯?识别码产?重复 UUID 并造成错误的情况?常低,是故?可不必考虑此问题。
    Java中得到?个UUID,可以使?java.util包提供的?法
public class MyTest {
   public static void main(String[] args) {
   System.out.println(java.util.UUID.randomUUID().toString());
 }
}
  • 独?数据库的?增ID
    ?如A表分表为A1表和A2表,那么肯定不能让A1表和A2表的ID?增,那么ID怎么获取呢?我们可以单独的创建?个Mysql数据库,在这个数据库中创建?张表,这张表的ID设置为?增,其他地?需要全局唯?ID的时候,就模拟向这个Mysql数据库的这张表中模拟插??条记录,此时ID会?增,然后我们可以通过Mysql的select last_insert_id() 获取到刚刚这张表中?增?成的ID.
    缺点
    使?独?的Mysql实例?成分布式id,虽然可?,但是性能和可靠性都不够好,因为你需要代码连接到数据库才能获取到id,性能?法保障,另外mysql数据库实例挂掉了,那么就?法获取分布式id了。
  • SnowFlake 雪花算法(可以?,推荐)
    雪花算法是Twitter推出的?个?于?成分布式ID的策略。
    雪花算法是?个算法,基于这个算法可以?成ID,?成的ID是?个long型,那么在Java中?个long型是8个字节,算下来是64bit,如下是使?雪花算法?成的?个ID的?进制形式示意
    在这里插入图片描述
    另外,?切互联?公司也基于上述的?案封装了?些分布式ID?成器,?如滴滴的tinyid(基于数
    据库实现)、百度的uidgenerator(基于SnowFlake)和美团的leaf(基于数据库和SnowFlake)
  • 借助Redis的Incr命令获取全局唯?ID(推荐)
    Redis Incr 命令将 key 中储存的数字值增?。如果 key 不存在,那么 key 的值会先被初始化为 0
    ,然后再执? INCR 操作。
    在这里插入图片描述
    redis安装
    Java代码中使?Jedis客户端调?Reids的incr命令获得?个全局的id
  • 引?jedis客户端jar
<dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>2.9.0</version>
</dependency>
  • Java代码(此处我们就是连接单节点,也不使?连接池)
Jedis jedis = new Jedis("127.0.0.1",6379);
try {
 long id = jedis.incr("id");
 System.out.println("从redis中获取的分布式id为:" + id);
} finally {
 if (null != jedis) {
 jedis.close();
 } 
}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:23:14  更:2021-11-29 16:25:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:27:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码