কম্পিউটার টিউটোরিয়াল

আপস্ট্যাশ রেডিস দ্বারা চালিত রিয়েল-টাইম কোড কলাবোরেশন

ভূমিকা

আপনি কি কখনো কোডশেয়ারের মতো প্ল্যাটফর্মগুলো কীভাবে বিল্ট হয় তা জানতে কৌতুহলী হয়েছেন? এমন একটি সার্ভিস স্কেল করার চ্যালেঞ্জগুলো মোকাবিলা করার চেষ্টা করলে কি হতাশ হয়েছেন যখন আপনার নিজের ডেভেলপার এক্সপেরিয়েন্স ভালো রাখতে হয়? যখন আমি Bytecrowds বানাতে সিদ্ধান্ত নিলাম, আমি এই সব কীভাবে করব শিখতে হয়েছিল। টেক্সট শেয়ারিং ক্ষমতা প্রদানের জন্য Yjs ব্যবহার করার সিদ্ধান্ত নেওয়ার পর রigorous রিসার্চ করা, ডেটাবেস বেছে নেওয়ার সময় এলো। মার্কেটে অনেক অপশন থাকা সত্ত্বেও, আমি একটি অপরিহার্য কীওয়ার্ড ব্যবহার করে তালিকা সংকীর্ণ করলাম: সাদگی

কেন আপস্ট্যাশ?

আপস্ট্যাশ খুঁজে পাওয়ার আগে থেকেই, আমি এর সিম্পল API-এর জন্য রেডিস®-এ আগ্রহী ছিলাম। যাইহোক, এটি প্রাইমারি ডেটাবেস হিসেবে ব্যবহার করা চ্যালেঞ্জের সাথে আসে যেমন স্কেলিং (আপনাকে ক্যাশিংর জন্যও এটি দরকার হতে পারে) এবং পেরসিস্টেন্স মেইনটেইন করা। একই সময়, যেকোনো স্পন্সরশিপ সিকিউর করার আগে, আপনাকে অবশ্যই খুব সতর্ক হতে হবে একটি ওপেন-সোর্স সফটওয়্যারের বাজেটিং নিয়ে। কি আপনি কম্পিউটিং পাওয়ারের জন্য পে করবেন এমন সময়েও যখন এটি ব্যবহার করা হচ্ছে না? কি আপনি হঠাৎ ট্রাফিক স্পাইক হ্যান্ডেল করতে পারবেন এবং ইনফ্রাস্ট্রাকচারে ঘন্টা ধরে কাজ করার পরিবর্তে নতুন ফিচার পাবলিশ করা, বিদ্যমানগুলো উন্নত করা, বা কিছু বাগ ফিক্স করার ওপর কাজ করতে পারবেন? আমি একজন হইতে পারিনি। তাই আমি আপস্ট্যাশ খুঁজে পেলাম।

আপস্ট্যাশ রেডিস অফারিং আমার ৩টি অপরিহার্য কৃতেরিয়া মেলে: এটি ব্যবহার সহজ, স্কেল করা সহজ, এবং ফ্লেক্সিবল। এটিকে কম লেটেন্সি, সার্ভারলেস ক্লায়েন্টে ব্যবহার করার জন্য আউট-অফ-দ-বক্স REST SDK (Bytecrowds-এর জন্যও একটি প্রয়োজনীয়তা), গ্লোবাল রেপ্লিকেশন, এবং কম্পিউটিং পাওয়ারের জন্য পে-অ্যাজ-ইউ-গো প্ল্যানের সাথে কম্বাইন করলে, আপনি বুঝতে পারবেন কেন আমি আমার প্রজেক্টের জন্য এটি বেছে নিলাম।

অ্যাপ জুড়ে রেডিস® ব্যবহার

দেখি কীভাবে রেডিস® একটি প্রজেক্টের মূল ডেটাবেস হিসেবে ব্যবহার হয়ে একাধিক সার্ভিসের দরকার পূরণ করতে পারে। কনটেক্সট বুঝতে, এখানে Bytecrowds-এর ফ্লোর ডায়াগ্রাম:

আপস্ট্যাশ রেডিস দ্বারা চালিত রিয়েল-টাইম কোড কলাবোরেশন

এটি Ably ব্যবহার করে ক্লায়েন্ট জুড়ে টেক্সট সিঙ্ক করে এবং একটি কাস্টম অ্যানালিটিক্স ইঞ্জিন ব্যবহার করে যা রিকোয়েস্টের IP ঠিকানার ভিত্তিতে ডেটা সংগ্রহ করে।

মূল স্টোরেজ

একটি bytecrowd একটি রেডিস® হ্যাশের আকার নেয় নিচের প্রপার্টিগুলোর সাথে:

{ text: string, language: string, authorizedEmails: undefined || string array }

একটি প্রপার্টি পরিবর্তন হলে হ্যাশটি আপডেট হয়, আপডেটের মাঝপথে "x" সেকেন্ডের ডিলে রয়েছে। প্রোডাকশনে, এটি বর্তমানে ১০০ মিলিসেকেন্ড সেট করা আছে।

অথেন্টিকেশন এবং অথরাইজেশন

অথেন্টিকেশন

Bytecrowds Next.js ব্যবহার করে, GitHub OAuth ইন্টিগ্রেট করার জন্য Auth.js একটি স olid পছন্দ। خوشকিসমتی से, আমরা সেশন সংরক্ষণের জন্য আপস্ট্যাশ অ্যাডাপ্টারও লিভারেজ করতে পারলাম, যা আমাদের অ্যাপ জুড়ে রেডিস® ব্যবহার করতে দিয়েছে।

অথরাইজেশন

Bytecrowds অনুরোধ অনুযায়ী একটি authorizedEmails ফিল্ড তৈরি করে অথরাইজেশন হ্যান্ডেল করে যা একবার সেট হলে API থেকে ইমিউটেবল। রেডিস®-এর যে একটি জিনিস আমি পছন্দ করি সেটি হলো রুটিন অপারেশন için আউট-অফ-দ-বক্স উপলব্ধ বহুল ফাংশন যেগুলো অ্যালগোরিদমিক্যালি দক্ষ হওয়ার জন্য ডিজাইন করা। একটা উদাহরণ দিলে, authorizedEmails ইতিমধ্যে সেট হয়েছে কিনা চেক করতে আমাদের শুধু HEXISTS কমান্ড ব্যবহার করতে হবে, যেটির O(1) কমপ্লেক্সিটি।

অ্যানালিটিক্স

Bytecrowds একটি অ্যানালিটিক্স সিস্টেম ব্যবহার করে যা ডেটার দুটি ক্যাটেগরি হ্যান্ডেল করে:

  • এক দিনের স্ট্যাটস, যা একটি রেডিস® হ্যাশের আকার নেয়, নামকরণ হয় year month day নিচের প্রপার্টিগুলোর সাথে:
{ countries: string array, hits: integer, pages: string array, uniqueVisitors: integer, addresses: string array, continents: string array }

যেখানে addresses হলো SHA256-এনক্রিপ্টেড IP ঠিকানার একটি অ্যারে যা ইউনিক ওয়েবসাইট ভিজিটারের সংখ্যা নির্ধারণ করতে ব্যবহৃত হয়।

  • continents, countries, এবং pages নামে ৩টি কী যেগুলোর জন্য রেডিস® সর্টেড সেট ব্যবহার করা হয় ডেটা সংরক্ষণ করতে। প্রতিটি স্ট্যাট তার কাউন্ট ("score", সর্টেড সেটের জন্য) সহ সংরক্ষণ করে, আমরা সহজে SORT বা SORT_RO কমান্ড ব্যবহার করে সেগুলো কোয়েরি বা সর্ট করতে পারি। রেডিসর সাদگی আবার দেখাচ্ছে।

আপনি যদি এর পেছনের কোড সম্পর্কে কৌতুহলী হন, https://github.com/Bytecrowds/analytics/blob/main/src/index.js চেক করুন।

দ্রষ্টব্য: একটি আরও জটিল সিনেরিওতে, আপনি প্রোবাবলি এই সিস্টেমে কিছু পরিবর্তন প্রয়োগ করবেন, যেমন প্রসেসিং-এর আগে রড ডেটা সংরক্ষণ করা এবং Apache Kafka-এর মতো কোনো স্ট্রিম প্রসেসিং টুল ব্যবহার করা (আপস্ট্যাশ এটিও হ্যান্ডেল করতে পারে, ডক্স চেক করুন)।

লাইভ দেখুন

Bytecrowds একশনে দেখতে চান? https://www.bytecrowds.com-এ যান, "new bytecrowd" বাটনে ক্লিক করুন এবং লিংকটি একাধিক ট্যাবে খুলুন। আপনি লেখা শুরু করলে, আপনি দেখবেন কোডটি সব কানেক্টেড ক্লায়েন্ট জুড়ে রেপ্লিকেট হচ্ছে।

শেষ কথা

একজন একমাত্র সক্রিয় মেইনটেইনার হয়ে একটি ওপেন-সোর্স প্রজেক্ট রান করা কঠিন, কিন্তু সঠিক টুলস এবং অটো-স্কেলিং ইনফ্রাস্ট্রাকচার একটি গreate সাপোর্ট হতে পারে যা আপনাকে অ썸 প্রজেক্টগুলোর ওপর কাজ চালিয়ে যেতে সাহায্য করে, ট্রাফিক স্পাইক নিয়ে চিন্তা না করে। ইতিমধ্যে আপস্ট্যাশ রেডিস® ট্রাই করার জন্য বাধ্য? একটি ফ্রি অ্যাকাউন্টে সাইন আপ করুন, ক্রেডিট কার্ড দরকার নেই।

পূর্ণ কোড দেখতে, GitHub রিপোজিটরি চেক করুন। আপনার যেকোনো প্রশ্ন বা ফিডব্যাক থাকলে, tudor.zgimbau@gmail.com-এ আমাকে মেসেজ করুন।

  1. পাইথন প্রোগ্রাম: n-তম ফিবোনাচ্চি সংখ্যা বের করা

  2. লিনাক্সে হার্ড এবং সিম্বলিক লিংক মাস্টার করুন: ধাপে ধাপে গাইড

  3. জাভাস্ক্রিপ্টে সেলফ-ইনভোকিং ফাংশন (IIFE)

  4. Tkinter-এ নতুন Toplevel() উইন্ডোতে ফোকাস রাখা