Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- OIDC
- nGinder
- fake jwt
- intellij
- 오블완
- 개발 어렵당.ㅠ
- 월급루팡 일지
- 노드간 통신
- formik
- 티스토리챌린지
- 7879
- pinpoint
- pinpoint 2.5.3
- 핀포인트
- hbase 저장공간 설정
- Armeria
- ㅉ때
- jsonMarshaller
- Loki 로그
- Ingress Controller Fake
- UnsupportedOperationException
- 논블록킹 성능
- RedirectService
- reids
- 애자일 싫타
- LPOS
- jar 배포
- 플루터
- save/update
- R2DBC Paging
Archives
- Today
- Total
대머리개발자
이벤트 서버의 성능 테스트 시작(5) 본문
728x90
마지막 여정을 향해 달려가고 있다.
보이지 않던 끝자락이 희미하게 보이기 시작한다.
내가 몇 번째 순서인지에 대한 체크를 setinterval을 통해 체크 할 수 있지만 서버에 부담이 될 수 있기때문에 좀 더 나은 방법이 있는지 확인
양방향 통신으로는 gRpc가 가장 먼저 생각이 났지만.. 브라우저에서 http2.0을 지원하지 않으니 Pass
소켓 통신을 적용하는 것이 바람직한 모양세지만 Streaming 방식으로 채택하기로 했다.
여러가지 이유가 있겠지만
1. 소켓 통신을 적용하고 테스트하고 하는데 시간적 여유가 없다.
2. 반대로 이미 서버는 webFlux 형태로 되어 있어서 Streaming 쉽게 적용 가능하다.
3. N:N 통신의 형태가 아니라 거의 1:N 통신이기에 맞는 조건인 것 같다.
아르메리아 프레임워크에서 기본적인 requestTimeout은 10초인듯 하다. 10초 하다가 끊긴다. ㅎㅎ 30초 설정으로 변경
serverBuilder.requestTimeout(Duration.ofSeconds(30))
서버에서 무한정으로 response 주기도 부담스러우니 적절하게 셋팅을 한다.
** 서버 사이드
아르메리아 프레임워크에서는 @ProducesEventStream 설정만 하면 끝이다.
별도로 delay를 1초를 주고 랭킹(대기열)값을 리턴한다.
@ProducesEventStream
@Get("/{eventId}/rank")
fun streamRank(ctx: ServiceRequestContext): Flux<Int> {
val stream = Stream.iterate(0) { i: Int -> i + 1 }
val userId = RequestContext.getUserId()
return Flux
.fromStream(stream)
.delayElements(Duration.ofMillis(1000))
.flatMap{
participantService.rankJoin(ctx.pathParam("eventId")!!.toLong(), userId)
}
}
** 프론트 사이드
1초당 한번씩 호출하는 것을 30초에 한번씩 호출하면.. 조금 나겠쥬!
728x90
'개발이야기 > 오픈소스 설치' 카테고리의 다른 글
NKS - Pinpoint - 다시 (1) | 2024.01.09 |
---|---|
NKS - Pinpoint (0) | 2024.01.09 |
nGinder 스크립트 개발환경 구축 (2) | 2023.11.20 |
이벤트 서버의 성능 테스트를 위한 nGinder 설치 (0) | 2023.11.18 |
k8s - 그라파나 (0) | 2023.11.10 |