inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Thực chiến thiết kế hệ thống dành cho junior trong thời đại AI: Bù đắp kinh nghiệm thay bạn

Thanh toán bất đồng bộ Kafka và khôi phục tồn kho bằng TTL: Xử lý tồn kho ma quái

안녕하세요 질문있습니다.!

Đã giải quyết

79

dlsghsladl5436

8 câu hỏi đã được viết

0

강의 잘 듣고 있습니다 강사님!

큐를 읽는 컨슈머가 DB가 감당할 수 있는 속도 이거이대해서 질문이 있는데요?

1. 수치를 구하기 위해 K6를 활용하여 어떻게 측정해야할지 궁금합니다!!

kotlin spring-boot kubernetes 아키텍처 kafka redis prometheus

Câu trả lời 2

0

newnormal

  • 노트북의 H2나 로컬 MySQL로 잰 값은 참고용입니다. 실제 Mysql의 경우 저장되어 있는 레코드 수에 따라서도 편차가 있습니다.

  • k6로 테스트할 API를 높은 속도로 때리면서 Kafka consumer lag을 봅니다. lag이 계속 늘면 컨슈머가 못 따라가는 것이고, lag이 일정하게 유지되는 최대 발급 속도가 시스템 전체의 처리량입니다.

0

newnormal

안녕하세요!! 답변 드립니다.

1. 재는 대상은 컨슈머가 아니라 "DB 쓰기 경로"입니다

k6는 HTTP를 두드리는 도구라 Kafka 컨슈머를 직접 재지 못합니다. 대신 컨슈머가 DB에 하는 일(주문 INSERT + 재고 UPDATE, 같은 트랜잭션)을 그대로 실행하는 테스트용 엔드포인트를 하나 만들고, 그걸 k6로 두드립니다. 그러면 "이 DB가 이 쓰기를 초당 몇 건까지 받아주는가"가 나오고, 그 숫자가 컨슈머 쓰로틀의 상한입니다.

2. VU 고정이 아니라 "초당 요청 수를 계단식으로 올리는" 실행기를 씁니다

constant-vus는 응답이 느려지면 요청 속도도 같이 느려져서 한계가 안 보입니다. ramping-arrival-rate로 50 → 100 → 200 → 400 → 800 req/s 계단을 올리면서 어느 계단에서 꺾이는지 봅니다.

import http from 'k6/http';

export const options = {
  scenarios: {
    find_knee: {
      executor: 'ramping-arrival-rate',
      startRate: 50, timeUnit: '1s',
      preAllocatedVUs: 50, maxVUs: 500,
      stages: [
        { target: 50,  duration: '1m' },
        { target: 100, duration: '1m' },
        { target: 200, duration: '1m' },
        { target: 400, duration: '1m' },
        { target: 800, duration: '1m' },
      ],
    },
  },
  thresholds: { http_req_duration: ['p(95)<200'], http_req_failed: ['rate<0.01'] },
};

export default function () {
  http.post('http://localhost:8080/test/settle',
    JSON.stringify({ orderId: `${__VU}-${__ITER}`, qty: 1 }),
    { headers: { 'Content-Type': 'application/json' } });
}

강의 관련 질문드립니다.

1

17

2

Redis 비동기 I/O 멀티플렉싱이 아니라 논블로킹 I/O 멀티플렉싱이 아닌가요?

0

9

0

ubuntu 18.04 다운로드 링크 삭제

0

16

2

Jib 빌드가 83%에서 멈추는 문제 해결(windows 사용자)

1

19

1

운영환경에서의 secret 관리

0

19

2

7강 설치 질문

0

19

2

jenkins 노드 구성 실습 오류 수정

1

28

1

상세 설정까지 이해하시는 비결이 궁금합니다

1

43

2

claude api 크레딧

0

35

0

ClusterIP 실습 시 Connection refused

0

35

2

서비스에서와 컨트롤러의 @Vaild 적용 차이에 대해서

0

36

2

Apple Silicon에서 CI 빌드 이미지가 재시작을 반복할 때 (jib platforms 수정)

1

45

1

제공된 스크립트를 어디서 받을 수 있나요?

0

34

1

해결했습니다

0

36

1

copilot-instruction.md

0

29

2

미션 제출 방식 건의

0

35

0

강의 슬라이드 자료

1

44

2

트랜잭션 내 Redis I/O 에 대한 궁금한점

1

33

1

Deployment 업데이트-2 해결 방식 문의

1

39

1

미션 진행 방식에 대한 질문입니다.

0

51

1

지금 강의가 어려우신분 추천드립니다.

0

52

1

파킹 페이지와 대기열 큐 질문입니다.

0

47

1

구현 방법에 대한 문의

0

81

2

MSA 통신방식에 대해서 질문 있습니다.

0

55

1