본문 바로가기
Dart/Dart Server

[추가학습] Dart 서버/ API Throttling 기법 / Throttling과 Rate Limiting의 차이점

by Maccrey Coding 2024. 9. 22.
728x90
반응형

 

Dart 서버에서 API Throttling 기법과 Rate Limiting의 차이점

오늘은 Dart 서버에서 API를 사용할 때 중요한 두 가지 개념인 ThrottlingRate Limiting에 대해 쉽게 설명해드릴게요.

초보자도 이해할 수 있도록 간단하게 이야기할 거예요.

Throttling과 Rate Limiting의 차이

  • Throttling: 이건 요청의 속도를 조절하는 방법이에요. 예를 들어, 초당 최대 5개의 요청만 허용하고, 그 이상은 잠시 기다리게 해요.
  • Rate Limiting: 이건 일정 시간 동안 허용되는 요청의 총량을 정하는 거예요. 예를 들어, 한 시간에 최대 100개의 요청만 허용해요.

간단히 말해서, Throttling은 속도를 조절하고, Rate Limiting은 총 요청 수를 제한해요.

Dart에서 Throttling 구현하기

이제 Dart에서 Throttling을 어떻게 구현할 수 있는지 살펴볼게요. 아래는 간단한 코드 예제입니다.

import 'dart:async';

class Throttler {
  final int maxRequests;
  int _currentRequests = 0;

  Throttler(this.maxRequests);

  Future<void> throttle(Function request) async {
    if (_currentRequests >= maxRequests) {
      await Future.delayed(Duration(seconds: 1)); // 1초 대기
    }
    _currentRequests++;
    request(); // 요청 실행
    _currentRequests--;
  }
}

// 사용 예
void main() async {
  final throttler = Throttler(5); // 최대 5개의 요청

  for (int i = 0; i < 10; i++) {
    await throttler.throttle(() {
      print('Request $i executed');
    });
  }
}

코드 설명

  1. Throttler 클래스: 이 클래스는 최대 요청 수를 설정해요.
  2. throttle 메서드: 요청 수가 최대를 초과하면 1초 대기 후 요청을 실행해요.
  3. 사용 예: main 함수에서 10개의 요청을 실행하는데, 최대 5개까지만 동시에 실행돼요.

마무리

Throttling과 Rate Limiting은 서버의 안정성을 높이고, 사용자에게 더 나은 경험을 제공합니다.

이제 이 두 가지 개념을 이해했으니, 실제 프로젝트에서 활용해보세요!

 

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

728x90
반응형