Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
namkikim0718 authored Dec 17, 2024
1 parent a5d4fe2 commit 1ca7d55
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,10 @@
- 기존 JpaItemWriter을 JdbcBatchItemWriter로 변경해 설정해둔 Chunk Size를 그대로 반영해 Batch Update가 되도록 수정해 성능을 개선

**결과**

<img width="742" alt="스크린샷 2024-12-17 15 33 20" src="https://github.com/user-attachments/assets/ef411e3b-e757-47df-8572-8102f83dc10d" />


</br>

#### 2️⃣ 알림 모듈 처리량 개선 - <ins>TPS 약 2배 향상</ins>

Expand Down Expand Up @@ -203,13 +204,7 @@
- 이 과정에서 대량의 문서를 정렬하고 집계하다보니 메모리를 초과해 에러가 발생하던 것
- 특히 페이징 처리시 전체 페이지와 전체 문서 개수 집계 과정에서 메모리가 초과됨
- allowDiskUse(true) 설정을 통해 디스크를 추가로 사용해 연산을 완료할 수 있도록 허용해 해결
#### 3️⃣ **배치 작업시 데이터가 약 3000개 정도부터 거의 반 정도가 누락이 되는 문제 발생**
- 100개씩 페이징해서 작업을 하는데 정렬 조건이 updatedAt을 기준으로 해서 데이터 수정 시 순서가 변경되며 누락되는 것 확인
- 변경되지 않는 필드인 ID 값을 기준으로 해봤지만 계속해서 누락이 발생
- 100개의 작업을 하나의 트랜잭션으로 묶이기 때문에 일부 데이터가 반영되지 않을 수 있음
- 오프셋 기반 페이징은 데이터 변경에 취약
- JpaCursorItemReader를 사용해 커서 기반 페이징을 통해 문제를 해결
#### 4️⃣ **배치 작업 시 Kafka와 Spring Batch의 트랜잭션 충돌 문제 발생**
#### 3️⃣ **배치 작업 시 Kafka와 Spring Batch의 트랜잭션 충돌 문제 발생**
- Payment 모듈의 배치작업과 Member 모듈의 배치작업을 순차적으로 진행해야 하는 상황
- Payment 모듈의 작업 완료 이벤트를 Kafka를 통해 받으면 Member 모듈이 작업을 시작
- 그러나 Kafka의 트랜잭션과 Spring Batch의 트랜잭션이 충돌하면서 배치작업이 실패
Expand Down

0 comments on commit 1ca7d55

Please sign in to comment.