分布式发号器

可伸缩服务架构-框架与中间件 学习笔记

一些分布式全局唯一id 方案简介。

基本需求

  • 全局唯一性
  • 粗略有序
    • 在秒级别有序、在毫秒级别有序
  • 可反解
    • 可以通过id 获取相关信息 (例如时间信息、工作组、机器信息等)
  • 可制造
    • 可以进行手工处理
  • 高可用
    • 一台发生器出问题,可以使用别的替代,或者请求转移
  • 高性能
    • 性能要达到10000/s 单台机器
  • 可伸缩性
    • 业务是会增长的,需要有良好的可扩展性

可以选择的方案

  • UUID uuid 可以保证 ID 的唯一性。但是,有如下缺点
    • 时间内容缺失
    • 长度比较长, 数据库占用空间较大
    • 不具有有序性, 数据库插入不友好
  • 数据库方案 通过设置步长、数据库自增,保证唯一性
    • 对数据库有一定依赖, 有性能问题
    • 步长固定,水平扩展比较困难
    • 不同数据库,管理困难
  • snowflake 项目
0%