노상관
하긴 아키텍처 문제가 더 크겠지
정책적인문제나
디스코드 서버가 러스트인지는 모르겠고 예전에 거기 서버엔지니어가 devblog 올린거 읽었었는데 디스코드 서버 그 룸이라고하나? 거기가 원래 싱글스레드로 룸 하나씩처리하는데 사람이 모이면 모일수록 분산처리가 안되니까 무슨 방법으로 멀티스레드로 나눴다는건 기억하는데 글 찾으면 링크 달아줌
아 찾았다https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b
짧막하게 대충 요약하면 쟤네가 ring? 아마 circular buffer 말하는거같은데 저게 세션이 뒤지면 lookup하는데 30초나걸리던걸 ETS라는걸로 17.5초로줄이고 VM에서 같은함수에서 똑같은값 뱉는거 확인하면 read only shared heap에 값 cache해놓는 mochiglobal이란 모듈로 0.75초까지 줄였데 데이터 읽는건 저렇게최적화하고 멀티스레드에서 thread contention줄이는건 지네가 따로 erlang semaphore를 만들어서 최적화를했다는듯 자세한 디테일이 궁금하면 읽어보셈 좀 김
원래 Go로 서버 짰었는데 GC로 인해 주기적으로 퍼포먼스 이슈 생겨서 러스트로 바꾸고 해결됬다 라고 본것 같음 - dc App
해당 댓글은 삭제되었습니다.
디스코드 서버라그러면 걍 통틀어서 부르는거 아님? 이 글올린사람은 VoIP쪽 퍼포먼스만 물어본건가?
디스코드가 스트리밍 서비스도 있었음? 그건몰랐네
노상관
하긴 아키텍처 문제가 더 크겠지
정책적인문제나
디스코드 서버가 러스트인지는 모르겠고 예전에 거기 서버엔지니어가 devblog 올린거 읽었었는데 디스코드 서버 그 룸이라고하나? 거기가 원래 싱글스레드로 룸 하나씩처리하는데 사람이 모이면 모일수록 분산처리가 안되니까 무슨 방법으로 멀티스레드로 나눴다는건 기억하는데 글 찾으면 링크 달아줌
아 찾았다
https://blog.discordapp.com/scaling-elixir-f9b8e1e7c29b
짧막하게 대충 요약하면 쟤네가 ring? 아마 circular buffer 말하는거같은데 저게 세션이 뒤지면 lookup하는데 30초나걸리던걸 ETS라는걸로 17.5초로줄이고 VM에서 같은함수에서 똑같은값 뱉는거 확인하면 read only shared heap에 값 cache해놓는 mochiglobal이란 모듈로 0.75초까지 줄였데 데이터 읽는건 저렇게최적화하고 멀티스레드에서 thread contention줄이는건 지네가 따로 erlang semaphore를 만들어서 최적화를했다는듯 자세한 디테일이 궁금하면 읽어보셈 좀 김
원래 Go로 서버 짰었는데 GC로 인해 주기적으로 퍼포먼스 이슈 생겨서 러스트로 바꾸고 해결됬다 라고 본것 같음 - dc App
해당 댓글은 삭제되었습니다.
디스코드 서버라그러면 걍 통틀어서 부르는거 아님? 이 글올린사람은 VoIP쪽 퍼포먼스만 물어본건가?
디스코드가 스트리밍 서비스도 있었음? 그건몰랐네