🛠️

Whiz Tools

Build • Create • Innovate

स्नोफ्लेक आईडी जनरेटर: अद्वितीय पहचानकर्ता उत्पन्न करें

ट्विटर स्नोफ्लेक आईडी, जो वितरित प्रणालियों में उपयोग किए जाने वाले अद्वितीय 64-बिट पहचानकर्ता हैं, उत्पन्न करें और उनका विश्लेषण करें। यह उपकरण आपको नए स्नोफ्लेक आईडी बनाने और मौजूदा आईडी को पार्स करने की अनुमति देता है, उनके टाइमस्टैम्प, मशीन आईडी और अनुक्रम संख्या घटकों के बारे में जानकारी प्रदान करता है।

स्नोफ्लेक आईडी जनरेटर

स्नोफ्लेक आईडी जनरेटर

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

दस्तावेज़ीकरण

1## स्नोफ्लेक आईडी जनरेटर
2
3### परिचय
4
5स्नोफ्लेक आईडी एक अद्वितीय पहचानकर्ता है जो वितरित प्रणालियों में उपयोग किया जाता है, जिसे मूल रूप से ट्विटर द्वारा विकसित किया गया था। यह उपकरण आपको स्नोफ्लेक आईडी उत्पन्न करने और विश्लेषण करने की अनुमति देता है, जो एक टाइमस्टैम्प, मशीन आईडी और अनुक्रम संख्या से बने 64-बिट पूर्णांक होते हैं।
6
7### स्नोफ्लेक आईडी कैसे काम करती हैं
8
9स्नोफ्लेक आईडी 64-बिट पूर्णांक होते हैं जो निम्नलिखित संरचना में होते हैं:
10
11- 41 बिट: टाइमस्टैम्प (कस्टम युग से मिलीसेकंड)
12- 10 बिट: मशीन आईडी (डेटा सेंटर आईडी के लिए 5 बिट, कार्यकर्ता आईडी के लिए 5 बिट)
13- 12 बिट: अनुक्रम संख्या
14
15यह संरचना प्रति मिलीसेकंड प्रति मशीन लगभग 4,096 अद्वितीय आईडी उत्पन्न करने की अनुमति देती है।
16
17### स्नोफ्लेक आईडी जनरेटर का उपयोग करना
18
191. (वैकल्पिक) एक कस्टम युग सेट करें (डिफ़ॉल्ट ट्विटर का युग: 2010-11-04T01:42:54.657Z)
202. एक मशीन आईडी (0-31) और डेटा सेंटर आईडी (0-31) दर्ज करें
213. एक नया स्नोफ्लेक आईडी बनाने के लिए "जनरेट" पर क्लिक करें
224. उत्पन्न आईडी और इसके घटक प्रदर्शित किए जाएंगे
23
24किसी मौजूदा स्नोफ्लेक आईडी को पार्स करने के लिए, इसे "पार्स आईडी" फ़ील्ड में दर्ज करें और "पार्स" पर क्लिक करें।
25
26### सूत्र
27
28स्नोफ्लेक आईडी को बिटवाइज ऑपरेशनों का उपयोग करके बनाया जाता है:
29
30

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

1
2जहाँ:
3- `timestamp` युग से मिलीसेकंड में समय है
4- `datacenterId` एक 5-बिट पूर्णांक (0-31) है
5- `workerId` एक 5-बिट पूर्णांक (0-31) है
6- `sequence` एक 12-बिट पूर्णांक (0-4095) है
7
8### गणना
9
10स्नोफ्लेक आईडी जनरेटर निम्नलिखित चरणों को पूरा करता है:
11
121. मिलीसेकंड में वर्तमान टाइमस्टैम्प प्राप्त करें
132. सुनिश्चित करें कि टाइमस्टैम्प अंतिम उपयोग किए गए टाइमस्टैम्प से बड़ा है (अद्वितीयता के लिए)
143. यदि टाइमस्टैम्प अंतिम के समान है, तो अनुक्रम संख्या बढ़ाएँ
154. यदि अनुक्रम संख्या ओवरफ्लो होती है (4096 तक पहुँच जाती है), तो अगली मिलीसेकंड का इंतज़ार करें
165. अंतिम आईडी बनाने के लिए घटकों को बिटवाइज ऑपरेशनों का उपयोग करके संयोजित करें
17
18### उपयोग के मामले
19
20स्नोफ्लेक आईडी विशेष रूप से निम्नलिखित में उपयोगी हैं:
21
221. वितरित प्रणालियाँ: बिना समन्वय के कई मशीनों में अद्वितीय आईडी उत्पन्न करें
232. उच्च मात्रा का डेटा: बड़े डेटा सेट के लिए क्रमबद्ध आईडी बनाएं
243. माइक्रोसर्विसेज: विभिन्न सेवाओं में अद्वितीय पहचानकर्ता सुनिश्चित करें
254. डेटाबेस शार्डिंग: कुशल शार्डिंग के लिए टाइमस्टैम्प या मशीन आईडी घटक का उपयोग करें
26
27#### विकल्प
28
29हालांकि स्नोफ्लेक आईडी शक्तिशाली हैं, अन्य आईडी जनरेशन सिस्टम में शामिल हैं:
30
311. UUID (यूनिवर्सली यूनिक आइडेंटिफायर): जब वितरित जनरेशन की आवश्यकता होती है बिना क्रमबद्धता के
322. ऑटो-इंक्रीमेंटिंग डेटाबेस आईडी: सरल लेकिन एकल डेटाबेस इंस्टेंस तक सीमित
333. ULID (यूनिवर्सली यूनिक लेक्सिकोग्राफिकली सॉर्टेबल आइडेंटिफायर): स्नोफ्लेक के समान, लेकिन एक अलग संरचना के साथ
34
35### किनारे के मामले और सीमाएँ
36
371. घड़ी समन्वय: स्नोफ्लेक आईडी सिस्टम समय पर निर्भर करते हैं। यदि घड़ी पीछे की ओर बढ़ती है, तो यह आईडी जनरेशन में समस्याएँ पैदा कर सकती है।
38
392. वर्ष 2038 समस्या: 41-बिट टाइमस्टैम्प 2079 में ओवरफ्लो होगा (मान लेते हुए ट्विटर युग)। स्नोफ्लेक आईडी का उपयोग करने वाले सिस्टम को इस संभावितता के लिए योजना बनानी चाहिए।
40
413. मशीन आईडी टकराव: बड़े वितरित प्रणालियों में, अद्वितीय मशीन आईडी सुनिश्चित करना चुनौतीपूर्ण हो सकता है और अतिरिक्त समन्वय की आवश्यकता हो सकती है।
42
434. अनुक्रम ओवरफ्लो: अत्यधिक उच्च थ्रूपुट परिदृश्यों में, 4096 अनुक्रमों को प्रति मिलीसेकंड समाप्त करना संभव है, जो संभावित रूप से देरी का कारण बन सकता है।
44
455. मशीनों के बीच गैर-गति: जबकि आईडी एकल मशीन पर क्रमिक रूप से बढ़ती हैं, वे कई मशीनों के बीच सख्ती से क्रमिक नहीं हो सकती हैं।
46
47### इतिहास
48
49स्नोफ्लेक आईडी को 2010 में ट्विटर द्वारा वितरित, समय-क्रमबद्ध अद्वितीय पहचानकर्ताओं की आवश्यकता को पूरा करने के लिए पेश किया गया था। तब से, इन्हें कई अन्य कंपनियों और परियोजनाओं द्वारा अपनाया और अनुकूलित किया गया है।
50
51### उदाहरण
52
53यहाँ विभिन्न भाषाओं में स्नोफ्लेक आईडी जनरेटर के कार्यान्वयन हैं:
54
55

javascript class SnowflakeGenerator { constructor(epoch = 1288834974657, datacenterIdBits = 5, workerIdBits = 5, sequenceBits = 12) { this.epoch = BigInt(epoch); this.datacenterIdBits = datacenterIdBits; this.workerIdBits = workerIdBits; this.sequenceBits = sequenceBits; this.maxDatacenterId = -1n ^ (-1n << BigInt(datacenterIdBits)); this.maxWorkerId = -1n ^ (-1n << BigInt(workerIdBits)); this.sequenceMask = -1n ^ (-1n << BigInt(sequenceBits)); this.workerIdShift = BigInt(sequenceBits); this.datacenterIdShift = BigInt(sequenceBits + workerIdBits); this.timestampLeftShift = BigInt(sequenceBits + workerIdBits + datacenterIdBits); this.sequence = 0n; this.lastTimestamp = -1n; }

nextId(datacenterId, workerId) { let timestamp = this.currentTimestamp();

if (timestamp < this.lastTimestamp) {
  throw new Error('घड़ी पीछे की ओर बढ़ गई। आईडी उत्पन्न करने से इनकार किया गया');
}

if (timestamp === this.lastTimestamp) {
  this.sequence = (this.sequence + 1n) & this.sequenceMask;
  if (this.sequence === 0n) {
    timestamp = this.tilNextMillis(this.lastTimestamp);
  }
} else {
  this.sequence = 0n;
}

this.lastTimestamp = timestamp;

return ((timestamp - this.epoch) << this.timestampLeftShift) |
       (BigInt(datacenterId) << this.datacenterIdShift) |
       (BigInt(workerId) << this.workerIdShift) |
       this.sequence;

}

tilNextMillis(lastTimestamp) { let timestamp = this.currentTimestamp(); while (timestamp <= lastTimestamp) { timestamp = this.currentTimestamp(); } return timestamp; }

currentTimestamp() { return BigInt(Date.now()); } }

// उपयोग const generator = new SnowflakeGenerator(); const id = generator.nextId(1, 1); console.log(उत्पन्न स्नोफ्लेक आईडी: ${id});

1
2

python import time import threading

class SnowflakeGenerator: def init(self, datacenter_id, worker_id, sequence=0): self.datacenter_id = datacenter_id self.worker_id = worker_id self.sequence = sequence

    self.last_timestamp = -1
    self.epoch = 1288834974657

    self.datacenter_id_bits = 5
    self.worker_id_bits = 5
    self.sequence_bits = 12

    self.max_datacenter_id = -1 ^ (-1 << self.datacenter_id_bits)
    self.max_worker_id = -1 ^ (-1 << self.worker_id_bits)

    self.worker_id_shift = self.sequence_bits
    self.datacenter_id_shift = self.sequence_bits + self.worker_id_bits
    self.timestamp_left_shift = self.sequence_bits + self.worker_id_bits + self.datacenter_id_bits
    self.sequence_mask = -1 ^ (-1 << self.sequence_bits)

    self._lock = threading.Lock()

def _til_next_millis(self, last_timestamp):
    timestamp = self._get_timestamp()
    while timestamp <= last_timestamp:
        timestamp = self._get_timestamp()
    return timestamp

def _get_timestamp(self):
    return int(time.time() * 1000)

def next_id(self):
    with self._lock:
        timestamp = self._get_timestamp()

        if timestamp < self.last_timestamp:
            raise ValueError("घड़ी पीछे की ओर बढ़ गई। आईडी उत्पन्न करने से इनकार किया गया")

        if timestamp == self.last_timestamp:
            self.sequence = (self.sequence + 1) & self.sequence_mask
            if self.sequence == 0:
                timestamp = self._til_next_millis(self.last_timestamp)
        else:
            self.sequence = 0

        self.last_timestamp = timestamp

        return ((timestamp - self.epoch) << self.timestamp_left_shift) | \
               (self.datacenter_id << self.datacenter_id_shift) | \
               (self.worker_id << self.worker_id_shift) | \
               self.sequence

उपयोग

generator = SnowflakeGenerator(datacenter_id=1, worker_id=1) snowflake_id = generator.next_id() print(f"उत्पन्न स्नोफ्लेक आईडी: {snowflake_id}")

1
2

java import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;

public class SnowflakeGenerator { private final long epoch; private final long datacenterIdBits; private final long workerIdBits; private final long sequenceBits; private final long maxDatacenterId; private final long maxWorkerId; private final long workerIdShift; private final long datacenterIdShift; private final long timestampLeftShift; private final long sequenceMask;

private long datacenterId;
private long workerId;
private long sequence = 0L;
private long lastTimestamp = -1L;

private final Lock lock = new ReentrantLock();

public SnowflakeGenerator(long datacenterId, long workerId) {
    this.epoch = 1288834974657L;
    this.datacenterIdBits = 5L;
    this.workerIdBits = 5L;
    this.sequenceBits = 12L;

    this.maxDatacenterId = ~(-1L << datacenterIdBits);
    this.maxWorkerId = ~(-1L << workerIdBits);

    this.workerIdShift = sequenceBits;
    this.datacenterIdShift = sequenceBits + workerIdBits;
    this.timestampLeftShift = sequenceBits + workerIdBits + datacenterIdBits;
    this.sequenceMask = ~(-1L << sequenceBits);

    if (datacenterId > maxDatacenterId || datacenterId < 0) {
        throw new IllegalArgumentException("datacenterId can't be greater than maxDatacenterId or less than 0");
    }
    if (workerId > maxWorkerId || workerId < 0) {
        throw new IllegalArgumentException("workerId can't be greater than maxWorkerId or less than 0");
    }
    this.datacenterId = datacenterId;
    this.workerId = workerId;
}

public long nextId() {
    lock.lock();
    try {
        long timestamp = timeGen();
        if (timestamp < lastTimestamp) {
            throw new RuntimeException("घड़ी पीछे की ओर बढ़ गई। आईडी उत्पन्न करने से इनकार किया गया");
        }

        if (lastTimestamp == timestamp) {
            sequence = (sequence + 1) & sequenceMask;
            if (sequence == 0) {
                timestamp = tilNextMillis(lastTimestamp);
            }
        } else {
            sequence = 0L;
        }

        lastTimestamp = timestamp;

        return ((timestamp - epoch) << timestampLeftShift) |
               (datacenterId << datacenterIdShift) |
               (workerId << workerIdShift) |
               sequence;
    } finally {
        lock.unlock();
    }
}

private long tilNextMillis(long lastTimestamp) {
    long timestamp = timeGen();
    while (timestamp <= lastTimestamp) {
        timestamp = timeGen();
    }
    return timestamp;
}

private long timeGen() {
    return System.currentTimeMillis();
}

public static void main(String[] args) {
    SnowflakeGenerator generator = new SnowflakeGenerator(1, 1);
    long id = generator.nextId();
    System.out.println("उत्पन्न स्नोफ्लेक आईडी: " + id);
}

}

1
2

ruby require 'time'

class SnowflakeGenerator def initialize(datacenter_id, worker_id, sequence = 0) @datacenter_id = datacenter_id @worker_id = worker_id @sequence = sequence @last_timestamp = -1 @epoch = 1288834974657

@datacenter_id_bits = 5
@worker_id_bits = 5
@sequence_bits = 12

@max_datacenter_id = -1 ^ (-1 << @datacenter_id_bits)
@max_worker_id = -1 ^ (-1 << @worker_id_bits)

@worker_id_shift = @sequence_bits
@datacenter_id_shift = @sequence_bits + @worker_id_bits
@timestamp_left_shift = @sequence_bits + @worker_id_bits + @datacenter_id_bits
@sequence_mask = -1 ^ (-1 << @sequence_bits)

end

def next_id timestamp = (Time.now.to_f * 1000).to_i

raise 'घड़ी पीछे की ओर बढ़ गई' if timestamp < @last_timestamp

if timestamp == @last_timestamp
  @sequence = (@sequence + 1) & @sequence_mask
  timestamp = til_next_millis(@last_timestamp) if @sequence == 0
else
  @sequence = 0
end

@last_timestamp = timestamp

((timestamp - @epoch) << @timestamp_left_shift) |
  (@datacenter_id << @datacenter_id_shift) |
  (@worker_id << @worker_id_shift) |
  @sequence

end

private

def til_next_millis(last_timestamp) timestamp = (Time.now.to_f * 1000).to_i timestamp = (Time.now.to_f * 1000).to_i while timestamp <= last_timestamp timestamp end end

उपयोग

generator = SnowflakeGenerator.new(1, 1) snowflake_id = generator.next_id puts "उत्पन्न स्नोफ्लेक आईडी: #{snowflake_id}"

1
2

php

epoch = 1288834974657; $this->datacenterIdBits = 5; $this->workerIdBits = 5; $this->sequenceBits = 12; $this->maxDatacenterId = -1 ^ (-1 << $this->datacenterIdBits); $this->maxWorkerId = -1 ^ (-1 << $this->workerIdBits); $this->workerIdShift = $this->sequenceBits; $this->datacenterIdShift = $this->sequenceBits + $this->workerIdBits; $this->timestampLeftShift = $this->sequenceBits + $this->workerIdBits + $this->datacenterIdBits; $this->sequenceMask = -1 ^ (-1 << $this->sequenceBits); if ($datacenterId > $this->maxDatacenterId || $datacenterId < 0) { throw new Exception("datacenterId can't be greater than maxDatacenterId or less than 0"); } if ($workerId > $this->maxWorkerId || $workerId < 0) { throw new Exception("workerId can't be greater than maxWorkerId or less than 0"); } $this->datacenterId = $datacenterId; $this->workerId = $workerId; } public function nextId() { $timestamp = $this->timeGen(); if ($timestamp < $this->lastTimestamp) { throw new Exception("घड़ी पीछे की ओर बढ़ गई। आईडी उत्पन्न करने से इनकार किया गया"); } if ($this->lastTimestamp == $timestamp) { $this->sequence = ($this->sequence + 1) & $this->sequenceMask; if ($this->sequence == 0) { $timestamp = $this->tilNextMillis($this->lastTimestamp); } } else { $this->sequence = 0; } $this->lastTimestamp = $timestamp; return (($timestamp - $this->epoch) << $this->timestampLeftShift) | ($this->datacenterId << $this->datacenterIdShift) | ($this->workerId << $this->workerIdShift) | $this->sequence; } private function tilNextMillis($lastTimestamp) { $timestamp = $this->timeGen(); while ($timestamp <= $lastTimestamp) { $timestamp = $this->timeGen(); } return $timestamp; } private function timeGen() { return floor(microtime(true) * 1000); } } // उपयोग $generator = new SnowflakeGenerator(1, 1); $id = $generator->nextId(); echo "उत्पन्न स्नोफ्लेक आईडी: " . $id . "\n";
1
2

csharp using System; using System.Threading;

public class SnowflakeGenerator { private readonly long _epoch; private readonly int _datacenterIdBits; private readonly int _workerIdBits; private readonly int _sequenceBits; private readonly long _maxDatacenterId; private readonly long _maxWorkerId; private readonly int _workerIdShift; private readonly int _datacenterIdShift; private readonly int _timestampLeftShift; private readonly long _sequenceMask;

private readonly long _datacenterId;
private readonly long _workerId;
private long _sequence = 0L;
private long _lastTimestamp = -1L;

private readonly object _lock = new object();

public SnowflakeGenerator(long datacenterId, long workerId)
{
    _epoch = 1288834974657L;
    _datacenterIdBits = 5;
    _workerIdBits = 5;
    _sequenceBits = 12;

    _maxDatacenterId = -1L ^ (-1L << _datacenterIdBits);
    _maxWorkerId = -1L ^ (-1L << _workerIdBits);

    _workerIdShift = _sequenceBits;
    _datacenterIdShift = _sequenceBits + _workerIdBits;
    _timestampLeftShift = _sequenceBits + _workerIdBits + _datacenterIdBits;
    _sequenceMask = -1L ^ (-1L << _sequenceBits);

    if (datacenterId > _maxDatacenterId || datacenterId < 0)
    {
        throw new ArgumentException($"datacenterId can't be greater than {_maxDatacenterId} or less than 0");
    }
    if (workerId > _maxWorkerId || workerId < 0)
    {
        throw new ArgumentException($"workerId can't be greater than {_maxWorkerId} or less than 0");
    }
    _datacenterId = datacenterId;
    _workerId = workerId;
}

public long NextId()
{
    lock (_lock)
    {
        var timestamp = TimeGen();

        if (timestamp < _lastTimestamp)
        {
            throw new Exception("घड़ी पीछे की ओर बढ़ गई। आईडी उत्पन्न करने से इनकार किया गया");
        }

        if (_lastTimestamp == timestamp)
        {
            _sequence = (_sequence + 1) & _sequenceMask;
            if (_sequence == 0)
            {
                timestamp = TilNextMillis(_lastTimestamp);
            }
        }
        else
        {
            _sequence = 0L;
        }

        _lastTimestamp = timestamp;

        return ((timestamp - _epoch) << _timestampLeftShift) |
               (_datacenterId << _datacenterIdShift) |
               (_workerId << _workerIdShift) |
               _sequence;
    }
}

private long TilNextMillis(long lastTimestamp)
{
    var timestamp = TimeGen();
    while (timestamp <= lastTimestamp)
    {
        timestamp = TimeGen();
    }
    return timestamp;
}

private long TimeGen()
{
    return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
}

}

// उपयोग class Program { static void Main(string[] args) { var generator = new SnowflakeGenerator(1, 1); var id = generator.NextId(); Console.WriteLine($"उत्पन्न स्नोफ्लेक आईडी: {id}"); } }

1
2

go package main

import ( "fmt" "sync" "time" )

type SnowflakeGenerator struct { epoch int64 datacenterIdBits uint workerIdBits uint sequenceBits uint maxDatacenterId int64 maxWorkerId int64 workerIdShift uint datacenterIdShift uint timestampLeftShift uint sequenceMask int64

datacenterId int64
workerId     int64
sequence     int64
lastTimestamp int64

lock sync.Mutex

}

func NewSnowflakeGenerator(datacenterId, workerId int64) (*SnowflakeGenerator, error) { g := &SnowflakeGenerator{ epoch: 1288834974657, datacenterIdBits: 5, workerIdBits: 5, sequenceBits: 12, lastTimestamp: -1, }

g.maxDatacenterId = -1 ^ (-1 << g.datacenterIdBits)
g.maxWorkerId = -1 ^ (-1 << g.workerIdBits)

g.workerIdShift = g.sequenceBits
g.datacenterIdShift = g.sequenceBits + g.workerIdBits
g.timestampLeftShift = g.sequenceBits + g.workerIdBits + g.datacenterIdBits
g.sequenceMask = -1 ^ (-1 << g.sequenceBits)

if datacenterId > g.maxDatacenterId || datacenterId < 0 {
	return nil, fmt.Errorf("datacenterId can't be greater than %d or less than 0", g.maxDatacenterId)
}
if workerId > g.maxWorkerId || workerId < 0 {
	return nil, fmt.Errorf("workerId can't be greater than %d or less than 0", g.maxWorkerId)
}
g.datacenterId = datacenterId
g.workerId = workerId

return g, nil

}

func (g *SnowflakeGenerator) NextId() (int64, error) { g.lock.Lock() defer g.lock.Unlock()

timestamp := g.timeGen()

if timestamp < g.lastTimestamp {
	return 0, fmt.Errorf("घड़ी पीछे की ओर बढ़ गई, आईडी उत्पन्न करने से इनकार किया गया")
}

if g.lastTimestamp == timestamp {
	g.sequence = (g.sequence + 1) & g.sequenceMask
	if g.sequence == 0 {
		timestamp = g.tilNextMillis(g.lastTimestamp)
	}
} else {
	g.sequence = 0
}

g.lastTimestamp = timestamp

return ((timestamp - g.epoch) << g.timestampLeftShift) |
	(g.datacenterId << g.datacenterIdShift) |
	(g.workerId << g.workerIdShift) |
	g.sequence, nil

}

func (g *SnowflakeGenerator) tilNextMillis(lastTimestamp int64) int64 { timestamp := g.timeGen() for timestamp <= lastTimestamp { timestamp = g.timeGen() } return timestamp }

func (g *SnowflakeGenerator) timeGen() int64 { return time.Now().UnixNano() / int64(time.Millisecond) }

func main() { generator, err := NewSnowflakeGenerator(1, 1) if err != nil { fmt.Printf("जनरेटर बनाने में त्रुटि: %v\n", err) return }

id, err := generator.NextId()
if err != nil {
	fmt.Printf("आईडी उत्पन्न करने में त्रुटि: %v\n", err)
	return
}

fmt.Printf("उत्पन्न स्नोफ्लेक आईडी: %d\n", id)

}

1
2### चित्र
3
4यहाँ स्नोफ्लेक आईडी संरचना का एक दृश्य प्रतिनिधित्व है:
5
6<svg width="600" height="100" xmlns="http://www.w3.org/2000/svg">
7  <rect x="0" y="0" width="380" height="50" fill="#4299e1"/>
8  <text x="190" y="30" font-family="Arial" fontSize="14" fill="white" textAnchor="middle">टाइमस्टैम्प (41 बिट)</text>
9  
10  <rect x="380" y="0" width="90" height="50" fill="#48bb78"/>
11  <text x="425" y="30" font-family="Arial" fontSize="14" fill="white" textAnchor="middle">मशीन आईडी (10 बिट)</text>
12  
13  <rect x="470" y="0" width="130" height="50" fill="#ed8936"/>
14  <text x="535" y="30" font-family="Arial" fontSize="14" fill="white" textAnchor="middle">अनुक्रम (12 बिट)</text>
15  
16  <text x="300" y="80" font-family="Arial" fontSize="16" fill="black" textAnchor="middle">64-बिट स्नोफ्लेक आईडी संरचना</text>
17</svg>
18
19### संदर्भ
20
211. "स्नोफ्लेक की घोषणा।" ट्विटर इंजीनियरिंग ब्लॉग, https://blog.twitter.com/engineering/en_us/a/2010/announcing-snowflake
222. "स्नोफ्लेक आईडी।" विकिपीडिया, https://en.wikipedia.org/wiki/Snowflake_ID
233. "माइक्रोसर्विसेज में वितरित आईडी जनरेशन।" मीडियम, https://medium.com/swlh/distributed-id-generation-in-microservices-b6ce9a8dd93f
24
🔗

संबंधित उपकरण

अधिक उपकरणों का पता लगाएँ जो आपके कार्यप्रवाह के लिए उपयोगी हो सकते हैं

UUID जनरेटर: समय-आधारित और यादृच्छिक UUID उत्पन्न करें

इस उपकरण को आजमाएँ

नैनो आईडी जनरेटर: सुरक्षित और अद्वितीय पहचानकर्ता

इस उपकरण को आजमाएँ

यादृच्छिक परियोजना नाम जनरेटर

इस उपकरण को आजमाएँ

वेब विकास परीक्षण के लिए रैंडम यूजर एजेंट जनरेटर

इस उपकरण को आजमाएँ

यादृच्छिक एपीआई कुंजी जनरेटर: सुरक्षित 32-चर स्ट्रिंग बनाएं

इस उपकरण को आजमाएँ

परीक्षण के लिए मान्य CPF जनरेटर उपकरण का उपयोग करें

इस उपकरण को आजमाएँ

यादृच्छिक स्थान जनरेटर: वैश्विक समन्वय निर्माता

इस उपकरण को आजमाएँ

MD5 हैश जनरेटर

इस उपकरण को आजमाएँ

केएसयूआईडी जनरेटर: अद्वितीय पहचानकर्ता उत्पन्न करें

इस उपकरण को आजमाएँ

शिशु नाम जनरेटर श्रेणियों के साथ - सही नाम खोजें

इस उपकरण को आजमाएँ