当前位置:   article > 正文

分布式系统架构系列讲解三十一(可扩展 3):全局流水号

分布式系统架构系列讲解三十一(可扩展 3):全局流水号

分布式系统架构系列讲解 - 总目录

一、简介

在数据分片中,不管是普通hash、一致性hash还是range based,都要基于某个key进行hash运算,然后根据计算值进行分片。

Key一般采用基于记录的特征值,这个特征值在不同的框架中有不同的叫法,比如MongoDB中的sharding key (https://docs.mongodb.com/manual/core/sharding-shard-key/),Oracle中的Partition Key(https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm)。一般来讲,特征值的选取应当具有区分度。比如,在分布式调度系统中,通常会为每个子任务生成一个全局唯一的流水号,由任务控制者通过对流水号进行hash运算,将其分配给Job Executor(负责子任务的执行)。

对于流水号的生成,读者肯定不会陌生,比如数据库的自增主键、uuid等都是生成流水号的方式。但是数据库自增主键只能保证单个DB实例内的单表唯一,uuid则利用了mac地址,缺少规律、可读性及安全性。我们希望的流水号应该满足以下特性:

  • 分布式系统内全局唯一
  • 趋势递增

二、数据库ID表

基于数据库ID表,生成全局流水号,是一种比较常见的方式,以Mysq

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/519516
推荐阅读
相关标签
  

闽ICP备14008679号