• 谈谈分布式系统中的唯一ID生成


    前言

    我们目前主流的服务端系统都是分布式的架构。业务分布在不同的机器节点上产生数据,数据也存储在不同的机器节点。为了方便标识数据,我们使用 唯一且有序 的ID来标识数据。即:

    • 整个分布式系统中,新生成的ID永远不会产生与之前已经生成的ID重复;
    • 生成的所有ID可以根据生成的时间进行排序(生成时间晚的排序顺序靠后)

    我们来看一下市面上的几种主流的ID生成方案。

    一、Mysql 集群

    由于我们的讨论前提是分布式架构的系统,所以这里的 Mysql 我们默认是集群版。

    众所周知,Mysql 有自带的唯一ID机制,即自增主键,可以保证在同一个数据库中,表内生成的每一条记录都是唯一且有序的。

    但是如果放在分布式系统里面,我们用分库/分表的架构存储记录, 那就会导致在系统中产生重复的ID 。

    如下图,表1 2 3都是存储相同记录的不同表(可以在同一个数据库里,也可以在不同数据库里),表1 2 3都会产生id相同的数据。

    为了解决这个问题,mysql 官方支持数据库 ID 生成时设置步长,可以保证不同数据库中相同表的id唯一性。

  • 相关阅读:
    Linux命令
    逍遥自在学C语言 | 指针陷阱-空指针与野指针
    FW Read protection in code level
    Python的安装与测试(windows为例)
    前后缀分解
    PAT A1017 Queueing at Bank
    【无标题】
    Java: Proxy Patterns
    Java中的泛型
    通义千问, 文心一言, ChatGLM, GPT-4, Llama2, DevOps 能力评测
  • 原文地址:https://blog.csdn.net/m0_71777195/article/details/127068953