ডাটাবেস এবং ক্লায়েন্ট একই অঞ্চলে থাকলে Redis-এর সাথে 1 ms লেটেন্সি সহজ। কিন্তু আপনি যদি চান যে ক্লায়েন্টদের বিশ্বব্যাপী বিতরণ করা হোক তাহলে লেটেন্সি 100 ms-এর উপরে বেড়ে যায়। আমরা এটি কাটিয়ে উঠতে এজ ক্যাশিং তৈরি করেছি৷
এজ ক্যাশিং
৷প্রান্ত ক্যাশিংয়ের সাথে, CDN এর মতোই, সারা বিশ্বের প্রান্তের অবস্থানগুলিতে REST প্রতিক্রিয়াগুলি ক্যাশে করা হয়৷ এজ ক্যাশিং সক্ষম হলে আমরা গড়ে 5ms গ্লোবাল লেটেন্সি দেখতে পাই। আমাদের বেঞ্চমার্ক অ্যাপ্লিকেশন দেখুন যেখানে আমরা 10টি ভিন্ন অঞ্চলে অবস্থিত ক্লায়েন্টদের কাছ থেকে লেটেন্সি নম্বর রেকর্ড করি। আমরা এজ ইউআরএল এবং প্লেইন REST ইউআরএলে করা অনুরোধগুলির মধ্যে লেটেন্সি তুলনা করি। সার্ভার এবং ক্লায়েন্টের মধ্যে দূরত্ব বাড়ার সাথে সাথে এজ ক্যাশিং এর প্রভাব বৃদ্ধি পায়।
নিজে পরীক্ষা চালাতে এখানে ক্লিক করুন।
কেস ব্যবহার করুন
ওয়েব/মোবাইল (ব্যাকেন্ডলেস) ক্লায়েন্ট
Upstash কোনো ব্যাকএন্ড ছাড়াই ব্যবহারকারীদের ডাটাবেস অ্যাক্সেস করতে সক্ষম করার জন্য শুধুমাত্র পঠনযোগ্য প্রমাণীকরণ টোকেন প্রদান করে। আপনি ওয়েব বা মোবাইল অ্যাপ্লিকেশন থেকে সরাসরি Redis অ্যাক্সেস করতে পারেন। এই আর্কিটেকচারে, ক্লায়েন্ট যে কোন জায়গায় হতে পারে। আপনার ব্যবহারকারীদের নিকটতম অবস্থানে ডেটা ক্যাশে করা অনেক বোধগম্য।
মাল্টি অঞ্চল সার্ভারহীন আর্কিটেকচার
গ্লোবাল লেটেন্সি কমাতে আপনি একাধিক অঞ্চলে আপনার AWS Lambda ফাংশন চালাতে পারেন। Vercel/Netlify ফাংশন কিছু কনফিগারেশনে বিভিন্ন অঞ্চলে চলে। এজ ক্যাশিং সহ সার্ভারলেস রেডিস আপনার সার্ভারহীন ফাংশন যেখানেই থাকুক না কেন আপনাকে দ্রুত ডেটা দেবে৷
এজ ফাংশন
এজ কম্পিউটিং (ক্লাউডফ্লেয়ার কর্মী ইত্যাদি) বিশ্বব্যাপী দ্রুত অ্যাপ্লিকেশন তৈরির একটি জনপ্রিয় উপায় হয়ে উঠছে। প্রান্ত ফাংশনগুলির সাথে চ্যালেঞ্জ হল যে আপনার ডেটা রাখার জন্য আপনার কাছে অনেক বিকল্প নেই। এজ ক্যাশিং সহ রেডিস কম লেটেন্সি এবং লাইটওয়েটনেস এজ ফাংশনগুলির জন্য একটি দুর্দান্ত ফিট৷
শুরু করুন
আপস্ট্যাশ কনসোলে আপনি এজ ক্যাশিং সক্ষম করতে পারেন। সতর্ক থাকুন যে প্রান্ত ক্যাশিং এর একটি অতিরিক্ত খরচ আছে।
একবার এজ ক্যাশিং সক্ষম হলে, আপনি REST API ডায়ালগে এজ URL খুঁজে পেতে পারেন। এজ ক্যাশিং শুধুমাত্র GET কলের জন্য উপলব্ধ। আপডেটের জন্য (পোস্ট), আপনি এখনও প্লেইন REST API ব্যবহার করতে পারেন।
ডিফল্টরূপে, ক্যাশে করা প্রতিক্রিয়া 30 সেকেন্ডের মধ্যে শেষ হয়ে যায়। আপনি Cache-Control: max-age=<seconds>
দিয়ে এটি নিয়ন্ত্রণ করতে পারেন শিরোনাম।
উদাহরণ:
curl https://us1-smart-bunny-32732.edge-c.upstash.io/get/foo \
-H "Authorization: Bearer 2dfgf98elrg0w009c842z2adfdde9132"
-H "Cache-Control: max-age=50"
উপরের URL-এ প্রথম অনুরোধটি উত্স থেকে প্রতিক্রিয়া আনবে৷ পরবর্তী অনুরোধগুলি প্রান্তের অবস্থান থেকে আনা হবে৷ প্রতিটি প্রান্তের অবস্থানে 50 সেকেন্ড পরে ক্যাশে করা প্রতিক্রিয়াগুলির মেয়াদ শেষ হয়ে যাবে৷
৷এজ ক্যাশিং বনাম গ্লোবাল ডেটাবেস
রেডিসকে একাধিক অঞ্চলে প্রতিলিপি করে একটি বিশ্বব্যাপী ডাটাবেস তৈরি করা (আপডেট:এটি প্রকাশিত হয়েছে, আরও জানুন) আমাদের রোডম্যাপে রয়েছে৷ গ্লোবাল ডেটাবেসগুলি আপনাকে আরও ভাল সামঞ্জস্যের গ্যারান্টি দেবে এবং লেখাগুলির প্রতিলিপি করে লিখতে লেটেন্সি দেবে৷ কিন্তু সমস্ত অঞ্চলে ডাটাবেস প্রতিলিপি করা খুব ব্যয়বহুল হতে পারে। তারপরও সব জায়গায় লেটেন্সি কমানোর জন্য আপনার ক্যাশিংয়ের প্রয়োজন হতে পারে। সুতরাং এজ ক্যাশিং এবং গ্লোবাল রেপ্লিকেশন হল সমাধান যা প্রতিযোগিতার পরিবর্তে একে অপরকে সম্পূর্ণ করে। যদি আপনার ব্যবহারের ক্ষেত্রে শেষ পর্যন্ত সামঞ্জস্যপূর্ণ পাঠ সহ্য করে, তাহলে এজ ক্যাশিং ইতিমধ্যেই একটি দুর্দান্ত সমাধান যা বিশ্বব্যাপী দ্রুত ডেটা সরবরাহ করে৷
সার্ভারহীন এবং প্রান্তিক ডেটা নিয়ে আমাদের প্রচেষ্টা সম্পর্কে আপনার কাছ থেকে শোনার জন্য উন্মুখ। টুইটারে আমাদের সাথে কথা বলুন এবং বিরোধিতা করুন৷
৷