🛠️

Whiz Tools

Build • Create • Innovate

স্নোফ্লেক আইডি তৈরি ও বিশ্লেষণ করার টুল

টুইটার স্নোফ্লেক আইডি, যা বিতরণকৃত সিস্টেমে ব্যবহৃত অনন্য 64-বিট পরিচয়পত্র, তৈরি এবং বিশ্লেষণ করুন। এই টুলটি আপনাকে নতুন স্নোফ্লেক আইডি তৈরি করতে এবং বিদ্যমান আইডিগুলি পার্স করতে দেয়, যা তাদের টাইমস্ট্যাম্প, মেশিন আইডি এবং সিকোয়েন্স নম্বর উপাদানগুলির উপর অন্তর্দৃষ্টি প্রদান করে।

স্নোফ্লেক আইডি জেনারেটর

স্নোফ্লেক আইডি জেনারেটর

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

ডকুমেন্টেশন

Snowflake ID Generator

Introduction

একটি Snowflake ID একটি অনন্য শনাক্তকারী যা বিতরণকৃত সিস্টেমে ব্যবহৃত হয়, যা মূলত Twitter দ্বারা উন্নত করা হয়। এই টুলটি আপনাকে Snowflake ID তৈরি এবং বিশ্লেষণ করতে দেয়, যা একটি টাইমস্ট্যাম্প, মেশিন ID এবং সিকোয়েন্স নম্বর নিয়ে গঠিত 64-বিট পূর্ণসংখ্যা।

How Snowflake IDs Work

Snowflake IDs 64-বিট পূর্ণসংখ্যা যা নিম্নলিখিতভাবে গঠিত:

  • 41 বিট: টাইমস্ট্যাম্প (একটি কাস্টম এপোক থেকে মিলিসেকেন্ড)
  • 10 বিট: মেশিন ID (5 বিট ডেটা সেন্টার ID, 5 বিট কর্মী ID)
  • 12 বিট: সিকোয়েন্স নম্বর

এই কাঠামোটি প্রতি মিলিসেকেন্ডে প্রতি মেশিনে প্রায় 4,096 অনন্য ID তৈরি করার অনুমতি দেয়।

Using the Snowflake ID Generator

  1. (ঐচ্ছিক) একটি কাস্টম এপোক সেট করুন (ডিফল্ট হল Twitter-এর এপোক: 2010-11-04T01:42:54.657Z)
  2. একটি মেশিন ID (0-31) এবং ডেটা সেন্টার ID (0-31) প্রবেশ করুন
  3. একটি নতুন Snowflake ID তৈরি করতে "Generate" ক্লিক করুন
  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 IDs বিশেষভাবে নিম্নলিখিত ক্ষেত্রে উপকারী:

  1. বিতরণকৃত সিস্টেম: সমন্বয় ছাড়াই একাধিক মেশিনে অনন্য ID তৈরি করুন
  2. উচ্চ-ভলিউম ডেটা: বড় ডেটাসেটের জন্য সাজানোর উপযোগী ID তৈরি করুন
  3. মাইক্রোসার্ভিস: বিভিন্ন পরিষেবার মধ্যে অনন্য শনাক্তকারী নিশ্চিত করুন
  4. ডেটাবেস শার্ডিং: কার্যকর শার্ডিংয়ের জন্য টাইমস্ট্যাম্প বা মেশিন ID উপাদান ব্যবহার করুন

Alternatives

যদিও Snowflake IDs শক্তিশালী, অন্যান্য ID উৎপাদন সিস্টেমগুলির মধ্যে রয়েছে:

  1. UUID (বিশ্বজনীন অনন্য শনাক্তকারী): যখন বিতরণকৃত উৎপাদনের প্রয়োজন হয় কিন্তু সাজানোর উপযোগিতা নেই
  2. স্বয়ংক্রিয়-অগ্রসর ডেটাবেস ID: সহজ কিন্তু একক ডেটাবেস ইনস্ট্যান্সে সীমাবদ্ধ
  3. ULID (বিশ্বজনীন অনন্য লেক্সিকোগ্রাফিক্যালি সাজানো শনাক্তকারী): Snowflake-এর মতো, তবে একটি ভিন্ন কাঠামো নিয়ে

Edge Cases and Limitations

  1. ঘড়ির সমন্বয়: Snowflake IDs সিস্টেম সময়ের উপর নির্ভর করে। যদি NTP সমন্বয় বা দিনের আলো সময় পরিবর্তনের কারণে ঘড়ি পিছিয়ে যায়, তবে ID উৎপাদনে সমস্যা হতে পারে।

  2. বছর 2038 সমস্যা: 41-বিট টাইমস্ট্যাম্প 2079 সালে ওভারফ্লো হবে (Twitter এপোক ধরে নিয়ে)। Snowflake ID ব্যবহারকারী সিস্টেমগুলিকে এই সম্ভাবনার জন্য পরিকল্পনা করতে হবে।

  3. মেশিন ID সংঘর্ষ: বড় বিতরণকৃত সিস্টেমে, অনন্য মেশিন IDs নিশ্চিত করা চ্যালেঞ্জিং হতে পারে এবং অতিরিক্ত সমন্বয়ের প্রয়োজন হতে পারে।

  4. সিকোয়েন্স ওভারফ্লো: অত্যন্ত উচ্চ-থ্রুপুট পরিস্থিতিতে, 4096 সিকোয়েন্স প্রতি মিলিসেকেন্ডে শেষ হয়ে যেতে পারে, সম্ভাব্যভাবে বিলম্ব সৃষ্টি করতে পারে।

  5. মেশিনের মধ্যে অ-মোনোটনিকিটি: যদিও IDs একটি একক মেশিনে মোনোটনিকভাবে বৃদ্ধি পাচ্ছে, তবে একাধিক মেশিনের মধ্যে তারা কঠোরভাবে মোনোটনিক নাও হতে পারে।

History

Snowflake IDs 2010 সালে Twitter দ্বারা বিতরণকৃত, সময়-সাজানো অনন্য শনাক্তকারীর প্রয়োজন মেটানোর জন্য পরিচিত হয়। এরপর থেকে এগুলি অনেক অন্যান্য কোম্পানি এবং প্রকল্প দ্বারা গ্রহণ এবং অভিযোজিত হয়েছে।

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('ঘড়ি পিছিয়ে গেছে। 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 ঘোষণা।" 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-বান্ধব শনাক্তকারী

এই টুলটি চেষ্টা করুন

র্যান্ডম প্রকল্প নাম জেনারেটর

এই টুলটি চেষ্টা করুন

ওয়েব ডেভেলপমেন্ট টেস্টিংয়ের জন্য র্যান্ডম ইউজার এজেন্ট জেনারেটর

এই টুলটি চেষ্টা করুন

র্যান্ডম এপিআই কী জেনারেটর: নিরাপদ 32-অক্ষরের স্ট্রিং তৈরি করুন

এই টুলটি চেষ্টা করুন

পরীক্ষার জন্য বৈধ এলোমেলো CPF নম্বর জেনারেটর

এই টুলটি চেষ্টা করুন

র্যান্ডম লোকেশন জেনারেটর: গ্লোবাল কোঅর্ডিনেট ক্রিয়েটর

এই টুলটি চেষ্টা করুন

MD5 হ্যাশ জেনারেটর

এই টুলটি চেষ্টা করুন

কেএসইউআইডি জেনারেটর: সংঘর্ষ-প্রতিরোধী পরিচয়পত্র তৈরি করুন

এই টুলটি চেষ্টা করুন

শিশুর নাম জেনারেটর ক্যাটাগরির সাথে - নিখুঁত নাম খুঁজুন

এই টুলটি চেষ্টা করুন