🛠️

Whiz Tools

Build • Create • Innovate

ಸ್ನೋಫ್ಲೇಕ್ ಐಡಿ ಜನರೇಟರ್ - 64-ಬಿಟ್ ಗುರುತಿಸುವಿಕೆ ಸಾಧನ

ವಿತರಣಾ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಬಳಸುವ ವಿಶಿಷ್ಟ 64-ಬಿಟ್ ಗುರುತಿಸುವಿಕೆಯನ್ನು, ಟ್ವಿಟರ್ ಸ್ನೋಫ್ಲೇಕ್ ಐಡಿಗಳನ್ನು ಉಂಟುಮಾಡಲು ಮತ್ತು ವಿಶ್ಲೇಷಿಸಲು. ಈ ಸಾಧನವು ಹೊಸ ಸ್ನೋಫ್ಲೇಕ್ ಐಡಿಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಐಡಿಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ, ಅವುಗಳ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್, ಯಂತ್ರ ಐಡಿ ಮತ್ತು ಅನುಕ್ರಮ ಸಂಖ್ಯೆಯ ಅಂಶಗಳ ಬಗ್ಗೆ洞察ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

ಸ್ನೋಫ್ಲೇಕ್ ಐಡಿ ಜನರೇಟರ್

ಸ್ನೋಫ್ಲೇಕ್ ಐಡಿ ಜನರೇಟರ್

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

ದಾಖಲೆ

Snowflake ID ಜನರೇಟರ್

ಪರಿಚಯ

Snowflake ID ಒಂದು ವಿಶಿಷ್ಟ ಗುರುತಿನ ಚಿಹ್ನೆ, ಇದು ವಿತರಣಾ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ, ಮೊದಲನೆಯದಾಗಿ ಟ್ವಿಟ್ಟರ್ ಮೂಲಕ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಈ ಸಾಧನವು ನಿಮಗೆ Snowflake IDs ಅನ್ನು ಜನರೇಟ್ ಮತ್ತು ವಿಶ್ಲೇಷಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ, ಇದು ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್, ಯಂತ್ರ ID ಮತ್ತು ಕೀಳ್ಮಟ್ಟ ಸಂಖ್ಯೆಯೊಂದಿಗೆ 64-ಬಿಟ್ ಪೂರ್ಣಾಂಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

Snowflake IDs ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ

Snowflake IDs 64-ಬಿಟ್ ಪೂರ್ಣಾಂಕಗಳಾಗಿ ಈ ಕೆಳಗಿನ ರಚನೆಯಲ್ಲಿವೆ:

  • 41 ಬಿಟ್: ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್ (ಕಸ್ಟಮ್ ಎಪೋಕ್‌ನಿಂದ ಮಿಲ್ಲಿಸೆಕೆಂಡುಗಳು)
  • 10 ಬಿಟ್: ಯಂತ್ರ ID (ಡೇಟಾ ಕೇಂದ್ರ ID ಗೆ 5 ಬಿಟ್, ಕಾರ್ಮಿಕ ID ಗೆ 5 ಬಿಟ್)
  • 12 ಬಿಟ್: ಕೀಳ್ಮಟ್ಟ ಸಂಖ್ಯೆ

ಈ ರಚನೆಯು ಪ್ರತಿ ಯಂತ್ರಕ್ಕೆ ಪ್ರತಿ ಮಿಲ್ಲಿಸೆಕೆಂಡು 4,096 ವಿಶಿಷ್ಟ IDs ಅನ್ನು ಜನರೇಟ್ ಮಾಡಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ.

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 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 ರಲ್ಲಿ ಓವರ್ಫ್ಲೋ ಆಗುತ್ತದೆ (ಟ್ವಿಟ್ಟರ್ ಎಪೋಕ್ ಅನ್ನು ಪರಿಗಣಿಸಿದಾಗ). Snowflake IDs ಬಳಸುವ ವ್ಯವಸ್ಥೆಗಳು ಈ ಸಂಭವನೀಯತೆಯನ್ನು ಯೋಜಿಸಬೇಕು.

  3. ಯಂತ್ರ ID ಔಟ್‌ಕೋಮ್‌ಗಳು: ದೊಡ್ಡ ವಿತರಣಾ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ವಿಶಿಷ್ಟ ಯಂತ್ರ IDs ಅನ್ನು ಖಚಿತಪಡಿಸುವುದು ಸವಾಲಾಗಬಹುದು ಮತ್ತು ಹೆಚ್ಚುವರಿ ಸಮನ್ವಯವನ್ನು ಅಗತ್ಯವಿರಬಹುದು.

  4. ಕೀಳ್ಮಟ್ಟ ಓವರ್ಫ್ಲೋ: ಅತ್ಯಂತ ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ದೃಷ್ಟಿಕೋನದಲ್ಲಿ, 4096 ಶ್ರೇಣೀಬದ್ಧ ಸಂಖ್ಯೆಗಳ ಮಿಲ್ಲಿಸೆಕೆಂಡುಗಳನ್ನು ಸಂಪೂರ್ಣಗೊಳಿಸುವ ಸಾಧ್ಯತೆ ಇದೆ, ಇದರಿಂದ ವಿಳಂಬ ಉಂಟಾಗಬಹುದು.

  5. ಯಂತ್ರಗಳ ನಡುವಿನ ಅಸಮಾನತೆ: IDs ಒಬ್ಬ ಯಂತ್ರದ ಮೇಲೆ ಕ್ರಮಬದ್ಧವಾಗಿ ಹೆಚ್ಚಾಗಿರುವಾಗ, ಬಹಳಷ್ಟು ಯಂತ್ರಗಳ ನಡುವೆ ಅವು ಕಠಿಣವಾಗಿ ಕ್ರಮಬದ್ಧವಾಗಿರಬಹುದು.

ಇತಿಹಾಸ

Snowflake IDs 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 ಜನರೇಟರ್: ವಿಶ್ವಾಸಾರ್ಹ UUIDಗಳನ್ನು ರಚಿಸಿ ಮತ್ತು ಬಳಸಿರಿ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ನಾನೋ ಐಡಿ ಜನರೇಟರ್ - ಸುರಕ್ಷಿತ ಮತ್ತು URL-ಸ್ನೇಹಿ ಗುರುತಿನ ಸಂಖ್ಯೆಗಳು

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ಯಾದೃಚ್ಛಿಕ ಯೋಜನೆಯ ಹೆಸರು ಉತ್ಪಾದಕ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ವೆಬ್ ಅಭಿವೃದ್ಧಿ ಪರೀಕ್ಷೆಗಾಗಿ ಯಾದೃಚ್ಛಿಕ ಬಳಕೆದಾರ ಏಜೆಂಟ್ ಜನರೇಟರ್

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ಯಾದೃಚ್ಛಿಕ API ಕೀ ಉತ್ಪಾದಕ: ಭದ್ರ 32-ಅಕ್ಷರದ ಶ್ರೇಣಿಗಳನ್ನು ರಚಿಸಿ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ಪರೀಕ್ಷೆಗಾಗಿ ಮಾನ್ಯ CPF ಸಂಖ್ಯೆಗಳ ಜನರೇಟರ್ ಸಾಧನ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ಯಾದೃಚ್ಛಿಕ ಸ್ಥಳ ಜನರೇಟರ್: ಜಾಗತಿಕ ಸಮನ್ವಯ ರಚಕ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ಎಮ್‌ಡೀ5 ಹ್ಯಾಶ್ ಜನರೇಟರ್

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

KSUID ಜನಕ: ಕಾಲಕ್ರಮದಲ್ಲಿ ವರ್ಗೀಬದ್ಧವಾದ ಗುರುತಿನ ಸಂಖ್ಯೆ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ

ಶಿಶು ಹೆಸರು ಉತ್ಪಾದಕ ವರ್ಗಗಳೊಂದಿಗೆ - ಪರಿಪೂರ್ಣ ಹೆಸರನ್ನು ಹುಡುಕಿ

ಈ ಸಾಧನವನ್ನು ಪ್ರಯತ್ನಿಸಿ