zoukankan      html  css  js  c++  java
  • Scalable Global ID Generator Design

    此为某国外大公司系统设计面试题目 :)

    参考: http://stackoverflow.com/questions/2671858/distributed-sequence-number-generation

    这里将其中关于 Twitter Snowflake 的部分摘出来:

    Snowflake is a:

    • Networked service, i.e. you make a network call to get a unique ID;
    • which produces 64 bit unique IDs that are ordered by generation time;
    • and the service is highly scalable and (potentially) highly available; each instance can generate many thousand IDs per second, and you can run multiple instances on your LAN/WAN;
    • written in Scala, runs on the JVM. 

    The main ideas are:

    • The most significant 40 or so bits: A timestamp; the generation time of the ID. (We're using the most significant bits for the timestamp to make IDs sort-able by generation time.)

    • The next 14 or so bits: A per-generator counter, which each generator increments by one for each new ID generated. This ensures that IDs generated at the same moment (same timestamps) do not overlap.

    • The last 10 or so bits: A unique value for each generator. Using this, we don't need to do any synchronization between generators (which is extremely hard), as all generators produce non-overlapping IDs because of this value.

  • 相关阅读:
    java 编码问题
    关于时间
    页面
    关于微信
    01-jQuery的介绍
    15-BOM
    14-定时器
    13-JS中的面向对象
    12-关于DOM操作的相关案例
    购物车练习
  • 原文地址:https://www.cnblogs.com/william-cheung/p/5124234.html
Copyright © 2011-2022 走看看