🛠️

Whiz Tools

Build • Create • Innovate

స్నోఫ్లేక్ IDలను సృష్టించండి మరియు విశ్లేషించండి

విభజిత వ్యవస్థలలో ఉపయోగించే ప్రత్యేక 64-బిట్ గుర్తింపులను, ట్విట్టర్ స్నోఫ్లేక్ IDలను ఉత్పత్తి చేయండి మరియు విశ్లేషించండి. ఈ సాధనం మీకు కొత్త స్నోఫ్లేక్ IDలను సృష్టించడానికి మరియు ఇప్పటికే ఉన్న వాటిని పార్స్ చేయడానికి అనుమతిస్తుంది, వాటి టైమ్‌స్టాంప్, యంత్ర ID మరియు క్రమ సంఖ్య భాగాలపై అవగాహనలను అందిస్తుంది.

స్నోఫ్లేక్ ID జనరేటర్

స్నోఫ్లేక్ ID జనరేటర్

Optional: Unix timestamp in milliseconds (defaults to current time)
📚

డాక్యుమెంటేషన్

Snowflake ID జనరేటర్

పరిచయం

Snowflake ID అనేది విభజిత వ్యవస్థలలో ఉపయోగించే ప్రత్యేక గుర్తింపుగా ఉంది, ఇది మొదట Twitter ద్వారా అభివృద్ధి చేయబడింది. ఈ సాధనం మీరు Snowflake IDs ని ఉత్పత్తి చేయడానికి మరియు విశ్లేషించడానికి అనుమతిస్తుంది, ఇవి టైమ్‌స్టాంప్, యంత్ర ID మరియు క్రమ సంఖ్యలతో కూడిన 64-బిట్ అంతకంటే పెద్ద సంఖ్యలు.

Snowflake IDs ఎలా పనిచేస్తాయి

Snowflake IDs 64-బిట్ అంతకంటే పెద్ద సంఖ్యలు, ఇవి క్రింది విధంగా నిర్మించబడ్డాయి:

  • 41 బిట్: టైమ్‌స్టాంప్ (ఒక కస్టమ్ ఎపోచ్ నుండి మిల్లీసెకండ్లలో)
  • 10 బిట్: యంత్ర ID (డేటా కేంద్ర ID కోసం 5 బిట్, కార్మిక ID కోసం 5 బిట్)
  • 12 బిట్: క్రమ సంఖ్య

ఈ నిర్మాణం ప్రతి యంత్రానికి ప్రతి మిల్లీసెకండులో సుమారు 4,096 ప్రత్యేక IDs ఉత్పత్తి చేయడానికి అనుమతిస్తుంది.

Snowflake ID జనరేటర్ ఉపయోగించడం

  1. (ఐచ్ఛికం) కస్టమ్ ఎపోచ్ ను సెట్ చేయండి (డిఫాల్ట్ Twitter యొక్క ఎపోచ్: 2010-11-04T01:42:54.657Z)
  2. ఒక యంత్ర ID (0-31) మరియు డేటా కేంద్ర ID (0-31) ను నమోదు చేయండి
  3. కొత్త Snowflake ID ను సృష్టించడానికి "జనరేట్" పై క్లిక్ చేయండి
  4. ఉత్పత్తి చేసిన ID మరియు దాని భాగాలు ప్రదర్శించబడతాయి

ఇప్పటికే ఉన్న Snowflake ID ను పార్స్ చేయడానికి, దాన్ని "ID పార్స్" ఫీల్డ్‌లో నమోదు చేసి "పార్స్" పై క్లిక్ చేయండి.

సూత్రం

Snowflake ID ను బిట్‌వైజ్ ఆపరేషన్లను ఉపయోగించి నిర్మించబడింది:

1ID = (timestamp << 22) | (datacenterId << 17) | (workerId << 12) | sequence
2

ఇక్కడ:

  • timestamp అనేది ఎపోచ్ నుండి మిల్లీసెకండ్లలో సంఖ్య
  • datacenterId అనేది 5-బిట్ సంఖ్య (0-31)
  • workerId అనేది 5-బిట్ సంఖ్య (0-31)
  • sequence అనేది 12-బిట్ సంఖ్య (0-4095)

లెక్కింపు

Snowflake ID జనరేటర్ క్రింది దశలను నిర్వహిస్తుంది:

  1. ప్రస్తుత టైమ్‌స్టాంప్‌ను మిల్లీసెకండ్లలో పొందండి
  2. టైమ్‌స్టాంప్ గతంలో ఉపయోగించిన టైమ్‌స్టాంప్ కంటే ఎక్కువగా ఉందని నిర్ధారించండి (ప్రత్యేకత కోసం)
  3. టైమ్‌స్టాంప్ గతంలో ఉన్నట్లయితే, క్రమ సంఖ్యను పెంచండి
  4. క్రమ సంఖ్య ఓవర్‌ఫ్లో అయితే (4096 కు చేరుకుంటే), తదుపరి మిల్లీసెకండ్ కోసం వేచి ఉండండి
  5. చివరి ID ను తయారు చేయడానికి బిట్‌వైజ్ ఆపరేషన్లను ఉపయోగించి భాగాలను కలపండి

ఉపయోగాలు

Snowflake IDs ప్రత్యేకంగా ఉపయోగపడతాయి:

  1. విభజిత వ్యవస్థలు: అనేక యంత్రాల మధ్య సమన్వయం లేకుండా ప్రత్యేక IDs ను ఉత్పత్తి చేయండి
  2. అధిక-పరిమాణ డేటా: పెద్ద డేటాసెట్‌ల కోసం క్రమబద్ధమైన IDs ను సృష్టించండి
  3. మైక్రోసర్వీసులు: వివిధ సేవల మధ్య ప్రత్యేక గుర్తింపులను నిర్ధారించండి
  4. డేటాబేస్ షార్డింగ్: సమర్థవంతమైన షార్డింగ్ కోసం టైమ్‌స్టాంప్ లేదా యంత్ర ID భాగాన్ని ఉపయోగించండి

ప్రత్యామ్నాయాలు

Snowflake IDs శక్తివంతమైనవి అయినప్పటికీ, ఇతర ID జనరేషన్ వ్యవస్థలు ఉన్నాయి:

  1. UUID (యూనివర్సల్ యూనిక్ ఐడెంటిఫైయర్): క్రమబద్ధత అవసరమైతే విభజిత ఉత్పత్తికి ఉపయోగపడుతుంది
  2. ఆటో-ఇంక్రిమెంటింగ్ డేటాబేస్ IDs: సులభమైనవి కానీ ఒక్క డేటాబేస్ ఉదాహరణలకు పరిమితమైనవి
  3. ULID (యూనివర్సల్ యూనిక్ లెక్సికోగ్రాఫికల్ సార్టబుల్ ఐడెంటిఫైయర్): Snowflake కు సమానమైనది, కానీ విభిన్న నిర్మాణంతో

ఎడ్జ్ కేసులు మరియు పరిమితులు

  1. క్లాక్ సమకాలీకరణ: Snowflake IDs వ్యవస్థ సమయాన్ని ఆధారపడి ఉంటాయి. NTP సర్దుబాట్లు లేదా డే‌లైట్ సేవింగ్ సమయ మార్పుల కారణంగా క్లాక్ వెనక్కి వెళ్లినట్లయితే, ID ఉత్పత్తిలో సమస్యలు ఏర్పడవచ్చు.

  2. సంవత్సరం 2038 సమస్య: 41-బిట్ టైమ్‌స్టాంప్ 2079లో ఓవర్‌ఫ్లో అవుతుంది (Twitter ఎపోచ్‌ను అనుసరించి). Snowflake IDs ను ఉపయోగించే వ్యవస్థలు ఈ సందర్భాన్ని పరిగణనలోకి తీసుకోవాలి.

  3. యంత్ర ID కోలిషన్స్: పెద్ద విభజిత వ్యవస్థలలో, ప్రత్యేక యంత్ర IDs ను నిర్ధారించడం కష్టంగా ఉండవచ్చు మరియు అదనపు సమన్వయం అవసరం కావచ్చు.

  4. క్రమం ఓవర్‌ఫ్లో: అత్యంత అధిక-పరిమాణ దృశ్యాలలో, 4096 క్రమాలను మిల్లీసెకండ్లలో తీరుస్తుంది, ఇది ఆలస్యం కలిగించవచ్చు.

  5. యంత్రాల మధ్య అప్రతిఘాతత్వం: ఒకే యంత్రంలో IDs అప్రతిఘాతంగా పెరుగుతున్నప్పటికీ, అనేక యంత్రాల మధ్య అవి ఖచ్చితంగా అప్రతిఘాతంగా ఉండకపోవచ్చు.

చరిత్ర

Snowflake IDs 2010లో Twitter ద్వారా ప్రవేశపెట్టబడ్డాయి, ఇవి విభజిత, టైమ్-సార్టబుల్ ప్రత్యేక గుర్తింపుల అవసరాన్ని తీర్చడానికి. తరువాత, ఇవి అనేక ఇతర కంపెనీలు మరియు ప్రాజెక్టులు స్వీకరించబడ్డాయి మరియు అనుకూలీకరించబడ్డాయి.

ఉదాహరణలు

ఇక్కడ వివిధ భాషలలో Snowflake ID జనరేటర్ల యొక్క అమలు ఉన్నాయి:

1class SnowflakeGenerator {
2  constructor(epoch = 1288834974657, datacenterIdBits = 5, workerIdBits = 5, sequenceBits = 12) {
3    this.epoch = BigInt(epoch);
4    this.datacenterIdBits = datacenterIdBits;
5    this.workerIdBits = workerIdBits;
6    this.sequenceBits = sequenceBits;
7    this.maxDatacenterId = -1n ^ (-1n << BigInt(datacenterIdBits));
8    this.maxWorkerId = -1n ^ (-1n << BigInt(workerIdBits));
9    this.sequenceMask = -1n ^ (-1n << BigInt(sequenceBits));
10    this.workerIdShift = BigInt(sequenceBits);
11    this.datacenterIdShift = BigInt(sequenceBits + workerIdBits);
12    this.timestampLeftShift = BigInt(sequenceBits + workerIdBits + datacenterIdBits);
13    this.sequence = 0n;
14    this.lastTimestamp = -1n;
15  }
16
17  nextId(datacenterId, workerId) {
18    let timestamp = this.currentTimestamp();
19
20    if (timestamp < this.lastTimestamp) {
21      throw new Error('Clock moved backwards. Refusing to generate id');
22    }
23
24    if (timestamp === this.lastTimestamp) {
25      this.sequence = (this.sequence + 1n) & this.sequenceMask;
26      if (this.sequence === 0n) {
27        timestamp = this.tilNextMillis(this.lastTimestamp);
28      }
29    } else {
30      this.sequence = 0n;
31    }
32
33    this.lastTimestamp = timestamp;
34
35    return ((timestamp - this.epoch) << this.timestampLeftShift) |
36           (BigInt(datacenterId) << this.datacenterIdShift) |
37           (BigInt(workerId) << this.workerIdShift) |
38           this.sequence;
39  }
40
41  tilNextMillis(lastTimestamp) {
42    let timestamp = this.currentTimestamp();
43    while (timestamp <= lastTimestamp) {
44      timestamp = this.currentTimestamp();
45    }
46    return timestamp;
47  }
48
49  currentTimestamp() {
50    return BigInt(Date.now());
51  }
52}
53
54// ఉపయోగం
55const generator = new SnowflakeGenerator();
56const id = generator.nextId(1, 1);
57console.log(`Generated Snowflake ID: ${id}`);
58

చిత్రణ

ఇది Snowflake ID నిర్మాణానికి దృశ్య ప్రతినిధి:

టైమ్‌స్టాంప్ (41 బిట్) యంత్ర ID (10 బిట్) క్రమం (12 బిట్)

64-బిట్ Snowflake ID నిర్మాణం

సూచనలు

  1. "Snowflakeని ప్రకటించడం." Twitter ఇంజనీరింగ్ బ్లాగ్, https://blog.twitter.com/engineering/en_us/a/2010/announcing-snowflake
  2. "Snowflake ID." వికీపీడియా, https://en.wikipedia.org/wiki/Snowflake_ID
  3. "మైక్రోసర్వీసుల్లో విభజిత ID ఉత్పత్తి." మీడియం, https://medium.com/swlh/distributed-id-generation-in-microservices-b6ce9a8dd93f
🔗

సంబంధిత సాధనాలు

మీ పని ప్రవాహానికి ఉపయోగకరమైన మరిన్ని సాధనాలను కనుగొనండి

UUID జనరేటర్: ప్రత్యేక గుర్తింపులను సృష్టించండి

ఈ సాధనాన్ని ప్రయత్నించండి

నానో ఐడీ జనరేటర్ - భద్ర, ప్రత్యేక, URL-స్నేహపూర్వక గుర్తింపులు

ఈ సాధనాన్ని ప్రయత్నించండి

యాదృచ్ఛిక ప్రాజెక్ట్ పేరు జనరేటర్

ఈ సాధనాన్ని ప్రయత్నించండి

వెబ్ అభివృద్ధి పరీక్షకు యాదృచ్ఛిక యూజర్ ఏజెంట్ జనరేటర్

ఈ సాధనాన్ని ప్రయత్నించండి

యాదృచ్ఛిక API కీ జనరేటర్: భద్రతా 32-అక్షరాల స్ట్రింగ్స్ సృష్టించండి

ఈ సాధనాన్ని ప్రయత్నించండి

పరీక్షల కోసం చట్టపరమైన CPF సంఖ్యలను ఉత్పత్తి చేయండి

ఈ సాధనాన్ని ప్రయత్నించండి

యాదృచ్ఛిక స్థానం ఉత్పత్తి: ప్రపంచ సమన్వయ సృష్టికర్త

ఈ సాధనాన్ని ప్రయత్నించండి

MD5 హాష్ జనరేటర్

ఈ సాధనాన్ని ప్రయత్నించండి

KSUID జనరేటర్: కాలం-సర్దుబాటు కీలు ఉత్పత్తి చేయండి

ఈ సాధనాన్ని ప్రయత్నించండి

బేబీ పేరు జనరేటర్ కేటగిరీలతో - సరైన పేరు కనుగొనండి

ఈ సాధనాన్ని ప్రయత్నించండి