ટ્વિટર સ્નોફ્લેક ID જનરેટર અને વિશ્લેષણ સાધન

ટ્વિટર સ્નોફ્લેક IDs, અનન્ય 64-બિટ ઓળખપત્રો જે વિતરિત સિસ્ટમોમાં ઉપયોગમાં લેવાય છે, જનરેટ અને વિશ્લેષણ કરો. આ સાધન તમને નવા સ્નોફ્લેક IDs બનાવવા અને અસ્તિત્વમાં રહેલા IDs ને પાર્સ કરવા દે છે, જે તેમના ટાઇમસ્ટેમ્પ, મશીન ID, અને શ્રેણી નંબર ઘટકોમાંની માહિતી પ્રદાન કરે છે.

સ્નોફ્લેક આઈડી જનરેટર

સ્નોફ્લેક આઈડી જનરેટર

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

દસ્તાવેજીકરણ

Snowflake ID Generator

Introduction

Snowflake ID એ અનન્ય ઓળખનારી છે જે વિતરિત સિસ્ટમોમાં ઉપયોગ થાય છે, જે મૂળરૂપે ટ્વિટર દ્વારા વિકસાવવામાં આવી હતી. આ સાધન તમને Snowflake ID જનરેટ અને વિશ્લેષણ કરવાની મંજૂરી આપે છે, જે 64-બિટના પૂર્ણાંક છે જે ટાઈમસ્ટેમ્પ, મશીન ID અને અનુક્રમણિકા નંબરથી બનેલ છે.

How Snowflake IDs Work

Snowflake ID 64-બિટના પૂર્ણાંક તરીકે રચાયેલ છે:

  • 41 બિટ: ટાઈમસ્ટેમ્પ (કસ્ટમ યુગથી મીલીસેકન્ડ)
  • 10 બિટ: મશીન ID (5 બિટ ડેટા સેન્ટર ID માટે, 5 બિટ વર્કર ID માટે)
  • 12 બિટ: અનુક્રમણિકા નંબર

આ રચનાથી દરેક મીલીસેકન્ડમાં દરેક મશીન માટે લગભગ 4,096 અનન્ય ID બનાવવા માટેની મંજૂરી મળે છે.

Using the Snowflake ID Generator

  1. (વૈકલ્પિક) કસ્ટમ યુગ સેટ કરો (ડિફોલ્ટ ટ્વિટરના યુગ: 2010-11-04T01:42:54.657Z)
  2. મશીન ID (0-31) અને ડેટા સેન્ટર ID (0-31) દાખલ કરો
  3. નવી Snowflake ID બનાવવા માટે "જનરેટ" પર ક્લિક કરો
  4. જનરેટ થયેલ ID અને તેના ઘટકો દર્શાવવામાં આવશે

કોઈ અસ્તિત્વમાં રહેલી Snowflake IDને પાર્સ કરવા માટે, તેને "Parse ID" ક્ષેત્રમાં દાખલ કરો અને "Parse" પર ક્લિક કરો.

Formula

Snowflake IDને બિટવાઇઝ ઓપરેશન્સનો ઉપયોગ કરીને બનાવવામાં આવે છે:

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

જ્યાં:

  • timestamp એ યુગથી મીલીસેકન્ડમાંની સંખ્યા છે
  • datacenterId એ 5-બિટ પૂર્ણાંક (0-31)
  • workerId એ 5-બિટ પૂર્ણાંક (0-31)
  • sequence એ 12-બિટ પૂર્ણાંક (0-4095)

Calculation

Snowflake ID જનરેટર નીચેના પગલાં કરે છે:

  1. મીલીસેકન્ડમાં વર્તમાન ટાઈમસ્ટેમ્પ મેળવો
  2. ખાતરી કરો કે ટાઈમસ્ટેમ્પ છેલ્લા ઉપયોગમાં લેવાયેલા ટાઈમસ્ટેમ્પ કરતાં મોટું છે (અનન્યતા માટે)
  3. જો ટાઈમસ્ટેમ્પ છેલ્લાના ટાઈમસ્ટેમ્પ સમાન હોય, તો અનુક્રમણિકા નંબર વધારવો
  4. જો અનુક્રમણિકા નંબર ઓવરફ્લો કરે (4096 પર પહોંચે), તો આગામી મીલીસેકન્ડ માટે રાહ જુઓ
  5. અંતિમ ID બનાવવા માટે ઘટકોને બિટવાઇઝ ઓપરેશન્સનો ઉપયોગ કરીને સંયોજિત કરો

Use Cases

Snowflake ID ખાસ કરીને નીચેના ક્ષેત્રોમાં ઉપયોગી છે:

  1. વિતરિત સિસ્ટમો: કોઈ સમન્વય વિના અનેક મશીનોમાં અનન્ય ID જનરેટ કરો
  2. ઉચ્ચ-માત્રાના ડેટા: મોટા ડેટાસેટ માટે સોર્ટેબલ ID બનાવો
  3. માઇક્રોસર્વિસ: વિવિધ સેવાઓમાં અનન્ય ઓળખનારો સુનિશ્ચિત કરો
  4. ડેટાબેઝ શાર્ડિંગ: અસરકારક શાર્ડિંગ માટે ટાઈમસ્ટેમ્પ અથવા મશીન ID ઘટકનો ઉપયોગ કરો

Alternatives

જ્યારે Snowflake ID શક્તિશાળી છે, અન્ય ID જનરેશન સિસ્ટમોમાં શામેલ છે:

  1. UUID (યુનિવર્સલ અનન્ય ઓળખનારો): જ્યારે વિતરિત જનરેશનની જરૂર હોય ત્યારે ઉપયોગી, પરંતુ સોર્ટેબલ નથી
  2. ઓટો-ઇન્ક્રિમેન્ટિંગ ડેટાબેઝ ID: સરળ પરંતુ એકલ ડેટાબેઝ ઇન્સ્ટન્સ સુધી મર્યાદિત
  3. ULID (યુનિવર્સલ અનન્ય લેક્સિકોગ્રાફિકલી સોર્ટેબલ ID): Snowflake સમાન, પરંતુ અલગ રચનામાં

Edge Cases and Limitations

  1. ઘડિયાળ સમન્વય: Snowflake ID સિસ્ટમ સમય પર આધાર રાખે છે. જો NTP સમાયોજનો અથવા દિવસ બચત સમય પરિવર્તનોના કારણે ઘડિયાળ પાછળની તરફ ખસકે, તો ID જનરેશનમાં સમસ્યાઓ આવી શકે છે.

  2. વર્ષ 2038 સમસ્યા: 41-બિટનો ટાઈમસ્ટેમ્પ 2079માં ઓવરફ્લો થશે (ટ્વિટરના યુગને આધારે). Snowflake IDનો ઉપયોગ કરતી સિસ્ટમોએ આ સંભાવનાને માટે યોજના બનાવવી જોઈએ.

  3. મશીન ID ટકરાવા: મોટા વિતરિત સિસ્ટમોમાં, અનન્ય મશીન ID સુનિશ્ચિત કરવું પડકારરૂપ હોઈ શકે છે અને વધુ સમન્વયની જરૂર પડી શકે છે.

  4. અનુક્રમણિકા ઓવરફ્લો: અત્યંત ઉચ્ચ-થ્રુપુટ પરિસ્થિતિઓમાં, 4096 અનુક્રમણિકાઓને મીલીસેકન્ડમાં સમાપ્ત કરવું શક્ય છે, જે સંભવિત રીતે વિલંબો સર્જે છે.

  5. મશીનો વચ્ચેની નોન-મોનોટોનિસિટી: જ્યારે ID એક જ મશીન પર મોનોટોનિક રીતે વધે છે, ત્યારે તે અનેક મશીનોમાં કડક રીતે મોનોટોનિક ન હોઈ શકે.

History

Snowflake ID 2010માં ટ્વિટર દ્વારા રજૂ કરવામાં આવ્યું હતું, જે વિતરિત, સમય-સોર્ટેબલ અનન્ય ઓળખનારીની જરૂરિયાતને પહોંચી વળવા માટે. ત્યારથી, તેને ઘણા અન્ય કંપનીઓ અને પ્રોજેક્ટ્સ દ્વારા અપનાવવામાં અને અનુકૂળ કરવામાં આવ્યું છે.

Examples

અહીં વિવિધ ભાષાઓમાં 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// Usage
55const generator = new SnowflakeGenerator();
56const id = generator.nextId(1, 1);
57console.log(`Generated Snowflake ID: ${id}`);
58

Diagram

Snowflake IDની રચનાની દૃશ્યાત્મક રજૂઆત અહીં છે:

ટાઈમસ્ટેમ્પ (41 બિટ) મશીન ID (10 બિટ) અનુક્રમણિકા (12 બિટ)

64-બિટ Snowflake ID રચના

References

  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
🔗

સંબંધિત સાધનો

તમારા વર્કફ્લો માટે ઉપયોગી થવાના વધુ સાધનો શોધો

યુનિક આઈડેન્ટિફાયર જનરેટર માટે વૈશ્વિક ઉકેલ

આ સાધન પ્રયાસ કરો

નાનો આઈડી જનરેટર: સુરક્ષિત અને અનન્ય ઓળખપત્રો બનાવો

આ સાધન પ્રયાસ કરો

યાદ્રુત પ્રોજેક્ટ નામ જનરેટર

આ સાધન પ્રયાસ કરો

વેબ વિકાસ પરીક્ષણ માટે રેન્ડમ યુઝર એજન્ટ જનરેટર

આ સાધન પ્રયાસ કરો

યાદૃચ્છિક API કી જનરેટર: સુરક્ષિત 32-અક્ષરીય સ્ટ્રિંગ્સ બનાવો

આ સાધન પ્રયાસ કરો

પરીક્ષણ માટે માન્ય CPF નંબર જનરેટર સાધન

આ સાધન પ્રયાસ કરો

યાદૃચ્છિક સ્થાન જનરેટર: વૈશ્વિક સંકલન સર્જક

આ સાધન પ્રયાસ કરો

એમડી5 હેશ જનરેટર

આ સાધન પ્રયાસ કરો

KSUID જનરેટર: અનન્ય અને સમય-સૉર્ટેબલ કીજ બનાવો

આ સાધન પ્રયાસ કરો

શિશુ નામ જનરેટર કેટેગરીઝ સાથે - પરફેક્ટ નામ શોધો

આ સાધન પ્રયાસ કરો