퀴즈: 우선순위와 공정성
여러 FlowSchema 가 한 요청에 맞을 때 어느 것이 적용되나?
- matchingPrecedence 가 가장 큰 스키마가 적용된다
- matchingPrecedence 가 가장 작은 스키마가 적용된다
- 먼저 만들어진 스키마가 적용되고 나머지는 무시된다
- 가장 좁은 규칙을 가진 스키마가 자동으로 선택된다
PriorityLevelConfiguration 의 nominalConcurrencyShares 가 절대 좌석 수가 아니라 지분인 이유는?
- 좌석 수는 노드 수에 따라 달라져 미리 정할 수 없기 때문이다
- 지분이 정수라서 좌석 수보다 계산이 빠르기 때문이다
- 칸마다 요청 하나가 차지하는 좌석 수가 다르기 때문이다
- 서버의 총 동시 실행 수를 바꾸면 모든 칸이 같은 비율로 함께 움직이게 하려고
FlowSchema 의 distinguisherMethod 를 ByUser 로 두면 무엇이 달라지나?
- 그 스키마에 걸린 요청이 사용자별 흐름으로 나뉘어 서로 굶기지 못한다
- 그 스키마가 사용자 요청에만 적용되고 서비스 어카운트는 제외된다
- 사용자별로 별도의 우선순위 등급이 자동으로 만들어진다
- 요청마다 사용자 이름이 감사 로그에 추가로 기록된다
type 이 Exempt 인 우선순위 등급의 뜻은?
- 동시 실행 수가 가장 큰 등급이라 사실상 제한이 없다
- 대기열이 없고 넘치면 즉시 429 로 거절하는 등급이다
- 동시 실행 제한도 대기열도 없이 요청이 곧바로 처리된다
- 다른 등급이 놀고 있을 때만 좌석을 빌려 쓰는 등급이다
FlowSchema 의 status 에 Dangling 조건이 True 로 남아 있다면?
- 가리키는 우선순위 등급이 없어 그 스키마가 무시되고 있다
- 그 스키마의 대기열이 가득 차 요청을 받지 못하고 있다
- 같은 우선순위 값을 가진 스키마가 둘이라 충돌하고 있다
- 규칙에 맞는 요청이 아직 한 번도 오지 않았다는 뜻이다
새 Limited 우선순위 등급을 하나 더 만들면 기존 등급들의 좌석 수는?
- 그대로다 — 새 등급의 좌석은 별도로 추가 할당된다
- 같은 총량을 지분대로 다시 나누므로 기존 등급들이 조금씩 줄어든다
- 빌려주기 설정이 있는 등급만 줄고 나머지는 그대로다
- 서버를 다시 시작하기 전까지는 아무 변화가 없다