[C#] Polly Nuget 패키지 - Bulkhead Isolation, Rate-Limit

참조


Bulkhead 란

  • Bulkhead 정책은 리소스 소비를 제한할 수 있는 전략입니다.
  • Bulkhead는 다른 사람으로부터 봉인될 수 있는 응용프로그램의 한 섹션이며 단일 섹션의 실패가 전체 응용 프로그램 실패를 의미하지는 않습니다.
  • 우리의 맥락에서 Bulkhead 정책을 구축한다는 것은 하나의 호출 스트림 주위에 병렬 처리 제한을 추가하고 호출 스트림으로 인한 리소스 소비를 제한하며 호스트의 모든 리소스 소비를 방지하는 것을 의미합니다.

Bulkhead Syntax

  • Bulkhead Syntax 사용 방법은 다음과 같습니다.
BulkheadPolicy bulkhead = Policy
  .Bulkhead(int maxParallelization
           [, int maxQueuingActions]
           [, Action<Context> onBulkheadRejected]);

BulkheadPolicy bulkhead = Policy
  .BulkheadAsync(int maxParallelization
                [, int maxQueuingActions]
                [, Func<Context, Task> onBulkheadRejectedAsync]);
  • maxParallelization : 최대 병렬화 개수
  • maxQueuingActions : 언제든지 대기열에 있을 수 있는 최대 작업 수
  • onBulkheadRejected/Async : bulkhead 실행을 거부하는 경우 실행할 작업

Rate-Limit 란?

  • Rate-Limit 이란 속도 제한이라는 뜻을 가지고 있습니다.
  • Polly 에서 Rate-Limit 의 개념은 시간 단위에서 사용 가능한 서비스를 제한하는 기능으로 주로 사용됩니다.
  • Rate-Limit 사용 사례로는 웹 서버 또는 데이터베이스와 같은 공유 리소스의 공정한 사용을 보장하는 것입니다.
  • 웹 서버에 대한 요청에 대한 비율 제한이 서버의 각 사용자에게 할당되면 다른 사용자 간에 리소스를 공정하게 공유할 수 있습니다.

Rate-Limit Syntax

  • Rate-Limit Syntax 사용 방법은 다음과 같습니다.
RateLimitPolicy rateLimit = Policy
    .RateLimit(20, TimeSpan.FromSeconds(1));

RateLimitPolicy<MyResult> rateLimitOfT = Policy
    .RateLimit<MyResult>(20, TimeSpan.FromSeconds(1));
  • 위의 예제는 1초에 최대 20개의 작업을 실행하는 정책을 의미합니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY