কম্পিউটার

সার্ভারহীন হার সীমাবদ্ধতা

আপনার সিস্টেমের প্রাপ্যতা বজায় রাখা যেকোনো পণ্যের জন্য সবচেয়ে গুরুত্বপূর্ণ কাজগুলির মধ্যে একটি। দুর্ভাগ্যবশত, লোকেরা আপনার সংস্থানগুলিকে অপ্রতিরোধ্য করে এটির অপব্যবহার করতে পারে বা আপনি এটির ব্যবহার সীমিত করতে এবং চার্জ করতে চান৷ হার সীমিত করা এই সমস্যাগুলির অনেকগুলির একটি আদর্শ সমাধান এবং বাক্সের বাইরে কাজ করা উচিত। সর্বোপরি, আপনি ইতিমধ্যেই আপনার সিস্টেম তৈরি করেছেন এবং একটি রেট-লিমিটিং সিস্টেম ডিজাইন করতে আরও বেশি সময় ব্যয় করতে চান না যা একটি রাষ্ট্রহীন পরিবেশ যেমন সার্ভারহীন ফাংশনগুলিতে ভাল কাজ করে৷

@upstash/ratelimit ঘোষণা করা হচ্ছে

GitHub, npm বা Deno

এ উপলব্ধ

আজ আমরা @upstash/ratelimit প্রকাশ করছি , সার্ভারহীন পরিবেশে রেট-সীমিত করার একটি সমাধান, যেমন Vercel, Cloudflare, Deno, Fastly এবং Netlify। এটি আপস্ট্যাশ সার্ভারলেস রেডিসের উপরে তৈরি করা হয়েছে এবং বিশ্বব্যাপী আপনার ব্যবহারকারীদের জন্য কম লেটেন্সি অভিজ্ঞতা প্রদান করতে এক বা একাধিক ডাটাবেস ব্যবহার করে হার-সীমিত সমাধান প্রদান করে!

শুরু করুন

@upstash/ratelimit এখন পর্যন্ত তিনটি ভিন্ন প্রমিত অ্যালগরিদম প্রয়োগ করে, এবং আপনি প্রকল্পের README এ সেগুলি সম্পর্কে আরও পড়তে পারেন৷

আমরা দুটি পদ্ধতি প্রদান করি:

  • limit(identifier: string): Promise<RatelimitResponse>

limit true ফেরত দেবে অথবা false এবং অবশিষ্ট অনুরোধ সম্পর্কে কিছু মেটাডেটা এবং আপনি যদি আপনার নির্ধারিত সীমার বাইরে সমস্ত অনুরোধ প্রত্যাখ্যান করতে চান তবে ব্যবহার করা যেতে পারে৷

  • blockUntilReady(identifier: string, timeout: number): Promise<RatelimitResponse>

যদি আপনি অবিলম্বে একটি অনুরোধ প্রত্যাখ্যান করতে না চান তবে এটি প্রক্রিয়া করা না হওয়া পর্যন্ত অপেক্ষা করুন৷ মনে রাখবেন যে কিছু প্ল্যাটফর্ম আপনার ফাংশন সম্পাদনের সময়ের জন্য আপনাকে চার্জ করে৷

একক আঞ্চলিক ডেটাবেস

একটি একক ডাটাবেসের সাথে রেটলিমিটিং সোজা সামনে। আপনি Upstash-এ একটি ডাটাবেস তৈরি করুন এবং এটি ব্যবহার শুরু করুন:

import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";

// Create a new ratelimiter, that allows 10 requests per 10 seconds
const ratelimit = new Ratelimit({
  redis: Redis.fromEnv(),
  limiter: Ratelimit.slidingWindow(10, "10 s"),
});

// Use a constant string to limit all requests with a single ratelimit
// Or use a userID, apiKey or ip address for individual limits.
const identifier = "api";
const { success } = await ratelimit.limit(identifier);

if (!success) {
  return "Unable to process at this time";
}
doExpensiveCalculation();
return "Here you go!";

গ্লোবাল প্রতিলিপিকৃত হার-সীমাবদ্ধতা

ধরুন আপনার মার্কিন যুক্তরাষ্ট্র এবং ইউরোপে গ্রাহক রয়েছে। এই ক্ষেত্রে, আপনি Upstash-এ দুটি আঞ্চলিক redis ডাটাবেস তৈরি করতে পারেন এবং আপনার ব্যবহারকারীরা তাদের সবচেয়ে কাছের যেটি db এর লেটেন্সি উপভোগ করবে৷

import { GlobalRatelimit } from "@upstash/ratelimit"; // for deno: see above
import { Redis } from "@upstash/redis";

// Create a new ratelimiter, that allows 10 requests per 10 seconds
const ratelimit = new GlobalRatelimit({
  redis: [
    new Redis({
      /* europe */
    }),
    new Redis({
      /* north america */
    }),
  ],
  limiter: Ratelimit.slidingWindow(10, "10 s"),
});

ক্লোজিং শব্দ

আপনার যদি কোন প্রশ্ন থাকে, অনুগ্রহ করে আমাদের সাথে গিটহাব বা নীচের চ্যানেলগুলিতে যোগাযোগ করুন৷

Discordand Twitter-এ অনুসরণ করুন৷


  1. সার্ভারলেস রেডিস এবং প্রতিক্রিয়া নেটিভ সহ অ্যাপ-মধ্যস্থ ঘোষণা

  2. Nuxt 3 এবং সার্ভারলেস রেডিস দিয়ে শুরু করা

  3. সার্ভারহীন এবং প্রান্তের জন্য গ্লোবাল ডাটাবেস

  4. সার্ভারলেস রেডিসে পাইপলাইন REST API