Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] feat#333 배치기능 모듈화 #338

Merged
merged 3 commits into from
Dec 25, 2024

Conversation

DongHoonYu96
Copy link
Collaborator

@DongHoonYu96 DongHoonYu96 commented Dec 23, 2024

➕ 이슈 번호


🔎 작업 내용

이 PR은 게임 이벤트를 더 효율적으로 처리하기 위한 새로운 배치 처리 시스템을 도입합니다. 변경사항에는 배치 프로세서의 생성과 이를 플레이어 위치 업데이트 및 채팅 메시지 처리에 통합하는 내용이 포함되어 있습니다.

좀 더 자세히 설명하면:
배치 처리 시스템 도입으로 실시간 이벤트 처리의 효율성 향상
플레이어 위치 업데이트와 채팅 메시지를 배치로 처리하도록 개선
서버 부하 감소 및 성능 최적화 달성

이것은 게임의 실시간 처리 성능을 향상시키기 위한 주요 개선사항입니다.

Batch Processing System:

변경사항을 크게 3부분으로 나누어 설명드리겠습니다:

  1. BatchProcessor 생성
  • BE/src/game/service/BatchProcessor.ts 파일에 새로운 createBatchProcessor 함수를 추가했습니다.
  • 이 함수는 다양한 게임 이벤트에 대한 배치 처리기를 생성하고 관리합니다.
  • 데이터 추가(pushData), 배치 처리(processBatch), 자동 처리 시작(startProcessing), 데이터 초기화(clear) 등의 메서드를 포함합니다.
  1. 플레이어 위치 업데이트 통합
  • BE/src/game/redis/subscribers/player.subscriber.ts 파일에서 기존의 위치 업데이트 처리 방식을 새로운 배치 처리기로 교체했습니다.
  • 위치 업데이트를 위한 배치 처리기를 생성하고, 100ms 간격으로 처리를 시작하도록 설정했습니다.
  • 위치 데이터를 배치 처리기에 push하는 방식으로 변경되었습니다.
  1. 채팅 메시지 통합
  • BE/src/game/service/game.chat.service.ts 파일에 배치 처리기를 통합했습니다.
  • 채팅 메시지를 위한 새로운 배치 처리기를 생성하고, 50ms 간격으로 처리하도록 설정했습니다.
  • 채팅 데이터를 배치 처리하는 방식으로 변경되었습니다.

이러한 변경은 성능 최적화를 위해 실시간 이벤트들을 배치로 처리하도록 개선한 것입니다. 특히 채팅의 경우 더 빠른 응답이 필요하므로 50ms로, 위치 업데이트는 100ms 간격으로 설정되어 있습니다.


사용방법

  • 배치를 원하는 서비스에 필드선언
    image
  • 초기화 (server instance 생성후)
    image
  • emit을 직접 브로드캐스팅 하는 대신, 배치 프로세서 사용
    image

🖼 참고 이미지

  • 채팅 포스트맨 test 성공
    image

🎯 리뷰 요구사항 (선택)

  • 특별히 봐줬으면 하는 부분이 있다면 적어주세요

✅ Check List

  • merge할 브랜치의 위치를 확인했나요?
  • Label을 지정했나요?

@DongHoonYu96 DongHoonYu96 self-assigned this Dec 23, 2024
@Copilot Copilot bot review requested due to automatic review settings December 23, 2024 14:47

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

Comments suppressed due to low confidence (1)

BE/src/game/redis/subscribers/player.subscriber.ts:28

  • [nitpick] The variable name 'positionUpdatesMetrics' is not very descriptive. Consider renaming it to 'positionUpdateMetrics'.
private positionUpdatesMetrics: Map<string, any> = new Map();
Copy link
Collaborator

@ijun17 ijun17 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@DongHoonYu96 DongHoonYu96 merged commit fd0d774 into boostcampwm-2024:dev-be Dec 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants