, 5 min read
Rate limiter adalah sebuah mekanisme yang digunakan untuk mengatur laju atau frekuensi akses terhadap suatu sumber daya atau layanan. Tujuannya adalah untuk mencegah penyalahgunaan atau kelebihan beban terhadap sistem tersebut
Rate limiter adalah sebuah mekanisme yang digunakan untuk mengatur laju atau frekuensi akses terhadap suatu sumber daya atau layanan. Tujuannya adalah untuk mencegah penyalahgunaan atau kelebihan beban terhadap sistem tersebut.
Rate limiter berfungsi untuk membatasi jumlah permintaan yang diterima dalam periode waktu tertentu, sehingga pengguna atau aplikasi tidak dapat mengakses sumber daya atau layanan secara tidak terbatas.
Rate limiter dapat diterapkan dalam berbagai konteks, seperti API (Application Programming Interface), aplikasi web, atau layanan jaringan. Misalnya, dalam konteks API, rate limiter digunakan untuk membatasi jumlah permintaan API yang dapat dilakukan oleh pengguna dalam periode waktu tertentu. Dengan adanya rate limiter, pengguna tidak dapat secara berlebihan mengakses API dan mengganggu kinerja sistem atau menghabiskan sumber daya secara tidak perlu.
Rate limiter umumnya diterapkan dengan mengatur jumlah permintaan maksimum yang dapat diterima dalam periode waktu tertentu, seperti jumlah permintaan per detik atau per menit. Jika batas tersebut tercapai, permintaan tambahan akan ditolak atau tertunda hingga periode waktu berikutnya dimulai.
Implementasi rate limiter dapat dilakukan menggunakan berbagai teknik, seperti token bucket, leaky bucket, atau sliding window. Pilihan teknik implementasi tergantung pada kebutuhan dan karakteristik sistem yang digunakan.
Dengan adanya rate limiter, sistem dapat menjaga ketersediaan dan kinerja yang baik, serta melindungi sumber daya atau layanan dari penyalahgunaan atau serangan DDoS (Distributed Denial of Service).
Jalankan perintah
nest new nest-rate-limiting
Masuk kedalam project
cd nest-rate-limiting
yarn add @nestjs/throttler
Edit module (app.module.ts)
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ThrottlerGuard, ThrottlerModule } from '@nestjs/throttler';
import { APP_GUARD } from '@nestjs/core';
@Module({
imports: [
ThrottlerModule.forRoot({
ttl: 60,
limit: 10,
}),
],
controllers: [AppController],
providers: [
AppService,
{
provide: APP_GUARD,
useClass: ThrottlerGuard,
},
],
})
export class AppModule {}
Baris code
{
provide: APP_GUARD,
useClass: ThrottlerGuard,
},
Artinya adalah memasang Guard secara global di dalam module.
Kita juga bisa memasang berdasarkan Controller.
\
import { Controller, Get, UseGuards } from '@nestjs/common';
import { AppService } from './app.service';
import { Throttle, ThrottlerGuard } from '@nestjs/throttler';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@UseGuards(ThrottlerGuard)
@Get()
getHello(): string {
return this.appService.getHello();
}
}
Ada dua parameter yang dimasukan yaitu
TTL di gunakan untuk membatasi dalam satuan waktu (detik).
Limit digunakan untuk membatasi jumlah reuest.
Pada contoh diatas artinya dalam waktu 60 detik hanya boleh melakukan reuest sebanyak 10.
Pada konfigurasi diatas akan digunakan secara global. kita bisa juga memberikan kontrol berdasarkan controller seperti dibawah ini:
@Throttle(3, 60)
@UseGuards(ThrottlerGuard)
@Get()
getHello(): string {
return this.appService.getHello();
}
Setelah kita request melebihi total yang di ijinkan maka akan seperti dibawah ini
Related Posts
Nest JS : Speed Up API with Cache Redis
Meningkatkan perfoma API dengan Cache menggunakan Redis dengan contoh menggunakan Database PostgreSQL dan Prisma
Nest JS Micoservices with GRPC and Monorepo
Kita akan belajar bagaimana membuat aplikasi microservices menggunakan Nest JS dan GRPC menggunakan Monorepo (Single Repository)
Rate limiting Nest JS
Rate limiter adalah sebuah mekanisme yang digunakan untuk mengatur laju atau frekuensi akses terhadap suatu sumber daya atau layanan. Tujuannya adalah untuk mencegah penyalahgunaan atau kelebihan beban terhadap sistem tersebut
Upload gambar pada Framwork Nest JS
Pada tutorial kali ini Kita akan belajar mengupload gambar pada Framwork Nest JS dan menseting supaya file bisa di akses menggunakan HTTP
NestJS Prisma Multi Connections
Prisma adalah Modern ORM yang memungkinakan kita membuat koneksi dan Query ke database menjadi lebih mudah dan lebih sederhana di bandingkan kalau kita tanpa menggunakan ORM.
Membuat Multi Thread atau Cluster mode pada nest JS (10x lebih cepat)
Node JS / Nest JS memiliki cara kerja Single Thread yang artinya hanya bisa menjalankan tugas satu persatu sehingga pada saat ada banyak tugas yang sedang di kerjakan harus bergantian beda dengan Multi Thread yang bisa menjalankan tugas secara bersamaan.
Membuat CRUD Rest API dengan Database MySQL Nest JS
Pada tutorial kali ini Kita akan belajar membuat CRUD Rest API dengan Database MySQL Nest JS supaya kita lebih memahami alur dari framework Nest JS
Konsep penting yang wajib di ketahui di dalam Framework NestJS
Pada tutorial kali ini Kita akan memahami Konsep penting yang wajib di ketahui di dalam Framework NestJS
Berkenalan dengan NestJS dan cara install NestJS
Pada tutorial kali ini kita akan berkenalan dengan NestJS, memahami cara kerja NestJS dan cara menginstall NestJS
Tags