🛠️

Whiz Tools

Build • Create • Innovate

स्नोफ्लेक आयडी जनरेटर: अद्वितीय 64-बिट ओळखपत्रे तयार करा

ट्विटर स्नोफ्लेक आयडी, वितरण प्रणालींमध्ये वापरल्या जाणार्‍या अद्वितीय 64-बिट ओळखपत्रे तयार करा आणि विश्लेषण करा. हा साधन तुम्हाला नवीन स्नोफ्लेक आयडी तयार करण्याची आणि विद्यमान आयडींचे पार्सिंग करण्याची परवानगी देते, त्यांच्या टाइमस्टॅम्प, मशीन आयडी आणि अनुक्रमांक घटकांमध्ये अंतर्दृष्टी प्रदान करते.

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

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

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

दस्तऐवजीकरण

Snowflake ID जनरेटर

परिचय

Snowflake ID एक अद्वितीय ओळखपत्र आहे जो वितरित प्रणालींमध्ये वापरला जातो, जो मूळतः ट्विटरद्वारे विकसित केला गेला. हा साधन तुम्हाला Snowflake ID तयार करण्याची आणि विश्लेषण करण्याची परवानगी देते, जे 64-बिट पूर्णांक आहेत ज्यात एक टाइमस्टॅम्प, मशीन ID आणि अनुक्रम क्रमांक समाविष्ट आहेत.

Snowflake ID कसे कार्य करते

Snowflake ID 64-बिट पूर्णांक आहेत जे खालीलप्रमाणे संरचित आहेत:

  • 41 बिट: टाइमस्टॅम्प (कस्टम युगापासून मिलीसेकंद)
  • 10 बिट: मशीन ID (डेटा सेंटर ID साठी 5 बिट, कार्यकर्ता ID साठी 5 बिट)
  • 12 बिट: अनुक्रम क्रमांक

ही संरचना प्रत्येक मशीनसाठी प्रति मिलीसेकंद सुमारे 4,096 अद्वितीय ID निर्माण करण्यास अनुमती देते.

Snowflake ID जनरेटर वापरणे

  1. (ऐच्छिक) एक कस्टम युग सेट करा (डिफॉल्ट ट्विटरचा युग: 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 ID विशेषतः खालील गोष्टींसाठी उपयुक्त आहेत:

  1. वितरित प्रणाली: समन्वयाशिवाय अनेक मशीनवर अद्वितीय ID निर्माण करा
  2. उच्च-आवृत्ती डेटा: मोठ्या डेटासेटसाठी क्रमवारीत ID तयार करा
  3. मायक्रोसर्व्हिसेस: विविध सेवांमध्ये अद्वितीय ओळखपत्रे सुनिश्चित करा
  4. डेटाबेस शार्डिंग: कार्यरत ID घटक किंवा मशीन ID घटकाचा वापर करून कार्यक्षम शार्डिंगसाठी

पर्याय

जरी Snowflake ID शक्तिशाली असले तरी, इतर ID जनरेशन प्रणालींमध्ये समाविष्ट आहे:

  1. UUID (युनिव्हर्सली अद्वितीय ओळखपत्र): जेव्हा वितरित उत्पादन आवश्यक असेल तेव्हा उपयुक्त, पण क्रमवारीत नाही
  2. ऑटो-इन्क्रिमेंटिंग डेटाबेस ID: साधे पण एकल डेटाबेस उदाहरणांपर्यंत मर्यादित
  3. ULID (युनिव्हर्सली अद्वितीय लॅक्सिकोग्राफिकली क्रमवारीत ओळखपत्र): Snowflake प्रमाणे, पण भिन्न संरचना असलेले

काठाचे प्रकरणे आणि मर्यादा

  1. घड्याळ समन्वय: Snowflake ID प्रणालीच्या वेळेवर अवलंबून असतात. NTP समायोजन किंवा दिवसा वाचवण्याच्या वेळेतील बदलांमुळे घड्याळ मागे हलल्यास ID जनरेशनमध्ये समस्या येऊ शकतात.

  2. वर्ष 2038 समस्या: 41-बिट टाइमस्टॅम्प 2079 मध्ये ओव्हरफ्लो होईल (ट्विटर युग मानून). Snowflake ID वापरणाऱ्या प्रणालींनी या संभाव्यतेसाठी योजना बनवावी.

  3. मशीन ID टकराव: मोठ्या वितरित प्रणालींमध्ये, अद्वितीय मशीन ID सुनिश्चित करणे आव्हानात्मक असू शकते आणि अतिरिक्त समन्वयाची आवश्यकता असू शकते.

  4. अनुक्रम ओव्हरफ्लो: अत्यंत उच्च-आवृत्तीच्या परिस्थितींमध्ये, 4096 अनुक्रम प्रति मिलीसेकंद संपवणे शक्य आहे, संभाव्यतः विलंब निर्माण करणे.

  5. मशीनमध्ये नॉन-मोनोटोनिसिटी: जरी एकाच मशीनवर ID मोनोटोनिकली वाढत असले तरी, अनेक मशीनमध्ये ते कठोरपणे मोनोटोनिक असू शकत नाही.

इतिहास

Snowflake ID 2010 मध्ये ट्विटरद्वारे वितरित, वेळानुसार क्रमवारीत अद्वितीय ओळखपत्रांची आवश्यकता पूर्ण करण्यासाठी सादर केले गेले. त्यानंतर अनेक इतर कंपन्या आणि प्रकल्पांनी त्याचा स्वीकार केला आणि अनुकूलित केला आहे.

उदाहरणे

येथे विविध भाषांमध्ये 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('घड्याळ मागे हलले. 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(`तयार केलेला Snowflake ID: ${id}`);
58

आरेख

Snowflake ID संरचनेचे दृश्य प्रतिनिधित्व येथे आहे:

टाइमस्टॅम्प (41 बिट) मशीन ID (10 बिट) अनुक्रम (12 बिट)

64-बिट Snowflake ID संरचना

संदर्भ

  1. "Snowflake जाहीर करणे." ट्विटर इंजिनिअरिंग ब्लॉग, 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 जनरेटर: विविध अनुप्रयोगांसाठी अद्वितीय ओळखपत्र

हे साधन वापरून पाहा

नॅनो आयडी जनरेटर: सुरक्षित आणि अद्वितीय ओळखपत्रे तयार करा

हे साधन वापरून पाहा

यादृच्छिक प्रकल्प नाव जनरेटर

हे साधन वापरून पाहा

वेब विकास चाचणीसाठी यादृच्छिक युजर एजंट जनरेटर

हे साधन वापरून पाहा

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

हे साधन वापरून पाहा

चाचणीसाठी वैध आणि यादृच्छिक CPF जनरेटर साधन

हे साधन वापरून पाहा

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

हे साधन वापरून पाहा

MD5 हॅश जनरेटर

हे साधन वापरून पाहा

केएसयूआयडी जनरेटर: अद्वितीय ओळखपत्र तयार करा

हे साधन वापरून पाहा

शिशु नाव जनक श्रेण्या सह - परिपूर्ण नाव शोधा

हे साधन वापरून पाहा