게시글
질문&답변
RunInit() 관련 질문
카프카는 서버와 서버 사이에 존재하는 브로커 아닌가요?
- 0
- 5
- 107
질문&답변
RunInit() 관련 질문
코드가 좀 지저분하게 올라가네요 ㅠㅠ
- 0
- 5
- 107
질문&답변
RunInit() 관련 질문
빠른 답변해주셔서 정말 감사합니다. 제 질문은 유저의 메시지를 받아서 c.Room.Forward 부분 처럼, Foward채널에 송신하고 RunInit() 고루틴에서 처리하도록 하는 부분이 체계적이고 유지보수성이 높아지는 장점이 있는 반면에, 수천, 수만명의 커넥션으로 발생한 고루틴들이 메시지 채널에 동시 다발적으로 데이터를 송신할 경우 이 메시지 채널을 수신하는 단 하나의 RunInit()고루틴이 감당 가능한가에 대한 질문이었습니다. 물론 소규모 서비스에서는 동시 요청 수가 적어서 괜찮겠지만, 스트레스 테스트를 진행한다면, 분명 저부분이 병목 포인트일 거라 생각했습니다. 이러한 구조를 사용하는 것을 강사님 소스코드 포함해서 여러번 봤기 때문에, 왜 굳이 Read()에서 각 요청을 담당하는 고루틴이 직접 처리하면되지 c.Room.Forward func (c client) Read() { // 클라이언트가 들어오는 메시지를 읽는 함수 defer c.Socket.Close() for { var msg message err := c.Socket.ReadJSON(&msg) if err != nil { if !websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway) { break } else { panic(err) } } else { log.Println("READ : ", msg, "client", c.Name) log.Println() msg.Time = time.Now().Unix() msg.Name = c.Name c.Room.Forward func (r *Room) RunInit() { // Room에 있는 모든 체널값을을 받는 역할 for { select { case client :=
- 0
- 5
- 107