[C#] Polly Nuget 패키지 - Bulkhead Isolation, Rate-Limit
- C#
- 2022. 4. 20. 20:48
참조
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
'C#' 카테고리의 다른 글
[C#] ASP.NET Core FluentValidation.AspNetCore .NET 사용법 (0) | 2022.04.21 |
---|---|
[C#] Fluent Validation 이란? (0) | 2022.04.21 |
[C#] Polly Nuget 패키지 - PolicyWrap (0) | 2022.04.20 |
[C#] Polly Nuget 패키지 - Timeout (0) | 2022.04.19 |
[C#] Polly Nuget 패키지 - Fallback (0) | 2022.04.19 |
이 글을 공유하기